mirror of https://github.com/OpenVPN/openvpn-gui
Merge 5084fb104f
into ac2d8a23c6
commit
81144da3df
|
@ -98,7 +98,8 @@ openvpn_gui_LDADD = \
|
||||||
-lws2_32 \
|
-lws2_32 \
|
||||||
-lcomctl32 \
|
-lcomctl32 \
|
||||||
-lwinhttp \
|
-lwinhttp \
|
||||||
-lwtsapi32
|
-lwtsapi32 \
|
||||||
|
-lcrypt32
|
||||||
|
|
||||||
openvpn-gui-res.o: $(openvpn_gui_RESOURCES) $(srcdir)/openvpn-gui-res.h
|
openvpn-gui-res.o: $(openvpn_gui_RESOURCES) $(srcdir)/openvpn-gui-res.h
|
||||||
$(RCCOMPILE) -i $< -o $@
|
$(RCCOMPILE) -i $< -o $@
|
||||||
|
|
|
@ -19,7 +19,7 @@ dnl distribution); if not, write to the Free Software Foundation, Inc.,
|
||||||
dnl 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
dnl 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
AC_PREREQ(2.59)
|
AC_PREREQ(2.59)
|
||||||
define([_GUI_VERSION], [10])
|
define([_GUI_VERSION], [11])
|
||||||
AC_INIT([OpenVPN GUI],[_GUI_VERSION],[openvpn-devel@lists.sourceforge.net],[openvpn-gui],[https://github.com/openvpn/openvpn-gui/])
|
AC_INIT([OpenVPN GUI],[_GUI_VERSION],[openvpn-devel@lists.sourceforge.net],[openvpn-gui],[https://github.com/openvpn/openvpn-gui/])
|
||||||
AC_DEFINE([PACKAGE_VERSION_RESOURCE], [_GUI_VERSION,0,0,0], [Version in windows resource format])
|
AC_DEFINE([PACKAGE_VERSION_RESOURCE], [_GUI_VERSION,0,0,0], [Version in windows resource format])
|
||||||
AC_CONFIG_AUX_DIR([.])
|
AC_CONFIG_AUX_DIR([.])
|
||||||
|
|
70
main.c
70
main.c
|
@ -28,6 +28,7 @@
|
||||||
#include <wtsapi32.h>
|
#include <wtsapi32.h>
|
||||||
#include <prsht.h>
|
#include <prsht.h>
|
||||||
#include <pbt.h>
|
#include <pbt.h>
|
||||||
|
#include <commdlg.h>
|
||||||
|
|
||||||
#include "tray.h"
|
#include "tray.h"
|
||||||
#include "openvpn.h"
|
#include "openvpn.h"
|
||||||
|
@ -53,6 +54,7 @@
|
||||||
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
|
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
|
||||||
static void ShowSettingsDialog();
|
static void ShowSettingsDialog();
|
||||||
void CloseApplication(HWND hwnd);
|
void CloseApplication(HWND hwnd);
|
||||||
|
void ImportConfigFile();
|
||||||
|
|
||||||
/* Class name and window title */
|
/* Class name and window title */
|
||||||
TCHAR szClassName[ ] = _T("OpenVPN-GUI");
|
TCHAR szClassName[ ] = _T("OpenVPN-GUI");
|
||||||
|
@ -178,6 +180,9 @@ int WINAPI _tWinMain (HINSTANCE hThisInstance,
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!IsUserAdmin())
|
||||||
|
CheckIServiceStatus();
|
||||||
|
|
||||||
BuildFileList();
|
BuildFileList();
|
||||||
if (!VerifyAutoConnections()) {
|
if (!VerifyAutoConnections()) {
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -349,6 +354,9 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
ShowChangePassphraseDialog(&o.conn[LOWORD(wParam) - IDM_PASSPHRASEMENU]);
|
ShowChangePassphraseDialog(&o.conn[LOWORD(wParam) - IDM_PASSPHRASEMENU]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (LOWORD(wParam) == IDM_IMPORT) {
|
||||||
|
ImportConfigFile();
|
||||||
|
}
|
||||||
if (LOWORD(wParam) == IDM_SETTINGS) {
|
if (LOWORD(wParam) == IDM_SETTINGS) {
|
||||||
ShowSettingsDialog();
|
ShowSettingsDialog();
|
||||||
}
|
}
|
||||||
|
@ -525,6 +533,68 @@ CloseApplication(HWND hwnd)
|
||||||
DestroyWindow(hwnd);
|
DestroyWindow(hwnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ImportConfigFile()
|
||||||
|
{
|
||||||
|
|
||||||
|
TCHAR filter[37];
|
||||||
|
|
||||||
|
_sntprintf_0(filter, _T("*.%s%c*.%s%c"), o.ext_string, _T('\0'), o.ext_string, _T('\0'));
|
||||||
|
|
||||||
|
OPENFILENAME fn;
|
||||||
|
TCHAR source[MAX_PATH] = _T("");
|
||||||
|
|
||||||
|
fn.lStructSize = sizeof(OPENFILENAME);
|
||||||
|
fn.hwndOwner = NULL;
|
||||||
|
fn.lpstrFilter = filter;
|
||||||
|
fn.lpstrCustomFilter = NULL;
|
||||||
|
fn.nFilterIndex = 1;
|
||||||
|
fn.lpstrFile = source;
|
||||||
|
fn.nMaxFile = MAX_PATH;
|
||||||
|
fn.lpstrFileTitle = NULL;
|
||||||
|
fn.lpstrInitialDir = NULL;
|
||||||
|
fn.lpstrTitle = NULL;
|
||||||
|
fn.Flags = OFN_DONTADDTORECENT | OFN_FILEMUSTEXIST;
|
||||||
|
fn.lpstrDefExt = NULL;
|
||||||
|
|
||||||
|
if (GetOpenFileName(&fn))
|
||||||
|
{
|
||||||
|
|
||||||
|
TCHAR destination[MAX_PATH];
|
||||||
|
PTCHAR fileName = source + fn.nFileOffset;
|
||||||
|
|
||||||
|
_sntprintf_0(destination, _T("%s\\%s"), o.config_dir, fileName);
|
||||||
|
|
||||||
|
destination[_tcslen(destination) - _tcslen(o.ext_string) - 1] = _T('\0');
|
||||||
|
|
||||||
|
if (EnsureDirExists(destination))
|
||||||
|
{
|
||||||
|
|
||||||
|
_sntprintf_0(destination, _T("%s\\%s"), destination, fileName);
|
||||||
|
|
||||||
|
if (!CopyFile(source, destination, TRUE))
|
||||||
|
{
|
||||||
|
if (GetLastError() == ERROR_FILE_EXISTS)
|
||||||
|
{
|
||||||
|
fileName[_tcslen(fileName) - _tcslen(o.ext_string) - 1] = _T('\0');
|
||||||
|
ShowLocalizedMsg(IDS_ERR_IMPORT_EXISTS, fileName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowLocalizedMsg(IDS_NFO_IMPORT_SUCCESS);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowLocalizedMsg(IDS_ERR_IMPORT_FAILED, destination);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
void PrintDebugMsg(TCHAR *msg)
|
void PrintDebugMsg(TCHAR *msg)
|
||||||
{
|
{
|
||||||
|
|
5
manage.c
5
manage.c
|
@ -54,7 +54,6 @@ InitManagement(const mgmt_rtmsg_handler *handler)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connect to the OpenVPN management interface and register
|
* Connect to the OpenVPN management interface and register
|
||||||
* asynchronous socket event notification for it
|
* asynchronous socket event notification for it
|
||||||
|
@ -205,7 +204,11 @@ OnManagement(SOCKET sk, LPARAM lParam)
|
||||||
if (time(NULL) < c->manage.timeout)
|
if (time(NULL) < c->manage.timeout)
|
||||||
connect(c->manage.sk, (SOCKADDR *)&c->manage.skaddr, sizeof(c->manage.skaddr));
|
connect(c->manage.sk, (SOCKADDR *)&c->manage.skaddr, sizeof(c->manage.skaddr));
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
/* Connection to MI timed out. */
|
||||||
|
c->state = timedout;
|
||||||
rtmsg_handler[stop](c, "");
|
rtmsg_handler[stop](c, "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
132
misc.c
132
misc.c
|
@ -24,6 +24,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <wincrypt.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -33,6 +34,35 @@
|
||||||
#include "manage.h"
|
#include "manage.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper function to do base64 conversion through CryptoAPI
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
Base64Encode(const char *input, int input_len, char **output)
|
||||||
|
{
|
||||||
|
DWORD output_len;
|
||||||
|
if (!CryptBinaryToStringA((const BYTE *) input, (DWORD) input_len,
|
||||||
|
CRYPT_STRING_BASE64, NULL, &output_len) || output_len == 0)
|
||||||
|
{
|
||||||
|
*output = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*output = (char *)malloc(output_len);
|
||||||
|
if (!CryptBinaryToStringA((const BYTE *) input, (DWORD) input_len,
|
||||||
|
CRYPT_STRING_BASE64, *output, &output_len))
|
||||||
|
{
|
||||||
|
free(*output);
|
||||||
|
*output = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* Trim trailing "\r\n" manually.
|
||||||
|
Actually they can be stripped by adding CRYPT_STRING_NOCRLF to dwFlags,
|
||||||
|
but Windows XP/2003 does not support this flag. */
|
||||||
|
if(output_len > 1 && (*output)[output_len - 1] == '\x0A'
|
||||||
|
&& (*output)[output_len - 2] == '\x0D')
|
||||||
|
(*output)[output_len - 2] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper function to convert UCS-2 text from a dialog item to UTF-8.
|
* Helper function to convert UCS-2 text from a dialog item to UTF-8.
|
||||||
* Caller must free *str if *len != 0.
|
* Caller must free *str if *len != 0.
|
||||||
|
@ -125,6 +155,83 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generate a management command from double user inputs and send it
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
ManagementCommandFromInputBase64(connection_t *c, LPCSTR fmt, HWND hDlg,int id, int id2)
|
||||||
|
{
|
||||||
|
BOOL retval = FALSE;
|
||||||
|
LPSTR input, input2, input_b64, input2_b64, cmd;
|
||||||
|
int input_len, input2_len, cmd_len, pos;
|
||||||
|
|
||||||
|
GetDlgItemTextUtf8(hDlg, id, &input, &input_len);
|
||||||
|
GetDlgItemTextUtf8(hDlg, id2, &input2, &input2_len);
|
||||||
|
|
||||||
|
/* Escape input if needed */
|
||||||
|
for (pos = 0; pos < input_len; ++pos)
|
||||||
|
{
|
||||||
|
if (input[pos] == '\\' || input[pos] == '"')
|
||||||
|
{
|
||||||
|
LPSTR buf = realloc(input, ++input_len + 1);
|
||||||
|
if (buf == NULL)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
input = buf;
|
||||||
|
memmove(input + pos + 1, input + pos, input_len - pos + 1);
|
||||||
|
input[pos] = '\\';
|
||||||
|
pos += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (pos = 0; pos < input2_len; ++pos)
|
||||||
|
{
|
||||||
|
if (input2[pos] == '\\' || input2[pos] == '"')
|
||||||
|
{
|
||||||
|
LPSTR buf = realloc(input2, ++input2_len + 1);
|
||||||
|
if (buf == NULL)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
input2 = buf;
|
||||||
|
memmove(input2 + pos + 1, input2 + pos, input2_len - pos + 1);
|
||||||
|
input2[pos] = '\\';
|
||||||
|
pos += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Base64Encode(input, input_len, &input_b64);
|
||||||
|
Base64Encode(input2, input2_len, &input2_b64);
|
||||||
|
|
||||||
|
cmd_len = input_len * 2 + input2_len * 2 + strlen(fmt);
|
||||||
|
cmd = malloc(cmd_len);
|
||||||
|
if (cmd)
|
||||||
|
{
|
||||||
|
snprintf(cmd, cmd_len, fmt, input_b64, input2_b64);
|
||||||
|
retval = ManagementCommand(c, cmd, NULL, regular);
|
||||||
|
free(cmd);
|
||||||
|
}
|
||||||
|
free(input_b64);
|
||||||
|
free(input2_b64);
|
||||||
|
|
||||||
|
out:
|
||||||
|
/* Clear buffers with potentially secret content */
|
||||||
|
if (input_len)
|
||||||
|
{
|
||||||
|
memset(input, 'x', input_len);
|
||||||
|
SetDlgItemTextA(hDlg, id, input);
|
||||||
|
free(input);
|
||||||
|
}
|
||||||
|
if (input2_len)
|
||||||
|
{
|
||||||
|
memset(input2, 'x', input2_len);
|
||||||
|
SetDlgItemTextA(hDlg, id2, input2);
|
||||||
|
free(input2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ensures the given directory exists, by checking for and
|
* Ensures the given directory exists, by checking for and
|
||||||
* creating missing parts of the path.
|
* creating missing parts of the path.
|
||||||
|
@ -190,3 +297,28 @@ ForceForegroundWindow(HWND hWnd)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check user has admin rights
|
||||||
|
* Taken from https://msdn.microsoft.com/en-us/library/windows/desktop/aa376389(v=vs.85).aspx
|
||||||
|
* Returns true if the calling process token has the local Administrators group enabled
|
||||||
|
* in its SID. Assumes the caller is not impersonating and has access to open its own
|
||||||
|
* process token.
|
||||||
|
*/
|
||||||
|
BOOL IsUserAdmin(VOID)
|
||||||
|
{
|
||||||
|
BOOL b;
|
||||||
|
SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
|
||||||
|
PSID AdministratorsGroup;
|
||||||
|
|
||||||
|
b = AllocateAndInitializeSid (&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
|
||||||
|
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,
|
||||||
|
&AdministratorsGroup);
|
||||||
|
if(b)
|
||||||
|
{
|
||||||
|
CheckTokenMembership(NULL, AdministratorsGroup, &b);
|
||||||
|
FreeSid(AdministratorsGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(b);
|
||||||
|
}
|
||||||
|
|
3
misc.h
3
misc.h
|
@ -23,6 +23,7 @@
|
||||||
#define MISC_H
|
#define MISC_H
|
||||||
|
|
||||||
BOOL ManagementCommandFromInput(connection_t *, LPCSTR, HWND, int);
|
BOOL ManagementCommandFromInput(connection_t *, LPCSTR, HWND, int);
|
||||||
|
BOOL ManagementCommandFromInputBase64(connection_t *, LPCSTR, HWND, int, int);
|
||||||
|
|
||||||
BOOL EnsureDirExists(LPTSTR);
|
BOOL EnsureDirExists(LPTSTR);
|
||||||
|
|
||||||
|
@ -30,4 +31,6 @@ BOOL streq(LPCSTR, LPCSTR);
|
||||||
BOOL wcsbegins(LPCWSTR, LPCWSTR);
|
BOOL wcsbegins(LPCWSTR, LPCWSTR);
|
||||||
|
|
||||||
BOOL ForceForegroundWindow(HWND);
|
BOOL ForceForegroundWindow(HWND);
|
||||||
|
|
||||||
|
BOOL IsUserAdmin(VOID);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -56,6 +56,11 @@
|
||||||
#define ID_EDT_AUTH_USER 181
|
#define ID_EDT_AUTH_USER 181
|
||||||
#define ID_EDT_AUTH_PASS 182
|
#define ID_EDT_AUTH_PASS 182
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
#define ID_DLG_AUTH_CHALLENGE 183
|
||||||
|
#define ID_TXT_AUTH_CHALLENGE 184
|
||||||
|
#define ID_EDT_AUTH_CHALLENGE 185
|
||||||
|
|
||||||
/* Proxy Settings Dialog */
|
/* Proxy Settings Dialog */
|
||||||
#define ID_DLG_PROXY 200
|
#define ID_DLG_PROXY 200
|
||||||
#define ID_RB_PROXY_OPENVPN 210
|
#define ID_RB_PROXY_OPENVPN 210
|
||||||
|
@ -107,6 +112,7 @@
|
||||||
#define IDS_MENU_SERVICEONLY_STOP 1020
|
#define IDS_MENU_SERVICEONLY_STOP 1020
|
||||||
#define IDS_MENU_SERVICEONLY_RESTART 1021
|
#define IDS_MENU_SERVICEONLY_RESTART 1021
|
||||||
#define IDS_MENU_ASK_STOP_SERVICE 1022
|
#define IDS_MENU_ASK_STOP_SERVICE 1022
|
||||||
|
#define IDS_MENU_IMPORT 1023
|
||||||
|
|
||||||
/* LogViewer Dialog */
|
/* LogViewer Dialog */
|
||||||
#define IDS_ERR_START_LOG_VIEWER 1101
|
#define IDS_ERR_START_LOG_VIEWER 1101
|
||||||
|
@ -156,6 +162,8 @@
|
||||||
#define IDS_ERR_CONN_SCRIPT_FAILED 1248
|
#define IDS_ERR_CONN_SCRIPT_FAILED 1248
|
||||||
#define IDS_ERR_RUN_CONN_SCRIPT_TIMEOUT 1249
|
#define IDS_ERR_RUN_CONN_SCRIPT_TIMEOUT 1249
|
||||||
#define IDS_ERR_CONFIG_EXIST 1251
|
#define IDS_ERR_CONFIG_EXIST 1251
|
||||||
|
#define IDS_NFO_CONN_TIMEOUT 1252
|
||||||
|
#define IDS_NFO_NO_CONFIGS 1253
|
||||||
|
|
||||||
/* Program Startup Related */
|
/* Program Startup Related */
|
||||||
#define IDS_ERR_OPEN_DEBUG_FILE 1301
|
#define IDS_ERR_OPEN_DEBUG_FILE 1301
|
||||||
|
@ -225,6 +233,10 @@
|
||||||
#define IDS_ERR_OPEN_SCMGR 1706
|
#define IDS_ERR_OPEN_SCMGR 1706
|
||||||
#define IDS_ERR_STOP_SERVICE 1707
|
#define IDS_ERR_STOP_SERVICE 1707
|
||||||
#define IDS_NFO_RESTARTED 1708
|
#define IDS_NFO_RESTARTED 1708
|
||||||
|
#define IDS_ERR_ACCESS_SERVICE_PIPE 1709
|
||||||
|
#define IDS_ERR_WRITE_SERVICE_PIPE 1710
|
||||||
|
#define IDS_ERR_NOTSTARTED_ISERVICE 1711
|
||||||
|
#define IDS_ERR_INSTALL_ISERVICE 1712
|
||||||
|
|
||||||
/* Registry Related */
|
/* Registry Related */
|
||||||
#define IDS_ERR_GET_WINDOWS_DIR 1801
|
#define IDS_ERR_GET_WINDOWS_DIR 1801
|
||||||
|
@ -239,5 +251,12 @@
|
||||||
#define IDS_ERR_OPEN_WRITE_REG 1810
|
#define IDS_ERR_OPEN_WRITE_REG 1810
|
||||||
#define IDS_ERR_READ_SET_KEY 1811
|
#define IDS_ERR_READ_SET_KEY 1811
|
||||||
#define IDS_ERR_WRITE_REGVALUE 1812
|
#define IDS_ERR_WRITE_REGVALUE 1812
|
||||||
|
#define IDS_ERR_GET_PROFILE_DIR 1813
|
||||||
|
|
||||||
|
/* Importation Related */
|
||||||
|
|
||||||
|
#define IDS_ERR_IMPORT_EXISTS 1901
|
||||||
|
#define IDS_ERR_IMPORT_FAILED 1902
|
||||||
|
#define IDS_NFO_IMPORT_SUCCESS 1903
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
85
openvpn.c
85
openvpn.c
|
@ -52,6 +52,12 @@ extern options_t o;
|
||||||
|
|
||||||
const TCHAR *cfgProp = _T("conn");
|
const TCHAR *cfgProp = _T("conn");
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
connection_t *c;
|
||||||
|
int challenge_echo;
|
||||||
|
char *challenge_str;
|
||||||
|
} auth_param_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Receive banner on connection to management interface
|
* Receive banner on connection to management interface
|
||||||
* Format: <BANNER>
|
* Format: <BANNER>
|
||||||
|
@ -202,27 +208,41 @@ OnStateChange(connection_t *c, char *data)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DialogProc for OpenVPN username/password auth dialog windows
|
* DialogProc for OpenVPN username/password/challenge auth dialog windows
|
||||||
*/
|
*/
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
connection_t *c;
|
auth_param_t *param;
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
/* Set connection for this dialog and show it */
|
/* Set connection for this dialog and show it */
|
||||||
c = (connection_t *) lParam;
|
param = (auth_param_t *) lParam;
|
||||||
SetProp(hwndDlg, cfgProp, (HANDLE) c);
|
SetProp(hwndDlg, cfgProp, (HANDLE) param);
|
||||||
if (c->state == resuming)
|
if (param->challenge_str)
|
||||||
|
{
|
||||||
|
int wchars_num = MultiByteToWideChar(CP_UTF8, 0, param->challenge_str, -1, NULL, 0);
|
||||||
|
LPWSTR wstr = (LPWSTR)malloc(sizeof(WCHAR) * wchars_num);
|
||||||
|
HWND wnd_challenge = GetDlgItem(hwndDlg, ID_EDT_AUTH_CHALLENGE);
|
||||||
|
|
||||||
|
MultiByteToWideChar(CP_UTF8, 0, param->challenge_str, -1, wstr, wchars_num);
|
||||||
|
SetDlgItemTextW(hwndDlg, ID_TXT_AUTH_CHALLENGE, wstr);
|
||||||
|
free(wstr);
|
||||||
|
/* Set/Remove style ES_PASSWORD by SetWindowLong(GWL_STYLE) does nothing,
|
||||||
|
send EM_SETPASSWORDCHAR just works. */
|
||||||
|
if(param->challenge_echo)
|
||||||
|
SendMessage(wnd_challenge, EM_SETPASSWORDCHAR, 0, 0);
|
||||||
|
}
|
||||||
|
if (param->c->state == resuming)
|
||||||
ForceForegroundWindow(hwndDlg);
|
ForceForegroundWindow(hwndDlg);
|
||||||
else
|
else
|
||||||
SetForegroundWindow(hwndDlg);
|
SetForegroundWindow(hwndDlg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
param = (auth_param_t *) GetProp(hwndDlg, cfgProp);
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case ID_EDT_AUTH_USER:
|
case ID_EDT_AUTH_USER:
|
||||||
|
@ -234,14 +254,17 @@ UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDOK:
|
case IDOK:
|
||||||
ManagementCommandFromInput(c, "username \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_USER);
|
ManagementCommandFromInput(param->c, "username \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_USER);
|
||||||
ManagementCommandFromInput(c, "password \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_PASS);
|
if (param->challenge_str)
|
||||||
|
ManagementCommandFromInputBase64(param->c, "password \"Auth\" \"SCRV1:%s:%s\"", hwndDlg, ID_EDT_AUTH_PASS, ID_EDT_AUTH_CHALLENGE);
|
||||||
|
else
|
||||||
|
ManagementCommandFromInput(param->c, "password \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_PASS);
|
||||||
EndDialog(hwndDlg, LOWORD(wParam));
|
EndDialog(hwndDlg, LOWORD(wParam));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
EndDialog(hwndDlg, LOWORD(wParam));
|
EndDialog(hwndDlg, LOWORD(wParam));
|
||||||
StopOpenVPN(c);
|
StopOpenVPN(param->c);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -251,6 +274,9 @@ UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
case WM_NCDESTROY:
|
case WM_NCDESTROY:
|
||||||
|
param = (auth_param_t *) GetProp(hwndDlg, cfgProp);
|
||||||
|
if (param->challenge_str) free(param->challenge_str);
|
||||||
|
free(param);
|
||||||
RemoveProp(hwndDlg, cfgProp);
|
RemoveProp(hwndDlg, cfgProp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -317,7 +343,21 @@ OnPassword(connection_t *c, char *msg)
|
||||||
|
|
||||||
if (strstr(msg, "'Auth'"))
|
if (strstr(msg, "'Auth'"))
|
||||||
{
|
{
|
||||||
LocalizedDialogBoxParam(ID_DLG_AUTH, UserAuthDialogFunc, (LPARAM) c);
|
char* chstr = strstr(msg, "SC:");
|
||||||
|
auth_param_t *param = (auth_param_t *) malloc(sizeof(auth_param_t));
|
||||||
|
param->c = c;
|
||||||
|
if (chstr)
|
||||||
|
{
|
||||||
|
param->challenge_echo = *(chstr + 3) != '0';
|
||||||
|
param->challenge_str = strdup(chstr + 5);
|
||||||
|
LocalizedDialogBoxParam(ID_DLG_AUTH_CHALLENGE, UserAuthDialogFunc, (LPARAM) param);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param->challenge_echo = 0;
|
||||||
|
param->challenge_str = NULL;
|
||||||
|
LocalizedDialogBoxParam(ID_DLG_AUTH, UserAuthDialogFunc, (LPARAM) param);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (strstr(msg, "'Private Key'"))
|
else if (strstr(msg, "'Private Key'"))
|
||||||
{
|
{
|
||||||
|
@ -341,6 +381,7 @@ void
|
||||||
OnStop(connection_t *c, UNUSED char *msg)
|
OnStop(connection_t *c, UNUSED char *msg)
|
||||||
{
|
{
|
||||||
UINT txt_id, msg_id;
|
UINT txt_id, msg_id;
|
||||||
|
TCHAR *msg_xtra;
|
||||||
SetMenuStatus(c, disconnected);
|
SetMenuStatus(c, disconnected);
|
||||||
|
|
||||||
switch (c->state)
|
switch (c->state)
|
||||||
|
@ -366,9 +407,13 @@ OnStop(connection_t *c, UNUSED char *msg)
|
||||||
case resuming:
|
case resuming:
|
||||||
case connecting:
|
case connecting:
|
||||||
case reconnecting:
|
case reconnecting:
|
||||||
|
case timedout:
|
||||||
/* We have failed to (re)connect */
|
/* We have failed to (re)connect */
|
||||||
txt_id = c->state == reconnecting ? IDS_NFO_STATE_FAILED_RECONN : IDS_NFO_STATE_FAILED;
|
txt_id = c->state == reconnecting ? IDS_NFO_STATE_FAILED_RECONN : IDS_NFO_STATE_FAILED;
|
||||||
msg_id = c->state == reconnecting ? IDS_NFO_RECONN_FAILED : IDS_NFO_CONN_FAILED;
|
msg_id = c->state == reconnecting ? IDS_NFO_RECONN_FAILED : IDS_NFO_CONN_FAILED;
|
||||||
|
msg_xtra = c->state == timedout ? c->log_path : c->config_name;
|
||||||
|
if (c->state == timedout)
|
||||||
|
msg_id = IDS_NFO_CONN_TIMEOUT;
|
||||||
|
|
||||||
c->state = disconnecting;
|
c->state = disconnecting;
|
||||||
CheckAndSetTrayIcon();
|
CheckAndSetTrayIcon();
|
||||||
|
@ -382,7 +427,7 @@ OnStop(connection_t *c, UNUSED char *msg)
|
||||||
SetForegroundWindow(c->hwndStatus);
|
SetForegroundWindow(c->hwndStatus);
|
||||||
ShowWindow(c->hwndStatus, SW_SHOW);
|
ShowWindow(c->hwndStatus, SW_SHOW);
|
||||||
}
|
}
|
||||||
ShowLocalizedMsg(msg_id, c->config_name);
|
ShowLocalizedMsg(msg_id, msg_xtra);
|
||||||
SendMessage(c->hwndStatus, WM_CLOSE, 0, 0);
|
SendMessage(c->hwndStatus, WM_CLOSE, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -682,27 +727,29 @@ StartOpenVPN(connection_t *c)
|
||||||
/* Create a management interface password */
|
/* Create a management interface password */
|
||||||
GetRandomPassword(c->manage.password, sizeof(c->manage.password) - 1);
|
GetRandomPassword(c->manage.password, sizeof(c->manage.password) - 1);
|
||||||
|
|
||||||
/* Construct command line */
|
/* Construct command line -- put log first */
|
||||||
_sntprintf_0(cmdline, _T("openvpn --config \"%s\" "
|
_sntprintf_0(cmdline, _T("openvpn --log%s \"%s\" --config \"%s\" "
|
||||||
"--setenv IV_GUI_VER \"%S\" --service %s 0 --log%s \"%s\" --auth-retry interact "
|
"--setenv IV_GUI_VER \"%S\" --service %s 0 --auth-retry interact "
|
||||||
"--management %S %hd stdin --management-query-passwords %s"
|
"--management %S %hd stdin --management-query-passwords %s"
|
||||||
"--management-hold"), c->config_file, PACKAGE_STRING, exit_event_name,
|
"--management-hold"),
|
||||||
(o.append_string[0] == '1' ? _T("-append") : _T("")), c->log_path,
|
(o.append_string[0] == '1' ? _T("-append") : _T("")), c->log_path,
|
||||||
|
c->config_file, PACKAGE_STRING, exit_event_name,
|
||||||
inet_ntoa(c->manage.skaddr.sin_addr), ntohs(c->manage.skaddr.sin_port),
|
inet_ntoa(c->manage.skaddr.sin_addr), ntohs(c->manage.skaddr.sin_port),
|
||||||
(o.proxy_source != config ? _T("--management-query-proxy ") : _T("")));
|
(o.proxy_source != config ? _T("--management-query-proxy ") : _T("")));
|
||||||
|
|
||||||
/* Try to open the service pipe */
|
/* Try to open the service pipe */
|
||||||
service = CreateFile(_T("\\\\.\\pipe\\openvpn\\service"),
|
if (!IsUserAdmin())
|
||||||
|
service = CreateFile(_T("\\\\.\\pipe\\openvpn\\service"),
|
||||||
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
|
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
|
|
||||||
if (service != INVALID_HANDLE_VALUE)
|
if (service && service != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
DWORD size = _tcslen(c->config_dir) + _tcslen(options) + sizeof(c->manage.password) + 3;
|
DWORD size = _tcslen(c->config_dir) + _tcslen(options) + sizeof(c->manage.password) + 3;
|
||||||
TCHAR startup_info[1024];
|
TCHAR startup_info[1024];
|
||||||
DWORD dwMode = PIPE_READMODE_MESSAGE;
|
DWORD dwMode = PIPE_READMODE_MESSAGE;
|
||||||
if (!SetNamedPipeHandleState(service, &dwMode, NULL, NULL))
|
if (!SetNamedPipeHandleState(service, &dwMode, NULL, NULL))
|
||||||
{
|
{
|
||||||
// TODO: add error message
|
ShowLocalizedMsg (IDS_ERR_ACCESS_SERVICE_PIPE);
|
||||||
CloseHandle(c->exit_event);
|
CloseHandle(c->exit_event);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -714,7 +761,7 @@ StartOpenVPN(connection_t *c)
|
||||||
|
|
||||||
if (!WriteFile(service, startup_info, size * sizeof (TCHAR), &written, NULL))
|
if (!WriteFile(service, startup_info, size * sizeof (TCHAR), &written, NULL))
|
||||||
{
|
{
|
||||||
// TODO: add error message
|
ShowLocalizedMsg (IDS_ERR_WRITE_SERVICE_PIPE);
|
||||||
CloseHandle(c->exit_event);
|
CloseHandle(c->exit_event);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,22 @@ match(const WIN32_FIND_DATA *find, const TCHAR *ext)
|
||||||
return match_false;
|
return match_false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
CheckReadAccess (const TCHAR *path)
|
||||||
|
{
|
||||||
|
HANDLE h;
|
||||||
|
bool ret = FALSE;
|
||||||
|
|
||||||
|
h = CreateFile (path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
|
||||||
|
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
if ( h != INVALID_HANDLE_VALUE )
|
||||||
|
{
|
||||||
|
ret = TRUE;
|
||||||
|
CloseHandle (h);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ConfigAlreadyExists(TCHAR *newconfig)
|
ConfigAlreadyExists(TCHAR *newconfig)
|
||||||
|
@ -111,6 +127,8 @@ BuildFileList()
|
||||||
HANDLE find_handle;
|
HANDLE find_handle;
|
||||||
TCHAR find_string[MAX_PATH];
|
TCHAR find_string[MAX_PATH];
|
||||||
TCHAR subdir_table[MAX_CONFIG_SUBDIRS][MAX_PATH];
|
TCHAR subdir_table[MAX_CONFIG_SUBDIRS][MAX_PATH];
|
||||||
|
TCHAR fullpath[MAX_PATH];
|
||||||
|
static int warn_no_configs = 1;
|
||||||
int subdirs = 0;
|
int subdirs = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -134,7 +152,9 @@ BuildFileList()
|
||||||
match_t match_type = match(&find_obj, o.ext_string);
|
match_t match_type = match(&find_obj, o.ext_string);
|
||||||
if (match_type == match_file)
|
if (match_type == match_file)
|
||||||
{
|
{
|
||||||
AddConfigFileToList(o.num_configs++, find_obj.cFileName, o.config_dir);
|
_sntprintf_0(fullpath, _T("%s\\%s"), o.config_dir, find_obj.cFileName);
|
||||||
|
if (CheckReadAccess (fullpath))
|
||||||
|
AddConfigFileToList(o.num_configs++, find_obj.cFileName, o.config_dir);
|
||||||
}
|
}
|
||||||
else if (match_type == match_dir)
|
else if (match_type == match_dir)
|
||||||
{
|
{
|
||||||
|
@ -184,4 +204,9 @@ BuildFileList()
|
||||||
|
|
||||||
FindClose(find_handle);
|
FindClose(find_handle);
|
||||||
}
|
}
|
||||||
|
if (o.num_configs == 0 && warn_no_configs)
|
||||||
|
{
|
||||||
|
ShowLocalizedMsg(IDS_NFO_NO_CONFIGS, o.config_dir);
|
||||||
|
warn_no_configs = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,8 @@ typedef enum {
|
||||||
disconnecting,
|
disconnecting,
|
||||||
suspending,
|
suspending,
|
||||||
suspended,
|
suspended,
|
||||||
resuming
|
resuming,
|
||||||
|
timedout
|
||||||
} conn_state_t;
|
} conn_state_t;
|
||||||
|
|
||||||
/* Connections parameters */
|
/* Connections parameters */
|
||||||
|
|
18
registry.c
18
registry.c
|
@ -42,6 +42,7 @@ GetRegistryKeys()
|
||||||
TCHAR windows_dir[MAX_PATH];
|
TCHAR windows_dir[MAX_PATH];
|
||||||
TCHAR temp_path[MAX_PATH];
|
TCHAR temp_path[MAX_PATH];
|
||||||
TCHAR openvpn_path[MAX_PATH];
|
TCHAR openvpn_path[MAX_PATH];
|
||||||
|
TCHAR profile_dir[MAX_PATH];
|
||||||
HKEY regkey;
|
HKEY regkey;
|
||||||
|
|
||||||
if (!GetWindowsDirectory(windows_dir, _countof(windows_dir))) {
|
if (!GetWindowsDirectory(windows_dir, _countof(windows_dir))) {
|
||||||
|
@ -50,6 +51,11 @@ GetRegistryKeys()
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, SHGFP_TYPE_CURRENT, profile_dir) != S_OK) {
|
||||||
|
ShowLocalizedMsg(IDS_ERR_GET_PROFILE_DIR);
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
/* Get path to OpenVPN installation. */
|
/* Get path to OpenVPN installation. */
|
||||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\OpenVPN"), 0, KEY_READ, ®key)
|
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\OpenVPN"), 0, KEY_READ, ®key)
|
||||||
!= ERROR_SUCCESS)
|
!= ERROR_SUCCESS)
|
||||||
|
@ -78,7 +84,7 @@ GetRegistryKeys()
|
||||||
if (!GetRegKey(_T("exe_path"), o.exe_path,
|
if (!GetRegKey(_T("exe_path"), o.exe_path,
|
||||||
temp_path, _countof(o.exe_path))) return(false);
|
temp_path, _countof(o.exe_path))) return(false);
|
||||||
|
|
||||||
_sntprintf_0(temp_path, _T("%slog"), openvpn_path);
|
_sntprintf_0(temp_path, _T("%s\\OpenVPN\\log"), profile_dir);
|
||||||
if (!GetRegKey(_T("log_dir"), o.log_dir,
|
if (!GetRegKey(_T("log_dir"), o.log_dir,
|
||||||
temp_path, _countof(o.log_dir))) return(false);
|
temp_path, _countof(o.log_dir))) return(false);
|
||||||
|
|
||||||
|
@ -178,7 +184,7 @@ int GetRegKey(const TCHAR name[], TCHAR *data, const TCHAR default_data[], DWORD
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
status = RegOpenKeyEx(HKEY_CURRENT_USER,
|
||||||
_T("SOFTWARE\\OpenVPN-GUI"),
|
_T("SOFTWARE\\OpenVPN-GUI"),
|
||||||
0,
|
0,
|
||||||
KEY_READ,
|
KEY_READ,
|
||||||
|
@ -186,7 +192,7 @@ int GetRegKey(const TCHAR name[], TCHAR *data, const TCHAR default_data[], DWORD
|
||||||
|
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
|
if (RegCreateKeyEx(HKEY_CURRENT_USER,
|
||||||
_T("Software\\OpenVPN-GUI"),
|
_T("Software\\OpenVPN-GUI"),
|
||||||
0,
|
0,
|
||||||
_T(""),
|
_T(""),
|
||||||
|
@ -197,7 +203,7 @@ int GetRegKey(const TCHAR name[], TCHAR *data, const TCHAR default_data[], DWORD
|
||||||
&dwDispos) != ERROR_SUCCESS)
|
&dwDispos) != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
/* error creating registry key */
|
/* error creating registry key */
|
||||||
ShowLocalizedMsg(IDS_ERR_CREATE_REG_KEY);
|
ShowLocalizedMsg(IDS_ERR_CREATE_REG_HKCU_KEY, _T("OpenVPN-GUI"));
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,7 +214,7 @@ int GetRegKey(const TCHAR name[], TCHAR *data, const TCHAR default_data[], DWORD
|
||||||
if (status != ERROR_SUCCESS || type != REG_SZ)
|
if (status != ERROR_SUCCESS || type != REG_SZ)
|
||||||
{
|
{
|
||||||
/* key did not exist - set default value */
|
/* key did not exist - set default value */
|
||||||
status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
status = RegOpenKeyEx(HKEY_CURRENT_USER,
|
||||||
_T("SOFTWARE\\OpenVPN-GUI"),
|
_T("SOFTWARE\\OpenVPN-GUI"),
|
||||||
0,
|
0,
|
||||||
KEY_READ | KEY_WRITE,
|
KEY_READ | KEY_WRITE,
|
||||||
|
@ -216,7 +222,7 @@ int GetRegKey(const TCHAR name[], TCHAR *data, const TCHAR default_data[], DWORD
|
||||||
|
|
||||||
if (status != ERROR_SUCCESS) {
|
if (status != ERROR_SUCCESS) {
|
||||||
/* can't open registry for writing */
|
/* can't open registry for writing */
|
||||||
ShowLocalizedMsg(IDS_ERR_OPEN_WRITE_REG);
|
ShowLocalizedMsg(IDS_ERR_WRITE_REGVALUE, _T("OpenVPN-GUI"), name);
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
if(!SetRegistryValue(openvpn_key_write, name, default_data))
|
if(!SetRegistryValue(openvpn_key_write, name, default_data))
|
||||||
|
|
|
@ -49,6 +49,24 @@ BEGIN
|
||||||
PUSHBUTTON "Abbrechen", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Abbrechen", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Benutzer:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Passwort:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "Ok", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Abbrechen", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "Annuller", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Annuller", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Brugernavn:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Password:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Annuller", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -49,6 +49,24 @@ BEGIN
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Cancel", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Username:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Password:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Cancel", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
@ -160,6 +178,7 @@ BEGIN
|
||||||
IDS_TIP_CONNECTED_SINCE "\nConnected since: "
|
IDS_TIP_CONNECTED_SINCE "\nConnected since: "
|
||||||
IDS_TIP_ASSIGNED_IP "\nAssigned IP: %s"
|
IDS_TIP_ASSIGNED_IP "\nAssigned IP: %s"
|
||||||
IDS_MENU_SERVICE "OpenVPN Service"
|
IDS_MENU_SERVICE "OpenVPN Service"
|
||||||
|
IDS_MENU_IMPORT "Import file…"
|
||||||
IDS_MENU_SETTINGS "Settings…"
|
IDS_MENU_SETTINGS "Settings…"
|
||||||
IDS_MENU_CLOSE "Exit"
|
IDS_MENU_CLOSE "Exit"
|
||||||
IDS_MENU_CONNECT "Connect"
|
IDS_MENU_CONNECT "Connect"
|
||||||
|
@ -182,6 +201,7 @@ BEGIN
|
||||||
|
|
||||||
/* OpenVPN */
|
/* OpenVPN */
|
||||||
IDS_ERR_MANY_CONFIGS "OpenVPN GUI does not support more than %d configs. Please contact the author if you have the need for more."
|
IDS_ERR_MANY_CONFIGS "OpenVPN GUI does not support more than %d configs. Please contact the author if you have the need for more."
|
||||||
|
IDS_NFO_NO_CONFIGS "No readable connection profiles (config files) found at %s"
|
||||||
IDS_ERR_ONE_CONN_OLD_VER "You can only have one connection running at the same time when using an older version on OpenVPN than 2.0-beta6."
|
IDS_ERR_ONE_CONN_OLD_VER "You can only have one connection running at the same time when using an older version on OpenVPN than 2.0-beta6."
|
||||||
IDS_ERR_STOP_SERV_OLD_VER "You cannot use OpenVPN GUI to start a connection while the OpenVPN Service is running (with OpenVPN 1.5/1.6). Stop OpenVPN Service first if you want to use OpenVPN GUI."
|
IDS_ERR_STOP_SERV_OLD_VER "You cannot use OpenVPN GUI to start a connection while the OpenVPN Service is running (with OpenVPN 1.5/1.6). Stop OpenVPN Service first if you want to use OpenVPN GUI."
|
||||||
IDS_ERR_CREATE_EVENT "CreateEvent failed on exit event: %s"
|
IDS_ERR_CREATE_EVENT "CreateEvent failed on exit event: %s"
|
||||||
|
@ -226,6 +246,8 @@ BEGIN
|
||||||
IDS_ERR_CONFIG_EXIST "There already exist a config file named '%s'. You cannot " \
|
IDS_ERR_CONFIG_EXIST "There already exist a config file named '%s'. You cannot " \
|
||||||
"have multiple config files with the same name, even if " \
|
"have multiple config files with the same name, even if " \
|
||||||
"they reside in diffrent folders."
|
"they reside in diffrent folders."
|
||||||
|
IDS_NFO_CONN_TIMEOUT "Connecting to management interface failed.\n" \
|
||||||
|
"View log file (%s) for more details."
|
||||||
/* main - Resources */
|
/* main - Resources */
|
||||||
IDS_ERR_OPEN_DEBUG_FILE "Error opening debug file (%s) for output."
|
IDS_ERR_OPEN_DEBUG_FILE "Error opening debug file (%s) for output."
|
||||||
IDS_ERR_CREATE_PATH "Could not create %s path:\n%s"
|
IDS_ERR_CREATE_PATH "Could not create %s path:\n%s"
|
||||||
|
@ -322,9 +344,16 @@ BEGIN
|
||||||
IDS_ERR_OPEN_SCMGR "OpenSCManager failed (%d)"
|
IDS_ERR_OPEN_SCMGR "OpenSCManager failed (%d)"
|
||||||
IDS_ERR_STOP_SERVICE "Failed to stop OpenVPN Service"
|
IDS_ERR_STOP_SERVICE "Failed to stop OpenVPN Service"
|
||||||
IDS_NFO_RESTARTED "OpenVPN Service Restarted."
|
IDS_NFO_RESTARTED "OpenVPN Service Restarted."
|
||||||
|
IDS_ERR_ACCESS_SERVICE_PIPE "Access to service pipe failed."
|
||||||
|
IDS_ERR_WRITE_SERVICE_PIPE "Writing to service pipe failed."
|
||||||
|
IDS_ERR_INSTALL_ISERVICE """OpenVPNServiceInteractive"" is not installed.\n"
|
||||||
|
"Tasks requiring administrative access may not work."
|
||||||
|
IDS_ERR_NOTSTARTED_ISERVICE """OpenVPNServiceInteractive"" is not started.\n"
|
||||||
|
"Tasks requiring administrative access may not work."
|
||||||
|
|
||||||
/* registry */
|
/* registry */
|
||||||
IDS_ERR_GET_WINDOWS_DIR "Error getting Windows Directory."
|
IDS_ERR_GET_WINDOWS_DIR "Error getting Windows Directory."
|
||||||
|
IDS_ERR_GET_PROFILE_DIR "Error getting User Profile Directory."
|
||||||
IDS_ERR_GET_PROGRAM_DIR "Error getting ""Program"" folder name."
|
IDS_ERR_GET_PROGRAM_DIR "Error getting ""Program"" folder name."
|
||||||
IDS_ERR_OPEN_REGISTRY "Error opening registry for reading (HKLM\\SOFTWARE\\OpenVPN).\n " \
|
IDS_ERR_OPEN_REGISTRY "Error opening registry for reading (HKLM\\SOFTWARE\\OpenVPN).\n " \
|
||||||
"OpenVPN is probably not installed"
|
"OpenVPN is probably not installed"
|
||||||
|
@ -338,4 +367,10 @@ BEGIN
|
||||||
"once as Administrator to update the registry."
|
"once as Administrator to update the registry."
|
||||||
IDS_ERR_READ_SET_KEY "Error reading and setting registry key ""%s""."
|
IDS_ERR_READ_SET_KEY "Error reading and setting registry key ""%s""."
|
||||||
IDS_ERR_WRITE_REGVALUE "Error writing registry value ""HKEY_CURRENT_USER\\%s\\%s""."
|
IDS_ERR_WRITE_REGVALUE "Error writing registry value ""HKEY_CURRENT_USER\\%s\\%s""."
|
||||||
|
|
||||||
|
/* importation */
|
||||||
|
IDS_ERR_IMPORT_EXISTS "A config named ""%s"" already exists."
|
||||||
|
IDS_ERR_IMPORT_FAILED "Failed to import file. The following path could not be created.\n\n" \
|
||||||
|
"%s\n\nMake sure you have the right permissions."
|
||||||
|
IDS_NFO_IMPORT_SUCCESS "File imported successfully."
|
||||||
END
|
END
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Cancelar", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Cancelar", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Usuario:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Password:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Cancelar", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "Peruuta", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Peruuta", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Käyttäjänimi:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Salasana:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Peruuta", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Annuler", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Annuler", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Utilisateur:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Mot de passe:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Annuler", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Annulla", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Annulla", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Nome utente:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Password:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Annulla", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -51,6 +51,24 @@ BEGIN
|
||||||
PUSHBUTTON "キャンセル", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "キャンセル", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "ユーザー名:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "パスワード:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "キャンセル", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Annuleren", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Annuleren", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Gebruikersnaam:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Wachtwoord:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Annuleren", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -49,6 +49,24 @@ BEGIN
|
||||||
PUSHBUTTON "Avbryt", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Avbryt", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Brukernavn:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Passord:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Avbryt", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "Anuluj", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Anuluj", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Użytkownik:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Hasło:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Anuluj", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Cancelar", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Cancelar", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Usuário:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Senha:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Cancelar", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
@ -147,6 +165,7 @@ BEGIN
|
||||||
IDS_TIP_CONNECTED_SINCE "\nConectado desde: "
|
IDS_TIP_CONNECTED_SINCE "\nConectado desde: "
|
||||||
IDS_TIP_ASSIGNED_IP "\nIP atribuído: %s"
|
IDS_TIP_ASSIGNED_IP "\nIP atribuído: %s"
|
||||||
IDS_MENU_SERVICE "Serviço OpenVPN"
|
IDS_MENU_SERVICE "Serviço OpenVPN"
|
||||||
|
IDS_MENU_IMPORT "Importar arquivo…"
|
||||||
IDS_MENU_SETTINGS "Configurações…"
|
IDS_MENU_SETTINGS "Configurações…"
|
||||||
IDS_MENU_CLOSE "Sair"
|
IDS_MENU_CLOSE "Sair"
|
||||||
IDS_MENU_CONNECT "Conectar"
|
IDS_MENU_CONNECT "Conectar"
|
||||||
|
@ -324,4 +343,10 @@ BEGIN
|
||||||
"uma vez como Administrador para alterar o registro."
|
"uma vez como Administrador para alterar o registro."
|
||||||
IDS_ERR_READ_SET_KEY "Erro ao ler e ajustar chave de registro ""%s""."
|
IDS_ERR_READ_SET_KEY "Erro ao ler e ajustar chave de registro ""%s""."
|
||||||
IDS_ERR_WRITE_REGVALUE "Erro ao gravar valor da chave de registro ""HKEY_CURRENT_USER\\%s\\%s""."
|
IDS_ERR_WRITE_REGVALUE "Erro ao gravar valor da chave de registro ""HKEY_CURRENT_USER\\%s\\%s""."
|
||||||
|
|
||||||
|
/* importation */
|
||||||
|
IDS_ERR_IMPORT_EXISTS "Já existe uma configuração com o nome ""%s""."
|
||||||
|
IDS_ERR_IMPORT_FAILED "Falha ao importar o arquivo. O seguinte caminho não pôde ser criado.\n\n" \
|
||||||
|
"%s\n\nCertifique-se de que você possui as permissões necessárias."
|
||||||
|
IDS_NFO_IMPORT_SUCCESS "Arquivo importado com sucesso."
|
||||||
END
|
END
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "Отмена", IDCANCEL, 100, 42, 52, 14
|
PUSHBUTTON "Отмена", IDCANCEL, 100, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Имя пользователя:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Пароль:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Отмена", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Avbryt", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Avbryt", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Användarnamn:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Lösenord:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Avbryt", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "Çıkış", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "Çıkış", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Kullanıcı Adı:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Şifre:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "Tamam", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Çıkış", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -48,6 +48,24 @@ BEGIN
|
||||||
PUSHBUTTON "Скасувати", IDCANCEL, 100, 42, 52, 14
|
PUSHBUTTON "Скасувати", IDCANCEL, 100, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||||
|
BEGIN
|
||||||
|
LTEXT "Ім'я користувача:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "Пароль:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "OK", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "Скасувати", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
||||||
PUSHBUTTON "取消", IDCANCEL, 90, 42, 52, 14
|
PUSHBUTTON "取消", IDCANCEL, 90, 42, 52, 14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
/* Auth Username/Password/Challenge Dialog */
|
||||||
|
ID_DLG_AUTH_CHALLENGE DIALOG 6, 18, 160, 96
|
||||||
|
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
|
||||||
|
CAPTION "OpenVPN - User Authentication"
|
||||||
|
FONT 8, "Microsoft Sans Serif"
|
||||||
|
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||||
|
BEGIN
|
||||||
|
LTEXT "使用者名稱:", 0, 6, 9, 50, 10
|
||||||
|
LTEXT "密碼:", 0, 6, 26, 50, 10
|
||||||
|
LTEXT "Response:", 0, 6, 60, 50, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_USER, 60, 6, 94, 12, ES_AUTOHSCROLL
|
||||||
|
EDITTEXT ID_EDT_AUTH_PASS, 60, 23, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
LTEXT "", ID_TXT_AUTH_CHALLENGE, 6, 43, 148, 10
|
||||||
|
EDITTEXT ID_EDT_AUTH_CHALLENGE, 60, 57, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
|
||||||
|
PUSHBUTTON "確認", IDOK, 20, 76, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
|
||||||
|
PUSHBUTTON "取消", IDCANCEL, 90, 76, 52, 14
|
||||||
|
END
|
||||||
|
|
||||||
/* Status Dialog */
|
/* Status Dialog */
|
||||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<security>
|
<security>
|
||||||
<requestedPrivileges>
|
<requestedPrivileges>
|
||||||
<requestedExecutionLevel
|
<requestedExecutionLevel
|
||||||
level="highestAvailable"
|
level="asInvoker"
|
||||||
uiAccess="false"/>
|
uiAccess="false"/>
|
||||||
</requestedPrivileges>
|
</requestedPrivileges>
|
||||||
</security>
|
</security>
|
||||||
|
|
34
service.c
34
service.c
|
@ -241,6 +241,40 @@ int MyReStartService()
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
CheckIServiceStatus()
|
||||||
|
{
|
||||||
|
SC_HANDLE schSCManager;
|
||||||
|
SC_HANDLE schService;
|
||||||
|
SERVICE_STATUS ssStatus;
|
||||||
|
|
||||||
|
// Open a handle to the SC Manager database.
|
||||||
|
schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
|
||||||
|
|
||||||
|
if (NULL == schSCManager)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
schService = OpenService(schSCManager, _T("OpenVPNServiceInteractive"),
|
||||||
|
SERVICE_QUERY_STATUS);
|
||||||
|
if (schService == NULL &&
|
||||||
|
GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)
|
||||||
|
{
|
||||||
|
/* warn that iservice is not installed */
|
||||||
|
ShowLocalizedMsg(IDS_ERR_INSTALL_ISERVICE);
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!QueryServiceStatus(schService, &ssStatus))
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if (ssStatus.dwCurrentState != SERVICE_RUNNING)
|
||||||
|
{
|
||||||
|
/* warn that iservice is not started */
|
||||||
|
ShowLocalizedMsg(IDS_ERR_NOTSTARTED_ISERVICE);
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int CheckServiceStatus()
|
int CheckServiceStatus()
|
||||||
{
|
{
|
||||||
|
|
2
tray.c
2
tray.c
|
@ -91,6 +91,7 @@ CreatePopupMenus()
|
||||||
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AppendMenu(hMenu, MF_STRING, IDM_IMPORT, LoadLocalizedString(IDS_MENU_IMPORT));
|
||||||
AppendMenu(hMenu, MF_STRING ,IDM_SETTINGS, LoadLocalizedString(IDS_MENU_SETTINGS));
|
AppendMenu(hMenu, MF_STRING ,IDM_SETTINGS, LoadLocalizedString(IDS_MENU_SETTINGS));
|
||||||
AppendMenu(hMenu, MF_STRING ,IDM_CLOSE, LoadLocalizedString(IDS_MENU_CLOSE));
|
AppendMenu(hMenu, MF_STRING ,IDM_CLOSE, LoadLocalizedString(IDS_MENU_CLOSE));
|
||||||
|
|
||||||
|
@ -116,6 +117,7 @@ CreatePopupMenus()
|
||||||
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AppendMenu(hMenu, MF_STRING, IDM_IMPORT, LoadLocalizedString(IDS_MENU_IMPORT));
|
||||||
AppendMenu(hMenu, MF_STRING, IDM_SETTINGS, LoadLocalizedString(IDS_MENU_SETTINGS));
|
AppendMenu(hMenu, MF_STRING, IDM_SETTINGS, LoadLocalizedString(IDS_MENU_SETTINGS));
|
||||||
AppendMenu(hMenu, MF_STRING, IDM_CLOSE, LoadLocalizedString(IDS_MENU_CLOSE));
|
AppendMenu(hMenu, MF_STRING, IDM_CLOSE, LoadLocalizedString(IDS_MENU_CLOSE));
|
||||||
|
|
||||||
|
|
1
tray.h
1
tray.h
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
#define IDM_SETTINGS 221
|
#define IDM_SETTINGS 221
|
||||||
#define IDM_CLOSE 223
|
#define IDM_CLOSE 223
|
||||||
|
#define IDM_IMPORT 224
|
||||||
|
|
||||||
#define IDM_CONNECTMENU 300
|
#define IDM_CONNECTMENU 300
|
||||||
#define IDM_DISCONNECTMENU (MAX_CONFIGS + IDM_CONNECTMENU)
|
#define IDM_DISCONNECTMENU (MAX_CONFIGS + IDM_CONNECTMENU)
|
||||||
|
|
Loading…
Reference in New Issue