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-2018 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, write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22  */
23 
24 #ifndef PROXY_H
25 #define PROXY_H
26 
27 #include "buffer.h"
28 #include "misc.h"
29 
30 /* HTTP CONNECT authentication methods */
31 #define HTTP_AUTH_NONE 0
32 #define HTTP_AUTH_BASIC 1
33 #define HTTP_AUTH_DIGEST 2
34 #define HTTP_AUTH_NTLM 3
35 #define HTTP_AUTH_NTLM2 4
36 #define HTTP_AUTH_N 5 /* number of HTTP_AUTH methods */
37 
39  const char *name;
40  const char *content;
41 };
42 
43 #define MAX_CUSTOM_HTTP_HEADER 10
45  const char *server;
46  const char *port;
47 
48 #define PAR_NO 0 /* don't support any auth retries */
49 #define PAR_ALL 1 /* allow all proxy auth protocols */
50 #define PAR_NCT 2 /* disable cleartext proxy auth protocols */
52 
53  const char *auth_method_string;
54  const char *auth_file;
55  const char *http_version;
56  const char *user_agent;
59 };
60 
62  const char *server;
63  const char *port;
65 };
66 
68  bool defined;
71  struct user_pass up;
74 };
75 
77  struct gc_arena *gc);
78 
79 struct http_proxy_info *http_proxy_new(const struct http_proxy_options *o);
80 
81 void 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,
89  volatile int *signal_received);
90 
91 uint8_t *make_base64_string2(const uint8_t *str, int str_len, struct gc_arena *gc);
92 
93 uint8_t *make_base64_string(const uint8_t *str, struct gc_arena *gc);
94 
95 #endif /* PROXY_H */
const char * http_version
Definition: proxy.h:55
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, volatile int *signal_received)
Definition: proxy.c:634
bool defined
Definition: proxy.h:68
const char * content
Definition: proxy.h:40
int auth_method
Definition: proxy.h:69
const char * port
Definition: proxy.h:46
const char * auth_method_string
Definition: proxy.h:53
struct http_proxy_options * init_http_proxy_options_once(struct http_proxy_options **hpo, struct gc_arena *gc)
Definition: proxy.c:48
bool inline_creds
Definition: proxy.h:58
uint8_t * make_base64_string(const uint8_t *str, struct gc_arena *gc)
Definition: proxy.c:240
const char * server
Definition: proxy.h:45
bool queried_creds
Definition: proxy.h:73
#define MAX_CUSTOM_HTTP_HEADER
Definition: proxy.h:43
const char * server
Definition: proxy.h:62
const char * user_agent
Definition: proxy.h:56
unsigned __int8 uint8_t
Definition: config-msvc.h:123
char * proxy_authenticate
Definition: proxy.h:72
uint8_t * make_base64_string2(const uint8_t *str, int str_len, struct gc_arena *gc)
Definition: proxy.c:229
const char * name
Definition: proxy.h:39
SOCKET socket_descriptor_t
Definition: syshead.h:488
Definition: misc.h:62
void http_proxy_close(struct http_proxy_info *hp)
Definition: proxy.c:557
Wrapper structure for dynamically allocated memory.
Definition: buffer.h:60
struct http_proxy_info * http_proxy_new(const struct http_proxy_options *o)
Definition: proxy.c:496
Garbage collection arena used to keep track of dynamically allocated memory.
Definition: buffer.h:116
const char * auth_file
Definition: proxy.h:54
const char * port
Definition: proxy.h:63