mirror of https://github.com/OpenVPN/openvpn-gui
let openvpn determine the Windows proxy settings
parent
d46789bc27
commit
8249067076
|
@ -115,7 +115,7 @@ BEGIN
|
||||||
GROUPBOX " ", 201, 6, 46, 235, 52
|
GROUPBOX " ", 201, 6, 46, 235, 52
|
||||||
AUTORADIOBUTTON "OpenVPN Konfigurationsdatei verwenden", ID_RB_PROXY_OPENVPN, \
|
AUTORADIOBUTTON "OpenVPN Konfigurationsdatei verwenden", ID_RB_PROXY_OPENVPN, \
|
||||||
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
||||||
AUTORADIOBUTTON "Internet Explorer Einstellungen verwenden", \
|
AUTORADIOBUTTON "System Proxy-Einstellungen verwenden", \
|
||||||
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
||||||
AUTORADIOBUTTON "Manuelle Konfiguration", ID_RB_PROXY_MANUAL, 13, 46, 85, 10
|
AUTORADIOBUTTON "Manuelle Konfiguration", ID_RB_PROXY_MANUAL, 13, 46, 85, 10
|
||||||
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
||||||
|
|
|
@ -114,7 +114,7 @@ BEGIN
|
||||||
GROUPBOX " ", 201, 6, 46, 235, 52
|
GROUPBOX " ", 201, 6, 46, 235, 52
|
||||||
AUTORADIOBUTTON "Use OpenVPN Config-file Settings", ID_RB_PROXY_OPENVPN, \
|
AUTORADIOBUTTON "Use OpenVPN Config-file Settings", ID_RB_PROXY_OPENVPN, \
|
||||||
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
||||||
AUTORADIOBUTTON "Use Internet Explorer Settings", \
|
AUTORADIOBUTTON "Use System Proxy Settings", \
|
||||||
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
||||||
AUTORADIOBUTTON "Manual Configuration", ID_RB_PROXY_MANUAL, 13, 46, 79, 10
|
AUTORADIOBUTTON "Manual Configuration", ID_RB_PROXY_MANUAL, 13, 46, 79, 10
|
||||||
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
||||||
|
|
|
@ -115,7 +115,7 @@ BEGIN
|
||||||
GROUPBOX " ", 201, 6, 46, 235, 52
|
GROUPBOX " ", 201, 6, 46, 235, 52
|
||||||
AUTORADIOBUTTON "Käytä asetustiedoston asetuksia", ID_RB_PROXY_OPENVPN, \
|
AUTORADIOBUTTON "Käytä asetustiedoston asetuksia", ID_RB_PROXY_OPENVPN, \
|
||||||
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
||||||
AUTORADIOBUTTON "Käytä Internet Explorerin asetuksia", \
|
AUTORADIOBUTTON "Käytä järjestelmän välipalvelinasetuksia", \
|
||||||
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
||||||
AUTORADIOBUTTON "Määritä asetukset itse", ID_RB_PROXY_MANUAL, 13, 46, 84, 10
|
AUTORADIOBUTTON "Määritä asetukset itse", ID_RB_PROXY_MANUAL, 13, 46, 84, 10
|
||||||
AUTORADIOBUTTON "HTTP-välipalvelin", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
AUTORADIOBUTTON "HTTP-välipalvelin", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
||||||
|
|
|
@ -112,7 +112,7 @@ BEGIN
|
||||||
GROUPBOX " ", 201, 6, 46, 235, 52
|
GROUPBOX " ", 201, 6, 46, 235, 52
|
||||||
AUTORADIOBUTTON "Gebruik OpenVPN instellingen", ID_RB_PROXY_OPENVPN, \
|
AUTORADIOBUTTON "Gebruik OpenVPN instellingen", ID_RB_PROXY_OPENVPN, \
|
||||||
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
13, 16, 200, 10, WS_GROUP | WS_TABSTOP
|
||||||
AUTORADIOBUTTON "Gebruik Internet Explorer Instellingen", \
|
AUTORADIOBUTTON "Gebruik Proxy Systeem Instellingen", \
|
||||||
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
ID_RB_PROXY_MSIE, 13, 31, 200, 10
|
||||||
AUTORADIOBUTTON "Handmatige Configuratie", ID_RB_PROXY_MANUAL, 13, 46, 90, 10
|
AUTORADIOBUTTON "Handmatige Configuratie", ID_RB_PROXY_MANUAL, 13, 46, 90, 10
|
||||||
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
AUTORADIOBUTTON "HTTP Proxy", ID_RB_PROXY_HTTP, 20, 62, 90, 10, WS_GROUP | WS_TABSTOP
|
||||||
|
|
|
@ -87,7 +87,7 @@ typedef enum {
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
config,
|
config,
|
||||||
browser,
|
system,
|
||||||
manual
|
manual
|
||||||
} proxy_source_t;
|
} proxy_source_t;
|
||||||
|
|
||||||
|
|
91
proxy.c
91
proxy.c
|
@ -201,7 +201,7 @@ LoadProxySettings(HWND hwndDlg)
|
||||||
{
|
{
|
||||||
SendMessage(GetDlgItem(hwndDlg, ID_RB_PROXY_OPENVPN), BM_CLICK, 0, 0);
|
SendMessage(GetDlgItem(hwndDlg, ID_RB_PROXY_OPENVPN), BM_CLICK, 0, 0);
|
||||||
}
|
}
|
||||||
else if (o.proxy_source == browser)
|
else if (o.proxy_source == system)
|
||||||
{
|
{
|
||||||
SendMessage(GetDlgItem(hwndDlg, ID_RB_PROXY_MSIE), BM_CLICK, 0, 0);
|
SendMessage(GetDlgItem(hwndDlg, ID_RB_PROXY_MSIE), BM_CLICK, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ SaveProxySettings(HWND hwndDlg)
|
||||||
}
|
}
|
||||||
else if (IsDlgButtonChecked(hwndDlg, ID_RB_PROXY_MSIE) == BST_CHECKED)
|
else if (IsDlgButtonChecked(hwndDlg, ID_RB_PROXY_MSIE) == BST_CHECKED)
|
||||||
{
|
{
|
||||||
o.proxy_source = browser;
|
o.proxy_source = system;
|
||||||
proxy_source_string[0] = _T('1');
|
proxy_source_string[0] = _T('1');
|
||||||
}
|
}
|
||||||
else if (IsDlgButtonChecked(hwndDlg, ID_RB_PROXY_MANUAL) == BST_CHECKED)
|
else if (IsDlgButtonChecked(hwndDlg, ID_RB_PROXY_MANUAL) == BST_CHECKED)
|
||||||
|
@ -307,7 +307,7 @@ GetProxyRegistrySettings()
|
||||||
}
|
}
|
||||||
else if (proxy_source_string[0] == _T('1'))
|
else if (proxy_source_string[0] == _T('1'))
|
||||||
{
|
{
|
||||||
o.proxy_source = browser;
|
o.proxy_source = system;
|
||||||
}
|
}
|
||||||
else if (proxy_source_string[0] == _T('2'))
|
else if (proxy_source_string[0] == _T('2'))
|
||||||
{
|
{
|
||||||
|
@ -378,77 +378,6 @@ ProxyAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* GetIeHttpProxy() fetches the current IE proxy settings for HTTP.
|
|
||||||
* Coded by Ewan Bhamrah Harley <code@ewan.info>, but refactored.
|
|
||||||
*
|
|
||||||
* If result string does not contain an '=' sign then there is a
|
|
||||||
* single proxy for all protocols. If multiple proxies are defined
|
|
||||||
* they are space seperated and have the form protocol=host[:port]
|
|
||||||
*/
|
|
||||||
static BOOL
|
|
||||||
GetIeHttpProxy(TCHAR *host, size_t *hostlen, TCHAR *port, size_t *portlen)
|
|
||||||
{
|
|
||||||
INTERNET_PROXY_INFO pinfo;
|
|
||||||
DWORD psize = sizeof(pinfo);
|
|
||||||
const TCHAR *start, *colon, *space, *end;
|
|
||||||
const size_t _hostlen = *hostlen;
|
|
||||||
const size_t _portlen = *portlen;
|
|
||||||
|
|
||||||
*hostlen = 0;
|
|
||||||
*portlen = 0;
|
|
||||||
|
|
||||||
if (!InternetQueryOption(NULL, INTERNET_OPTION_PROXY, (LPVOID) &pinfo, &psize))
|
|
||||||
{
|
|
||||||
ShowLocalizedMsg(IDS_ERR_GET_MSIE_PROXY);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if a proxy is used */
|
|
||||||
if (pinfo.dwAccessType != INTERNET_OPEN_TYPE_PROXY)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
/* Check if a HTTP proxy is defined */
|
|
||||||
start = _tcsstr(pinfo.lpszProxy, _T("http="));
|
|
||||||
if (start == NULL && _tcschr(pinfo.lpszProxy, _T('=')))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
/* Get the pointers needed for string extraction */
|
|
||||||
start = (start ? start + 5 : pinfo.lpszProxy);
|
|
||||||
colon = _tcschr(start, _T(':'));
|
|
||||||
space = _tcschr(start, _T(' '));
|
|
||||||
|
|
||||||
/* Extract hostname */
|
|
||||||
end = (colon ? colon : space);
|
|
||||||
if (end)
|
|
||||||
*hostlen = end - start;
|
|
||||||
else
|
|
||||||
*hostlen = _tcslen(start);
|
|
||||||
|
|
||||||
if (_hostlen < *hostlen)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
_tcsncpy(host, start, *hostlen);
|
|
||||||
|
|
||||||
if (!colon)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
start = colon + 1;
|
|
||||||
end = space;
|
|
||||||
if (end)
|
|
||||||
*portlen = end - start;
|
|
||||||
else
|
|
||||||
*portlen = _tcslen(start);
|
|
||||||
|
|
||||||
if (_portlen < *portlen)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
_tcsncpy(port, start, *portlen);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Construct the proxy options to append to the cmd-line.
|
* Construct the proxy options to append to the cmd-line.
|
||||||
*/
|
*/
|
||||||
|
@ -467,18 +396,8 @@ void ConstructProxyCmdLine(TCHAR *proxy_string, unsigned int size)
|
||||||
o.proxy_socks_address, o.proxy_socks_port);
|
o.proxy_socks_address, o.proxy_socks_port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (o.proxy_source == browser)
|
else if (o.proxy_source == system)
|
||||||
{
|
{
|
||||||
TCHAR host[64];
|
__sntprintf_0(proxy_string, size, _T(" --auto-proxy"));
|
||||||
TCHAR port[6];
|
|
||||||
size_t hostlen = _tsizeof(host);
|
|
||||||
|
|
||||||
size_t portlen = _tsizeof(port);
|
|
||||||
|
|
||||||
if (GetIeHttpProxy(host, &hostlen, port, &portlen) && hostlen != 0)
|
|
||||||
{
|
|
||||||
__sntprintf_0(proxy_string, size, _T(" --http-proxy %s %s auto"),
|
|
||||||
host, (portlen ? port : _T("8080")));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue