1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2025-09-26 05:09:19 +03:00

v4.06-9430-beta

This commit is contained in:
dnobori
2014-03-20 05:45:05 +09:00
parent dcd9b94381
commit cf2a6a42bc
557 changed files with 5422 additions and 637 deletions

View File

@ -14,7 +14,6 @@
// Author: Daiyuu Nobori
// Comments: Tetsuo Sugiyama, Ph.D.
//
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// version 2 as published by the Free Software Foundation.
@ -85,6 +84,13 @@
// http://www.softether.org/ and ask your question on the users forum.
//
// Thank you for your cooperation.
//
//
// NO MEMORY OR RESOURCE LEAKS
// ---------------------------
//
// The memory-leaks and resource-leaks verification under the stress
// test has been passed before release this source code.
// SM.c
@ -702,6 +708,19 @@ UINT SmDDnsDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
}
break;
case B_HINT2:
// Hint2 (for DDNS key)
{
wchar_t tmp[MAX_SIZE * 4];
wchar_t *keystr;
keystr = GetText(hWnd, E_KEY);
UniFormat(tmp, sizeof(tmp), _UU("SM_DDNS_KEY_MSG"), keystr);
Free(keystr);
OnceMsg(hWnd, _UU("SM_DDNS_KEY_TITLE"), tmp, false, ICO_DISPLAY);
}
break;
case B_PROXY:
// Proxy settings
if (true)
@ -835,8 +854,45 @@ UINT SmDDnsDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
return 0;
}
// Get the ddns key from the server configuration file
static UINT SmDdnsGetKey(char *key, SM_DDNS *d){
RPC *rpc = d->s->Rpc;
RPC_CONFIG config;
UINT err;
BUF *buf;
FOLDER *root, *ddnsfolder;
// Validate arguments
if(d == NULL || d->s == NULL || key == NULL){
return ERR_INTERNAL_ERROR;
}
Zero(&config, sizeof(config));
err = ScGetConfig(d->s->Rpc, &config);
if(err != ERR_NO_ERROR){
return err;
}
buf = NewBufFromMemory(config.FileData, StrLen(config.FileData));
FreeRpcConfig(&config);
root = CfgBufTextToFolder(buf);
FreeBuf(buf);
ddnsfolder = CfgGetFolder(root, "DDnsClient");
err = CfgGetByte(ddnsfolder, "Key", key, 20);
CfgDeleteFolder(root);
return (err == 20) ? ERR_NO_ERROR : ERR_INTERNAL_ERROR;
}
void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d)
{
char key[20];
char encodedkey[20 * 4 + 32];
// Validate arguments
if (hWnd == NULL || d == NULL)
{
@ -854,6 +910,7 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d)
DlgFont(hWnd, S_STATUS4, 0, true);
DlgFont(hWnd, S_STATUS5, 0, true);
DlgFont(hWnd, S_STATUS6, 0, true);
DlgFont(hWnd, S_STATUS8, 0, true);
SetFont(hWnd, S_SUFFIX, GetFont("Verdana", 10, false, false, false, false));
SetFont(hWnd, E_NEWHOST, GetFont("Verdana", 10, false, false, false, false));
@ -861,6 +918,7 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d)
SetFont(hWnd, E_HOST, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false));
SetFont(hWnd, E_IPV4, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false));
SetFont(hWnd, E_IPV6, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false));
SetFont(hWnd, E_KEY, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 8, false, false, false, false));
DlgFont(hWnd, IDOK, 0, true);
@ -871,6 +929,13 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d)
Hide(hWnd, B_PROXY);
if(SmDdnsGetKey(key, d) == ERR_NO_ERROR){
encodedkey[ B64_Encode(encodedkey, key, 20) ] = 0;
SetTextA(hWnd, E_KEY, encodedkey);
}else{
SetText(hWnd, E_KEY, _UU("SM_DDNS_KEY_ERR"));
}
SmDDnsRefresh(hWnd, d);
}
@ -878,6 +943,7 @@ void SmDDnsRefresh(HWND hWnd, SM_DDNS *d)
{
DDNS_CLIENT_STATUS st;
INTERNET_SETTING t;
// Validate arguments
if (hWnd == NULL || d == NULL)
{