mirror of https://github.com/OpenVPN/openvpn-gui
Merge remote-tracking branch 'lstipakov/ovpn3' into ovpn3
commit
65a944216e
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
git clone https://github.com/json-c/json-c.git
|
||||
cd json-c
|
||||
|
||||
mkdir build && cd build
|
||||
cmake -DBUILD_SHARED_LIBS=False -DDISABLE_WERROR=True -DCMAKE_INSTALL_PREFIX=/usr/local/i686-w64-mingw32 -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_SYSTEM_NAME="Windows" ..
|
||||
make V=1
|
||||
sudo make install
|
||||
|
||||
cd .. && rm -rf build
|
||||
|
||||
mkdir build && cd build
|
||||
cmake -DBUILD_SHARED_LIBS=False -DDISABLE_WERROR=True -DCMAKE_INSTALL_PREFIX=/usr/local/x86_64-w64-mingw32 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_SYSTEM_NAME="Windows" ..
|
||||
make V=1
|
||||
sudo make install
|
||||
|
||||
cd .. && rm -rf build
|
||||
|
||||
cd ..
|
|
@ -38,7 +38,7 @@ dist_doc_DATA = \
|
|||
COPYRIGHT.GPL \
|
||||
COPYING
|
||||
|
||||
AM_CPPFLAGS = $(OPENSSL_CRYPTO_CFLAGS) -D_UNICODE
|
||||
AM_CPPFLAGS = $(OPENSSL_CRYPTO_CFLAGS) -D_UNICODE $(JSON_CFLAGS)
|
||||
AM_CFLAGS = -municode
|
||||
|
||||
openvpn_gui_RESOURCES = \
|
||||
|
@ -110,7 +110,9 @@ openvpn_gui_LDADD = \
|
|||
-lole32 \
|
||||
-lshlwapi \
|
||||
-lsecur32 \
|
||||
-lwininet
|
||||
-lwininet \
|
||||
$(JSON_LIBS)
|
||||
|
||||
openvpn-gui-res.o: $(openvpn_gui_RESOURCES) $(srcdir)/openvpn-gui-res.h
|
||||
$(RCCOMPILE) -i $< -o $@
|
||||
|
||||
|
|
|
@ -49,6 +49,15 @@ AC_ARG_ENABLE(
|
|||
[enable_password_change="yes"]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(
|
||||
[ovpn3],
|
||||
[AS_HELP_STRING([--enable-ovpn3], [enable openvpn3 agent and client @<:@default=no@:>@])],
|
||||
[
|
||||
AC_DEFINE([ENABLE_OVPN3], 1, [Use openvpn3 agent instead of interactive service])
|
||||
PKG_CHECK_MODULES([JSON], [json-c])
|
||||
]
|
||||
)
|
||||
|
||||
case "$host" in
|
||||
*-mingw*)
|
||||
CPPFLAGS="${CPPFLAGS} -DWIN32_LEAN_AND_MEAN"
|
||||
|
|
7
manage.c
7
manage.c
|
@ -271,6 +271,13 @@ OnManagement(SOCKET sk, LPARAM lParam)
|
|||
{
|
||||
ManagementCommand(c, c->manage.password, NULL, regular);
|
||||
*c->manage.password = '\0';
|
||||
|
||||
if (o.ovpn_engine == OPENVPN_ENGINE_OVPN3)
|
||||
{
|
||||
ManagementCommand(c, "log on all", NULL, regular);
|
||||
ManagementCommand(c, "state on all", NULL, regular);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -137,6 +137,9 @@
|
|||
#define ID_EDT_MGMT_PORT 285
|
||||
#define ID_TXT_FOLDER1 286
|
||||
#define ID_EDT_POPUP_MUTE 287
|
||||
#define ID_RB_ENGINE_SELECTION 288
|
||||
#define ID_RB_ENGINE_OVPN2 289
|
||||
#define ID_RB_ENGINE_OVPN3 3290
|
||||
|
||||
/* Connections dialog */
|
||||
#define ID_DLG_CONNECTIONS 290
|
||||
|
|
117
openvpn.c
117
openvpn.c
|
@ -40,6 +40,10 @@
|
|||
#define WM_DPICHANGED 0x02E0
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_OVPN3
|
||||
#include <json-c/json.h>
|
||||
#endif
|
||||
|
||||
#include "tray.h"
|
||||
#include "main.h"
|
||||
#include "openvpn.h"
|
||||
|
@ -56,6 +60,8 @@
|
|||
#include "save_pass.h"
|
||||
#include "env_set.h"
|
||||
#include "echo.h"
|
||||
#define OPENVPN_SERVICE_PIPE_NAME_OVPN2 L"\\\\.\\pipe\\openvpn\\service"
|
||||
#define OPENVPN_SERVICE_PIPE_NAME_OVPN3 L"\\\\.\\pipe\\ovpnagent"
|
||||
|
||||
extern options_t o;
|
||||
|
||||
|
@ -1492,7 +1498,8 @@ CloseServiceIO (service_io_t *s)
|
|||
static BOOL
|
||||
InitServiceIO (service_io_t *s)
|
||||
{
|
||||
DWORD dwMode = PIPE_READMODE_MESSAGE;
|
||||
DWORD dwMode = o.ovpn_engine == OPENVPN_ENGINE_OVPN3 ? PIPE_READMODE_BYTE : PIPE_READMODE_MESSAGE;
|
||||
|
||||
CLEAR(*s);
|
||||
|
||||
/* auto-reset event used for signalling i/o completion*/
|
||||
|
@ -1502,8 +1509,9 @@ InitServiceIO (service_io_t *s)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
s->pipe = CreateFile(_T("\\\\.\\pipe\\openvpn\\service"),
|
||||
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
s->pipe = CreateFile (o.ovpn_engine == OPENVPN_ENGINE_OVPN3 ?
|
||||
OPENVPN_SERVICE_PIPE_NAME_OVPN3 : OPENVPN_SERVICE_PIPE_NAME_OVPN2,
|
||||
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
|
||||
if ( !s->pipe ||
|
||||
s->pipe == INVALID_HANDLE_VALUE ||
|
||||
|
@ -2055,6 +2063,57 @@ SetProcessPriority(DWORD *priority)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_OVPN3
|
||||
inline static
|
||||
struct json_object* json_object_new_utf16_string(wchar_t *utf16)
|
||||
{
|
||||
DWORD input_size = WideCharToMultiByte(CP_UTF8, 0, utf16, -1, NULL, 0, NULL, NULL);
|
||||
struct json_object* jobj = NULL;
|
||||
char *utf8 = malloc(input_size);
|
||||
if (!utf8)
|
||||
{
|
||||
goto out;
|
||||
}
|
||||
|
||||
WideCharToMultiByte(CP_UTF8, 0, utf16, -1, utf8, input_size, NULL, NULL);
|
||||
|
||||
jobj = json_object_new_string(utf8);
|
||||
free(utf8);
|
||||
|
||||
out:
|
||||
return jobj;
|
||||
}
|
||||
|
||||
static char* PrepareStartJsonRequest(connection_t *c, wchar_t *exit_event_name)
|
||||
{
|
||||
const char *request_header = "POST /start HTTP/1.1\r\nContent-Type: application/json\r\nContent-Length: %zd\r\n\r\n";
|
||||
json_object *jobj = json_object_new_object();
|
||||
|
||||
json_object_object_add(jobj, "config_file", json_object_new_utf16_string(c->config_file));
|
||||
json_object_object_add(jobj, "config_dir", json_object_new_utf16_string(c->config_dir));
|
||||
json_object_object_add(jobj, "exit_event_name", json_object_new_utf16_string(exit_event_name));
|
||||
json_object_object_add(jobj, "management_password", json_object_new_string(c->manage.password));
|
||||
json_object_object_add(jobj, "management_host", json_object_new_string(inet_ntoa(c->manage.skaddr.sin_addr)));
|
||||
json_object_object_add(jobj, "management_port", json_object_new_int(ntohs(c->manage.skaddr.sin_port)));
|
||||
json_object_object_add(jobj, "log", json_object_new_utf16_string(c->log_path));
|
||||
json_object_object_add(jobj, "log-append", json_object_new_int(o.log_append));
|
||||
|
||||
const char *body = json_object_to_json_string(jobj);
|
||||
|
||||
char *request = calloc(1, strlen(request_header) + strlen(body) + 1);
|
||||
if (request == NULL)
|
||||
{
|
||||
goto out;
|
||||
}
|
||||
sprintf(request, request_header, strlen(body));
|
||||
strcat(request, body);
|
||||
|
||||
out:
|
||||
json_object_put(jobj);
|
||||
return request;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Launch an OpenVPN process and the accompanying thread to monitor it
|
||||
*/
|
||||
|
@ -2123,28 +2182,44 @@ StartOpenVPN(connection_t *c)
|
|||
/* Try to open the service pipe */
|
||||
if (use_iservice && InitServiceIO(&c->iserv))
|
||||
{
|
||||
DWORD size = _tcslen(c->config_dir) + _tcslen(options) + sizeof(c->manage.password) + 3;
|
||||
TCHAR startup_info[1024];
|
||||
BOOL res = FALSE;
|
||||
|
||||
if ( !AuthorizeConfig(c))
|
||||
if (o.ovpn_engine == OPENVPN_ENGINE_OVPN3)
|
||||
{
|
||||
CloseHandle(c->exit_event);
|
||||
CloseServiceIO(&c->iserv);
|
||||
goto out;
|
||||
#ifdef ENABLE_OVPN3
|
||||
char *request = PrepareStartJsonRequest(c, exit_event_name);
|
||||
|
||||
res = (request != NULL) && WritePipe(c->iserv.pipe, request, strlen(request));
|
||||
free(request);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD size = _tcslen(c->config_dir) + _tcslen(options) + sizeof(c->manage.password) + 3;
|
||||
TCHAR startup_info[1024];
|
||||
|
||||
if (!AuthorizeConfig(c))
|
||||
{
|
||||
CloseHandle(c->exit_event);
|
||||
CloseServiceIO(&c->iserv);
|
||||
goto out;
|
||||
}
|
||||
|
||||
c->hProcess = NULL;
|
||||
c->manage.password[sizeof(c->manage.password) - 1] = '\n';
|
||||
|
||||
/* Ignore pushed route-method when service is in use */
|
||||
const wchar_t* extra_options = L" --pull-filter ignore route-method";
|
||||
size += wcslen(extra_options);
|
||||
|
||||
_sntprintf_0(startup_info, L"%ls%lc%ls%ls%lc%.*hs", c->config_dir, L'\0',
|
||||
options, extra_options, L'\0', sizeof(c->manage.password), c->manage.password);
|
||||
c->manage.password[sizeof(c->manage.password) - 1] = '\0';
|
||||
|
||||
res = WritePipe(c->iserv.pipe, startup_info, size * sizeof(TCHAR));
|
||||
}
|
||||
|
||||
c->hProcess = NULL;
|
||||
c->manage.password[sizeof(c->manage.password) - 1] = '\n';
|
||||
|
||||
/* Ignore pushed route-method when service is in use */
|
||||
const wchar_t *extra_options = L" --pull-filter ignore route-method";
|
||||
size += wcslen(extra_options);
|
||||
|
||||
_sntprintf_0(startup_info, L"%ls%lc%ls%ls%lc%.*hs", c->config_dir, L'\0',
|
||||
options, extra_options, L'\0', sizeof(c->manage.password), c->manage.password);
|
||||
c->manage.password[sizeof(c->manage.password) - 1] = '\0';
|
||||
|
||||
if (!WritePipe(c->iserv.pipe, startup_info, size * sizeof (TCHAR)))
|
||||
if (!res)
|
||||
{
|
||||
ShowLocalizedMsg (IDS_ERR_WRITE_SERVICE_PIPE);
|
||||
CloseHandle(c->exit_event);
|
||||
|
|
11
options.c
11
options.c
|
@ -651,6 +651,9 @@ SaveAdvancedDlgParams (HWND hdlg)
|
|||
tmp = GetDlgItemInt (hdlg, ID_EDT_POPUP_MUTE, &status, FALSE);
|
||||
if (status) o.popup_mute_interval = tmp;
|
||||
|
||||
o.ovpn_engine = IsDlgButtonChecked(hdlg, ID_RB_ENGINE_OVPN3) ?
|
||||
OPENVPN_ENGINE_OVPN3 : OPENVPN_ENGINE_OVPN2;
|
||||
|
||||
SaveRegistryKeys ();
|
||||
ExpandOptions ();
|
||||
|
||||
|
@ -680,6 +683,14 @@ LoadAdvancedDlgParams (HWND hdlg)
|
|||
CheckRadioButton (hdlg, ID_RB_BALLOON3, ID_RB_BALLOON4, ID_RB_BALLOON4);
|
||||
else
|
||||
CheckRadioButton (hdlg, ID_RB_BALLOON3, ID_RB_BALLOON4, ID_RB_BALLOON3);
|
||||
#ifdef ENABLE_OVPN3
|
||||
CheckRadioButton(hdlg, ID_RB_ENGINE_OVPN2, ID_RB_ENGINE_OVPN3,
|
||||
o.ovpn_engine == OPENVPN_ENGINE_OVPN3 ? ID_RB_ENGINE_OVPN3 : ID_RB_ENGINE_OVPN2);
|
||||
#else
|
||||
ShowWindow(GetDlgItem(hdlg, ID_RB_ENGINE_SELECTION), SW_HIDE);
|
||||
ShowWindow(GetDlgItem(hdlg, ID_RB_ENGINE_OVPN2), SW_HIDE);
|
||||
ShowWindow(GetDlgItem(hdlg, ID_RB_ENGINE_OVPN3), SW_HIDE);
|
||||
#endif
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK
|
||||
|
|
|
@ -92,6 +92,9 @@ typedef struct {
|
|||
#define CONFIG_VIEW_FLAT (1)
|
||||
#define CONFIG_VIEW_NESTED (2)
|
||||
|
||||
#define OPENVPN_ENGINE_OVPN2 (0)
|
||||
#define OPENVPN_ENGINE_OVPN3 (1)
|
||||
|
||||
typedef struct {
|
||||
unsigned short major, minor, build, revision;
|
||||
} version_t;
|
||||
|
@ -209,6 +212,7 @@ typedef struct {
|
|||
DWORD disable_popup_messages; /* set nonzero to suppress all echo msg messages */
|
||||
DWORD popup_mute_interval; /* Interval in hours to suppress repeated echo messages */
|
||||
DWORD mgmt_port_offset; /* management interface port = this offset + index of connection profile */
|
||||
DWORD ovpn_engine; /* 0 - openvpn2, 1 - openvpn3 */
|
||||
|
||||
#ifdef DEBUG
|
||||
FILE *debug_fp;
|
||||
|
|
|
@ -66,6 +66,7 @@ struct regkey_int {
|
|||
{L"popup_mute_interval", &o.popup_mute_interval, 24},
|
||||
{L"disable_popup_messages", &o.disable_popup_messages, 0},
|
||||
{L"management_port_offset", &o.mgmt_port_offset, 25340},
|
||||
{L"ovpn_engine", &o.ovpn_engine, OPENVPN_ENGINE_OVPN2},
|
||||
};
|
||||
|
||||
static int
|
||||
|
|
|
@ -211,6 +211,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -212,6 +212,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -211,6 +211,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -225,6 +225,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -209,6 +209,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -210,6 +210,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -210,6 +210,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -165,6 +165,10 @@ BEGIN
|
|||
AUTORADIOBUTTON "Alla &connessione", ID_RB_BALLOON1, 28, 170, 200, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "Alla connessione/&riconnessione", ID_RB_BALLOON2, 28, 185, 200, 10
|
||||
AUTORADIOBUTTON "&Mai", ID_RB_BALLOON0, 28, 200, 200, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* Advanced Dialog */
|
||||
|
|
|
@ -211,6 +211,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "時間", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -212,6 +212,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -166,6 +166,10 @@ BEGIN
|
|||
AUTORADIOBUTTON "Bij verbinden", ID_RB_BALLOON1, 28, 170, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "Bij opnieuw verbinden", ID_RB_BALLOON2, 86, 170, 90, 10
|
||||
AUTORADIOBUTTON "Nooit", ID_RB_BALLOON0, 181, 170, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* Advanced Dialog */
|
||||
|
|
|
@ -210,6 +210,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -211,6 +211,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -209,6 +209,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -212,6 +212,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -209,6 +209,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -211,6 +211,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -210,6 +210,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -213,6 +213,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -213,6 +213,9 @@ BEGIN
|
|||
EDITTEXT ID_EDT_POPUP_MUTE, 150, 258, 30, 12, ES_AUTOHSCROLL
|
||||
LTEXT "hours", 209, 190, 260, 40, 10
|
||||
|
||||
GROUPBOX "OpenVPN Engine", ID_RB_ENGINE_SELECTION, 6, 162, 235, 30
|
||||
AUTORADIOBUTTON "openvpn2", ID_RB_ENGINE_OVPN2, 18, 175, 50, 10, WS_GROUP | WS_TABSTOP
|
||||
AUTORADIOBUTTON "openvpn3 (experimental)", ID_RB_ENGINE_OVPN3, 76, 175, 90, 10
|
||||
END
|
||||
|
||||
/* About Dialog */
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
#include "openvpn-gui-res.h"
|
||||
#include "localization.h"
|
||||
|
||||
#define OPENVPN_SERVICE_NAME_OVPN3 L"ovpnagent"
|
||||
#define OPENVPN_SERVICE_NAME_OVPN2 L"OpenVPNServiceInteractive"
|
||||
|
||||
extern options_t o;
|
||||
|
||||
int MyStartService()
|
||||
|
@ -266,8 +269,9 @@ CheckIServiceStatus(BOOL warn)
|
|||
if (NULL == schSCManager)
|
||||
return(false);
|
||||
|
||||
schService = OpenService(schSCManager, _T("OpenVPNServiceInteractive"),
|
||||
SERVICE_QUERY_STATUS);
|
||||
schService = OpenService(schSCManager, o.ovpn_engine == OPENVPN_ENGINE_OVPN3 ?
|
||||
OPENVPN_SERVICE_NAME_OVPN3 : OPENVPN_SERVICE_NAME_OVPN2, SERVICE_QUERY_STATUS);
|
||||
|
||||
if (schService == NULL &&
|
||||
GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue