mirror of https://github.com/OpenVPN/openvpn-gui
Adding static-challenge support
parent
c3e2584674
commit
fe5a1c9b71
|
@ -98,7 +98,8 @@ openvpn_gui_LDADD = \
|
|||
-lws2_32 \
|
||||
-lcomctl32 \
|
||||
-lwinhttp \
|
||||
-lwtsapi32
|
||||
-lwtsapi32 \
|
||||
-lcrypt32
|
||||
|
||||
openvpn-gui-res.o: $(openvpn_gui_RESOURCES) $(srcdir)/openvpn-gui-res.h
|
||||
$(RCCOMPILE) -i $< -o $@
|
||||
|
|
107
misc.c
107
misc.c
|
@ -24,6 +24,7 @@
|
|||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include <wincrypt.h>
|
||||
#include <tchar.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -33,6 +34,35 @@
|
|||
#include "manage.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.
|
||||
* 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
|
||||
* creating missing parts of the path.
|
||||
|
|
1
misc.h
1
misc.h
|
@ -23,6 +23,7 @@
|
|||
#define MISC_H
|
||||
|
||||
BOOL ManagementCommandFromInput(connection_t *, LPCSTR, HWND, int);
|
||||
BOOL ManagementCommandFromInputBase64(connection_t *, LPCSTR, HWND, int, int);
|
||||
|
||||
BOOL EnsureDirExists(LPTSTR);
|
||||
|
||||
|
|
|
@ -56,6 +56,11 @@
|
|||
#define ID_EDT_AUTH_USER 181
|
||||
#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 */
|
||||
#define ID_DLG_PROXY 200
|
||||
#define ID_RB_PROXY_OPENVPN 210
|
||||
|
|
60
openvpn.c
60
openvpn.c
|
@ -52,6 +52,12 @@ extern options_t o;
|
|||
|
||||
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
|
||||
* 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
|
||||
UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
connection_t *c;
|
||||
auth_param_t *param;
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
/* Set connection for this dialog and show it */
|
||||
c = (connection_t *) lParam;
|
||||
SetProp(hwndDlg, cfgProp, (HANDLE) c);
|
||||
if (c->state == resuming)
|
||||
param = (auth_param_t *) lParam;
|
||||
SetProp(hwndDlg, cfgProp, (HANDLE) param);
|
||||
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);
|
||||
else
|
||||
SetForegroundWindow(hwndDlg);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
||||
param = (auth_param_t *) GetProp(hwndDlg, cfgProp);
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case ID_EDT_AUTH_USER:
|
||||
|
@ -234,14 +254,17 @@ UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
|
||||
case IDOK:
|
||||
ManagementCommandFromInput(c, "username \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_USER);
|
||||
ManagementCommandFromInput(c, "password \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_PASS);
|
||||
ManagementCommandFromInput(param->c, "username \"Auth\" \"%s\"", hwndDlg, ID_EDT_AUTH_USER);
|
||||
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));
|
||||
return TRUE;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDialog(hwndDlg, LOWORD(wParam));
|
||||
StopOpenVPN(c);
|
||||
StopOpenVPN(param->c);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
|
@ -251,6 +274,9 @@ UserAuthDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return TRUE;
|
||||
|
||||
case WM_NCDESTROY:
|
||||
param = (auth_param_t *) GetProp(hwndDlg, cfgProp);
|
||||
if (param->challenge_str) free(param->challenge_str);
|
||||
free(param);
|
||||
RemoveProp(hwndDlg, cfgProp);
|
||||
break;
|
||||
}
|
||||
|
@ -317,7 +343,21 @@ OnPassword(connection_t *c, char *msg)
|
|||
|
||||
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'"))
|
||||
{
|
||||
|
|
|
@ -49,6 +49,24 @@ BEGIN
|
|||
PUSHBUTTON "Abbrechen", IDCANCEL, 90, 42, 52, 14
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||
|
|
|
@ -50,6 +50,24 @@ BEGIN
|
|||
PUSHBUTTON "Отмена", IDCANCEL, 100, 42, 52, 14
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
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
|
||||
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 */
|
||||
ID_DLG_STATUS DIALOG 6, 18, 380, 210
|
||||
STYLE WS_SIZEBOX | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | DS_CENTER
|
||||
|
|
Loading…
Reference in New Issue