OpenVPN
proxy.h
Go to the documentation of this file.
1/*
2 * OpenVPN -- An application to securely tunnel IP networks
3 * over a single TCP/UDP port, with support for SSL/TLS-based
4 * session authentication and key exchange,
5 * packet encryption, packet authentication, and
6 * packet compression.
7 *
8 * Copyright (C) 2002-2025 OpenVPN Inc <sales@openvpn.net>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2
12 * as published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef PROXY_H
24#define PROXY_H
25
26#include "buffer.h"
27#include "misc.h"
28
29/* HTTP CONNECT authentication methods */
30#define HTTP_AUTH_NONE 0
31#define HTTP_AUTH_BASIC 1
32#define HTTP_AUTH_DIGEST 2
33/* #define HTTP_AUTH_NTLM 3 removed in OpenVPN 2.7 */
34#define HTTP_AUTH_NTLM2 4
35#define HTTP_AUTH_N 5 /* number of HTTP_AUTH methods */
36
38{
39 const char *name;
40 const char *content;
41};
42
43#define MAX_CUSTOM_HTTP_HEADER 10
45{
46 const char *server;
47 const char *port;
48
49#define PAR_NO 0 /* don't support any auth retries */
50#define PAR_ALL 1 /* allow all proxy auth protocols */
51#define PAR_NCT 2 /* disable cleartext proxy auth protocols */
53
54 const char *auth_method_string;
55 const char *auth_file;
56 const char *auth_file_up; /* specified with --http-proxy-user-pass */
57 const char *http_version;
58 const char *user_agent;
60 bool inline_creds; /* auth_file_up is inline credentials */
61 bool first_time; /* indicates if we need to wipe user creds at the first iteration of the main
62 loop */
63 bool nocache;
64};
65
75
77 struct gc_arena *gc);
78
80
81void http_proxy_close(struct http_proxy_info *hp);
82
84 socket_descriptor_t sd, /* already open to proxy */
85 const char *host, /* openvpn server remote */
86 const char *port, /* openvpn server port */
87 struct event_timeout *server_poll_timeout,
88 struct buffer *lookahead, struct signal_info *sig_info);
89
90uint8_t *make_base64_string2(const uint8_t *str, int str_len, struct gc_arena *gc);
91
92uint8_t *make_base64_string(const uint8_t *str, struct gc_arena *gc);
93
94#endif /* PROXY_H */
#define MAX_CUSTOM_HTTP_HEADER
Definition proxy.h:43
void http_proxy_close(struct http_proxy_info *hp)
Definition proxy.c:553
uint8_t * make_base64_string2(const uint8_t *str, int str_len, struct gc_arena *gc)
Definition proxy.c:219
struct http_proxy_info * http_proxy_new(const struct http_proxy_options *o)
Definition proxy.c:488
struct http_proxy_options * init_http_proxy_options_once(struct http_proxy_options **hpo, struct gc_arena *gc)
Definition proxy.c:45
bool establish_http_proxy_passthru(struct http_proxy_info *p, socket_descriptor_t sd, const char *host, const char *port, struct event_timeout *server_poll_timeout, struct buffer *lookahead, struct signal_info *sig_info)
Definition proxy.c:625
uint8_t * make_base64_string(const uint8_t *str, struct gc_arena *gc)
Definition proxy.c:230
Wrapper structure for dynamically allocated memory.
Definition buffer.h:60
Garbage collection arena used to keep track of dynamically allocated memory.
Definition buffer.h:116
const char * name
Definition proxy.h:39
const char * content
Definition proxy.h:40
struct user_pass up
Definition proxy.h:71
bool defined
Definition proxy.h:68
int auth_method
Definition proxy.h:69
bool queried_creds
Definition proxy.h:73
char * proxy_authenticate
Definition proxy.h:72
const char * auth_file
Definition proxy.h:55
const char * http_version
Definition proxy.h:57
const char * port
Definition proxy.h:47
bool inline_creds
Definition proxy.h:60
const char * user_agent
Definition proxy.h:58
const char * auth_method_string
Definition proxy.h:54
struct http_custom_header custom_headers[MAX_CUSTOM_HTTP_HEADER]
Definition proxy.h:59
const char * auth_file_up
Definition proxy.h:56
const char * server
Definition proxy.h:46
SOCKET socket_descriptor_t
Definition syshead.h:440
struct gc_arena gc
Definition test_ssl.c:154