mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-07-07 16:25:01 +03:00
v4.19-9599-beta
This commit is contained in:
@ -138,7 +138,7 @@
|
||||
#define CEDAR_VER 419
|
||||
|
||||
// Build Number
|
||||
#define CEDAR_BUILD 9582
|
||||
#define CEDAR_BUILD 9599
|
||||
|
||||
// Beta number
|
||||
//#define BETA_NUMBER 3
|
||||
@ -159,10 +159,10 @@
|
||||
// Specifies the build date
|
||||
#define BUILD_DATE_Y 2015
|
||||
#define BUILD_DATE_M 10
|
||||
#define BUILD_DATE_D 6
|
||||
#define BUILD_DATE_HO 14
|
||||
#define BUILD_DATE_MI 56
|
||||
#define BUILD_DATE_SE 30
|
||||
#define BUILD_DATE_D 19
|
||||
#define BUILD_DATE_HO 20
|
||||
#define BUILD_DATE_MI 9
|
||||
#define BUILD_DATE_SE 5
|
||||
|
||||
// Tolerable time difference
|
||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||
|
@ -2392,10 +2392,12 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
LIST *o;
|
||||
UINT ret = ERR_NO_ERROR;
|
||||
UINT port;
|
||||
bool nohup;
|
||||
TTS *tts;
|
||||
PARAM args[] =
|
||||
{
|
||||
{"[port]", NULL, NULL, NULL, NULL},
|
||||
{"NOHUP", NULL, NULL, NULL, NULL},
|
||||
};
|
||||
|
||||
// Get the parameter list
|
||||
@ -2411,8 +2413,18 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
port = TRAFFIC_DEFAULT_PORT;
|
||||
}
|
||||
|
||||
nohup = GetParamYes(o, "nohup");
|
||||
|
||||
tts = NewTts(port, c, PtTrafficPrintProc);
|
||||
|
||||
if (nohup)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
SleepThread(10000);
|
||||
}
|
||||
}
|
||||
|
||||
c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
|
||||
|
||||
Free(c->ReadLine(c, L"", true));
|
||||
@ -14974,6 +14986,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||
};
|
||||
|
||||
// If virtual HUB is not selected, it's an error
|
||||
@ -15017,6 +15030,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
a->Delay = GetParamInt(o, "DELAY");
|
||||
a->Jitter = GetParamInt(o, "JITTER");
|
||||
a->Loss = GetParamInt(o, "LOSS");
|
||||
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||
|
||||
// RPC call
|
||||
ret = ScAddAccess(ps->Rpc, &t);
|
||||
@ -15178,6 +15192,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||
};
|
||||
|
||||
// If virtual HUB is not selected, it's an error
|
||||
@ -15233,6 +15248,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
a->Delay = GetParamInt(o, "DELAY");
|
||||
a->Jitter = GetParamInt(o, "JITTER");
|
||||
a->Loss = GetParamInt(o, "LOSS");
|
||||
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||
|
||||
// RPC call
|
||||
ret = ScAddAccess(ps->Rpc, &t);
|
||||
|
@ -126,15 +126,57 @@
|
||||
#include <Mayaqua/Mayaqua.h>
|
||||
#include <Cedar/Cedar.h>
|
||||
|
||||
// Load the drivers hive
|
||||
bool SuLoadDriversHive()
|
||||
{
|
||||
wchar_t config_dir[MAX_PATH];
|
||||
wchar_t filename[MAX_PATH];
|
||||
if (MsIsWindows10() == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
MsEnablePrivilege(SE_RESTORE_NAME, true);
|
||||
MsEnablePrivilege(SE_BACKUP_NAME, true);
|
||||
|
||||
CombinePathW(config_dir, sizeof(config_dir), MsGetSystem32DirW(), L"config");
|
||||
CombinePathW(filename, sizeof(filename), config_dir, L"DRIVERS");
|
||||
|
||||
return MsRegLoadHive(REG_LOCAL_MACHINE, L"DRIVERS", filename);
|
||||
}
|
||||
|
||||
// Unload the drivers hive
|
||||
bool SuUnloadDriversHive()
|
||||
{
|
||||
// todo: always failed.
|
||||
if (MsIsWindows10() == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return MsRegUnloadHive(REG_LOCAL_MACHINE, L"DRIVERS");
|
||||
}
|
||||
|
||||
// Delete garbage inf files
|
||||
void SuDeleteGarbageInfs()
|
||||
{
|
||||
void *wow;
|
||||
bool load_hive = false;
|
||||
Debug("SuDeleteGarbageInfs()\n");
|
||||
|
||||
wow = MsDisableWow64FileSystemRedirection();
|
||||
|
||||
load_hive = SuLoadDriversHive();
|
||||
Debug("SuLoadDriversHive: %u\n", load_hive);
|
||||
|
||||
SuDeleteGarbageInfsInner();
|
||||
|
||||
/*
|
||||
if (load_hive)
|
||||
{
|
||||
Debug("SuUnloadDriversHive: %u\n", SuUnloadDriversHive());
|
||||
}*/
|
||||
|
||||
MsRestoreWow64FileSystemRedirection(wow);
|
||||
}
|
||||
void SuDeleteGarbageInfsInner()
|
||||
@ -343,7 +385,7 @@ bool SuInstallDriverInner(bool force)
|
||||
Debug("InstallNdisProtocolDriver Ok.\n");
|
||||
|
||||
// Copy manually because there are cases where .sys file is not copied successfully for some reason
|
||||
FileCopyW(src_sys, sys_fullpath);
|
||||
Debug("SuCopySysFile from %S to %s: ret = %u\n", src_sys, sys_fullpath, SuCopySysFile(src_sys, sys_fullpath));
|
||||
|
||||
ret = true;
|
||||
|
||||
@ -372,6 +414,64 @@ bool SuInstallDriverInner(bool force)
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Copy a sys file
|
||||
bool SuCopySysFile(wchar_t *src, wchar_t *dst)
|
||||
{
|
||||
wchar_t dst_rename[MAX_PATH];
|
||||
UINT i;
|
||||
if (src == NULL || dst == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (FileCopyW(src, dst))
|
||||
{
|
||||
for (i = 1;i <= 100;i++)
|
||||
{
|
||||
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||
|
||||
FileDeleteW(dst_rename);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
for (i = 1;;i++)
|
||||
{
|
||||
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||
|
||||
if (IsFileExistsW(dst_rename) == false)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (i >= 100)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (MoveFileW(dst, dst_rename) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (FileCopyW(src, dst))
|
||||
{
|
||||
for (i = 1;i <= 100;i++)
|
||||
{
|
||||
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||
|
||||
FileDeleteW(dst_rename);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
MoveFileW(dst_rename, dst);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get whether the current OS is supported by SeLow
|
||||
bool SuIsSupportedOs(bool on_install)
|
||||
{
|
||||
|
@ -173,9 +173,12 @@ int SuCmpAdaterList(void *p1, void *p2);
|
||||
bool SuInstallDriver(bool force);
|
||||
bool SuInstallDriverInner(bool force);
|
||||
bool SuIsSupportedOs(bool on_install);
|
||||
bool SuCopySysFile(wchar_t *src, wchar_t *dst);
|
||||
|
||||
void SuDeleteGarbageInfs();
|
||||
void SuDeleteGarbageInfsInner();
|
||||
bool SuLoadDriversHive();
|
||||
bool SuUnloadDriversHive();
|
||||
|
||||
#endif // SELOWUSER_H
|
||||
|
||||
|
Reference in New Issue
Block a user