mirror of https://github.com/OpenVPN/openvpn-gui
support SOCKS 5 proxy auth notifications from mgmt
parent
e84834a08a
commit
3c81b7a4f2
|
@ -306,7 +306,11 @@ OnPassword(connection_t *c, char *msg)
|
||||||
}
|
}
|
||||||
else if (strstr(msg, "'HTTP Proxy'"))
|
else if (strstr(msg, "'HTTP Proxy'"))
|
||||||
{
|
{
|
||||||
LocalizedDialogBoxParam(ID_DLG_PROXY_AUTH, ProxyAuthDialogFunc, (LPARAM) c);
|
QueryProxyAuth(c, http);
|
||||||
|
}
|
||||||
|
else if (strstr(msg, "'SOCKS Proxy'"))
|
||||||
|
{
|
||||||
|
QueryProxyAuth(c, socks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
38
options.h
38
options.h
|
@ -41,6 +41,24 @@ typedef struct connection connection_t;
|
||||||
#define MAX_CONFIG_SUBDIRS 50 /* Max number of subdirs to scan for configs */
|
#define MAX_CONFIG_SUBDIRS 50 /* Max number of subdirs to scan for configs */
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
service_noaccess = -1,
|
||||||
|
service_disconnected = 0,
|
||||||
|
service_connecting = 1,
|
||||||
|
service_connected = 2
|
||||||
|
} service_state_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
config,
|
||||||
|
windows,
|
||||||
|
manual
|
||||||
|
} proxy_source_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
http,
|
||||||
|
socks
|
||||||
|
} proxy_t;
|
||||||
|
|
||||||
/* connection states */
|
/* connection states */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
disconnected,
|
disconnected,
|
||||||
|
@ -63,6 +81,7 @@ struct connection {
|
||||||
conn_state_t state; /* State the connection currently is in */
|
conn_state_t state; /* State the connection currently is in */
|
||||||
int failed_psw_attempts; /* # of failed attempts entering password(s) */
|
int failed_psw_attempts; /* # of failed attempts entering password(s) */
|
||||||
time_t connected_since; /* Time when the connection was established */
|
time_t connected_since; /* Time when the connection was established */
|
||||||
|
proxy_t proxy_type; /* Set during querying proxy credentials */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
SOCKET sk;
|
SOCKET sk;
|
||||||
|
@ -77,25 +96,6 @@ struct connection {
|
||||||
HWND hwndStatus;
|
HWND hwndStatus;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
service_noaccess = -1,
|
|
||||||
service_disconnected = 0,
|
|
||||||
service_connecting = 1,
|
|
||||||
service_connected = 2
|
|
||||||
} service_state_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
config,
|
|
||||||
windows,
|
|
||||||
manual
|
|
||||||
} proxy_source_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
http,
|
|
||||||
socks
|
|
||||||
} proxy_t;
|
|
||||||
|
|
||||||
/* All options used within OpenVPN GUI */
|
/* All options used within OpenVPN GUI */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* Array of configs to autostart */
|
/* Array of configs to autostart */
|
||||||
|
|
22
proxy.c
22
proxy.c
|
@ -324,10 +324,12 @@ GetProxyRegistrySettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
static INT_PTR CALLBACK
|
||||||
ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
LPCSTR proxy_type;
|
||||||
connection_t *c;
|
connection_t *c;
|
||||||
|
char fmt[32];
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
|
@ -342,8 +344,14 @@ ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
case IDOK:
|
case IDOK:
|
||||||
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
||||||
ManagementCommandFromInput(c, "username \"HTTP Proxy\" \"%s\"", hwndDlg, ID_EDT_PROXY_USER);
|
proxy_type = (c->proxy_type == http ? "HTTP" : "SOCKS");
|
||||||
ManagementCommandFromInput(c, "password \"HTTP Proxy\" \"%s\"", hwndDlg, ID_EDT_PROXY_PASS);
|
|
||||||
|
snprintf(fmt, sizeof(fmt), "username \"%s Proxy\" \"%%s\"", proxy_type);
|
||||||
|
ManagementCommandFromInput(c, fmt, hwndDlg, ID_EDT_PROXY_USER);
|
||||||
|
|
||||||
|
snprintf(fmt, sizeof(fmt), "password \"%s Proxy\" \"%%s\"", proxy_type);
|
||||||
|
ManagementCommandFromInput(c, fmt, hwndDlg, ID_EDT_PROXY_PASS);
|
||||||
|
|
||||||
EndDialog(hwndDlg, LOWORD(wParam));
|
EndDialog(hwndDlg, LOWORD(wParam));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -361,6 +369,14 @@ ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
QueryProxyAuth(connection_t *c, proxy_t type)
|
||||||
|
{
|
||||||
|
c->proxy_type = type;
|
||||||
|
LocalizedDialogBoxParam(ID_DLG_PROXY_AUTH, ProxyAuthDialogFunc, (LPARAM) c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef enum { HTTPS_URL, SOCKS_URL } url_scheme;
|
typedef enum { HTTPS_URL, SOCKS_URL } url_scheme;
|
||||||
static LPCWSTR
|
static LPCWSTR
|
||||||
UrlSchemeStr(const url_scheme scheme)
|
UrlSchemeStr(const url_scheme scheme)
|
||||||
|
|
2
proxy.h
2
proxy.h
|
@ -23,7 +23,7 @@
|
||||||
#define PROXY_H
|
#define PROXY_H
|
||||||
|
|
||||||
INT_PTR CALLBACK ProxySettingsDialogFunc(HWND, UINT, WPARAM, LPARAM);
|
INT_PTR CALLBACK ProxySettingsDialogFunc(HWND, UINT, WPARAM, LPARAM);
|
||||||
INT_PTR CALLBACK ProxyAuthDialogFunc(HWND, UINT, WPARAM, LPARAM);
|
void QueryProxyAuth(connection_t *, proxy_t);
|
||||||
|
|
||||||
void OnProxy(connection_t *, char *);
|
void OnProxy(connection_t *, char *);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue