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'"))
|
||||
{
|
||||
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 */
|
||||
|
||||
|
||||
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 */
|
||||
typedef enum {
|
||||
disconnected,
|
||||
|
@ -63,6 +81,7 @@ struct connection {
|
|||
conn_state_t state; /* State the connection currently is in */
|
||||
int failed_psw_attempts; /* # of failed attempts entering password(s) */
|
||||
time_t connected_since; /* Time when the connection was established */
|
||||
proxy_t proxy_type; /* Set during querying proxy credentials */
|
||||
|
||||
struct {
|
||||
SOCKET sk;
|
||||
|
@ -77,25 +96,6 @@ struct connection {
|
|||
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 */
|
||||
typedef struct {
|
||||
/* 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)
|
||||
{
|
||||
LPCSTR proxy_type;
|
||||
connection_t *c;
|
||||
char fmt[32];
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
|
@ -342,8 +344,14 @@ ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
case IDOK:
|
||||
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
||||
ManagementCommandFromInput(c, "username \"HTTP Proxy\" \"%s\"", hwndDlg, ID_EDT_PROXY_USER);
|
||||
ManagementCommandFromInput(c, "password \"HTTP Proxy\" \"%s\"", hwndDlg, ID_EDT_PROXY_PASS);
|
||||
proxy_type = (c->proxy_type == http ? "HTTP" : "SOCKS");
|
||||
|
||||
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));
|
||||
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;
|
||||
static LPCWSTR
|
||||
UrlSchemeStr(const url_scheme scheme)
|
||||
|
|
Loading…
Reference in New Issue