mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2026-04-20 05:49:26 +03:00
Merge branch 'master' into ppp-ipv6
This commit is contained in:
+57
-155
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Account.c
|
||||
@@ -159,18 +53,6 @@ POLICY_ITEM policy_item[] =
|
||||
{37, true, true, 1, 4095, 0, "POL_INT_VLAN"}, // VLanId
|
||||
};
|
||||
|
||||
// Normalize policy name
|
||||
char *NormalizePolicyName(char *name)
|
||||
{
|
||||
// Validate arguments
|
||||
if (name == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return PolicyIdToStr(PolicyStrToId(name));
|
||||
}
|
||||
|
||||
// Format policy value
|
||||
void FormatPolicyValue(wchar_t *str, UINT size, UINT id, UINT value)
|
||||
{
|
||||
@@ -348,6 +230,7 @@ UINT PolicyNum()
|
||||
// Check the name is valid for account name
|
||||
bool IsUserName(char *name)
|
||||
{
|
||||
UINT i, len;
|
||||
char tmp[MAX_SIZE];
|
||||
// Validate arguments
|
||||
if (name == NULL)
|
||||
@@ -360,7 +243,8 @@ bool IsUserName(char *name)
|
||||
|
||||
Trim(name);
|
||||
|
||||
if (StrLen(name) == 0)
|
||||
len = StrLen(name);
|
||||
if (len == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -370,14 +254,12 @@ bool IsUserName(char *name)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (IsSafeStr(name) == false)
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (StrCmpi(name, "link") == 0)
|
||||
{
|
||||
return false;
|
||||
if (IsSafeChar(name[i]) == false && name[i] != '@')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (StrCmpi(name, LINK_USER_NAME) == 0)
|
||||
@@ -519,32 +401,6 @@ void SetUserPolicy(USER *u, POLICY *policy)
|
||||
Unlock(u->lock);
|
||||
}
|
||||
|
||||
// Get user policy
|
||||
POLICY *GetUserPolicy(USER *u)
|
||||
{
|
||||
POLICY *ret;
|
||||
// Validate arguments
|
||||
if (u == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Lock(u->lock);
|
||||
{
|
||||
if (u->Policy == NULL)
|
||||
{
|
||||
ret = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = ClonePolicy(u->Policy);
|
||||
}
|
||||
}
|
||||
Unlock(u->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Set group policy
|
||||
void SetGroupPolicy(USERGROUP *g, POLICY *policy)
|
||||
{
|
||||
@@ -701,7 +557,7 @@ void HashPassword(void *dst, char *username, char *password)
|
||||
StrUpper(username_upper);
|
||||
WriteBuf(b, password, StrLen(password));
|
||||
WriteBuf(b, username_upper, StrLen(username_upper));
|
||||
Hash(dst, b->Buf, b->Size, true);
|
||||
Sha0(dst, b->Buf, b->Size);
|
||||
|
||||
FreeBuf(b);
|
||||
Free(username_upper);
|
||||
@@ -1180,7 +1036,7 @@ void CleanupUser(USER *u)
|
||||
ReleaseGroup(u->Group);
|
||||
}
|
||||
|
||||
// Free authntication data
|
||||
// Free authentication data
|
||||
FreeAuthData(u->AuthType, u->AuthData);
|
||||
|
||||
if (u->Policy)
|
||||
@@ -1194,7 +1050,7 @@ void CleanupUser(USER *u)
|
||||
Free(u);
|
||||
}
|
||||
|
||||
// Free authntication data
|
||||
// Free authentication data
|
||||
void FreeAuthData(UINT authtype, void *authdata)
|
||||
{
|
||||
AUTHPASSWORD *pw = (AUTHPASSWORD *)authdata;
|
||||
@@ -1416,3 +1272,49 @@ int CompareUserName(void *p1, void *p2)
|
||||
return StrCmpi(u1->Name, u2->Name);
|
||||
}
|
||||
|
||||
// Get the MAC address from the user's note string
|
||||
bool GetUserMacAddressFromUserNote(UCHAR *mac, wchar_t *note)
|
||||
{
|
||||
bool ret = false;
|
||||
UINT i;
|
||||
|
||||
Zero(mac, 6);
|
||||
if (mac == NULL || note == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
i = UniSearchStrEx(note, USER_MAC_STR_PREFIX, 0, false);
|
||||
if (i != INFINITE)
|
||||
{
|
||||
wchar_t *macstr_start = ¬e[i + UniStrLen(USER_MAC_STR_PREFIX)];
|
||||
wchar_t macstr2[MAX_SIZE];
|
||||
UNI_TOKEN_LIST *tokens;
|
||||
|
||||
UniStrCpy(macstr2, sizeof(macstr2), macstr_start);
|
||||
|
||||
UniTrim(macstr2);
|
||||
|
||||
tokens = UniParseToken(macstr2, L" ,/()[].");
|
||||
if (tokens != NULL)
|
||||
{
|
||||
if (tokens->NumTokens >= 1)
|
||||
{
|
||||
wchar_t *macstr = tokens->Token[0];
|
||||
|
||||
if (UniIsEmptyStr(macstr) == false)
|
||||
{
|
||||
char macstr_a[MAX_SIZE];
|
||||
|
||||
UniToStr(macstr_a, sizeof(macstr_a), macstr);
|
||||
|
||||
ret = StrToMac(mac, macstr_a);
|
||||
}
|
||||
}
|
||||
|
||||
UniFreeToken(tokens);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Account.h
|
||||
@@ -114,6 +8,8 @@
|
||||
#ifndef ACCOUNT_H
|
||||
#define ACCOUNT_H
|
||||
|
||||
#define USER_MAC_STR_PREFIX L"MAC:"
|
||||
|
||||
// Policy item
|
||||
struct POLICY_ITEM
|
||||
{
|
||||
@@ -295,7 +191,6 @@ POLICY *GetDefaultPolicy();
|
||||
POLICY *ClonePolicy(POLICY *policy);
|
||||
void SetUserPolicy(USER *u, POLICY *policy);
|
||||
void OverwritePolicy(POLICY **target, POLICY *p);
|
||||
POLICY *GetUserPolicy(USER *u);
|
||||
void SetGroupPolicy(USERGROUP *g, POLICY *policy);
|
||||
POLICY *GetGroupPolicy(USERGROUP *g);
|
||||
wchar_t *GetPolicyTitle(UINT id);
|
||||
@@ -309,8 +204,7 @@ char *PolicyIdToStr(UINT i);
|
||||
POLICY_ITEM *GetPolicyItem(UINT id);
|
||||
void GetPolicyValueRangeStr(wchar_t *str, UINT size, UINT id);
|
||||
void FormatPolicyValue(wchar_t *str, UINT size, UINT id, UINT value);
|
||||
char *NormalizePolicyName(char *name);
|
||||
|
||||
bool GetUserMacAddressFromUserNote(UCHAR *mac, wchar_t *note);
|
||||
|
||||
#endif // ACCOUNT_H
|
||||
|
||||
|
||||
+1427
-258
File diff suppressed because it is too large
Load Diff
+40
-111
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Admin.h
|
||||
@@ -138,6 +32,8 @@ struct ADMIN
|
||||
LIST *LogFileList; // Accessible log file list
|
||||
UINT ClientBuild; // Build number of the client
|
||||
RPC_WINVER ClientWinVer; // Windows version of client
|
||||
UINT MaxJsonRpcRecvSize; // Max JSON-RPC Receive Size
|
||||
char dummy1[MAX_HUBNAME_LEN + 1]; // hubname buffer (dummy)
|
||||
};
|
||||
|
||||
// Test
|
||||
@@ -172,7 +68,7 @@ struct RPC_SERVER_STATUS
|
||||
UINT NumTcpConnectionsLocal; // Number of Local TCP connections
|
||||
UINT NumTcpConnectionsRemote; // Number of remote TCP connections
|
||||
UINT NumHubTotal; // Total number of HUBs
|
||||
UINT NumHubStandalone; // Nymber of stand-alone HUB
|
||||
UINT NumHubStandalone; // Number of stand-alone HUB
|
||||
UINT NumHubStatic; // Number of static HUBs
|
||||
UINT NumHubDynamic; // Number of Dynamic HUBs
|
||||
UINT NumSessionsTotal; // Total number of sessions
|
||||
@@ -224,7 +120,8 @@ struct RPC_INT
|
||||
// Set Password
|
||||
struct RPC_SET_PASSWORD
|
||||
{
|
||||
UCHAR HashedPassword[SHA1_SIZE]; // Hashed password
|
||||
UCHAR HashedPassword[SHA1_SIZE]; // Hashed password (for traditional RPC)
|
||||
char PlainTextPassword[MAX_SIZE]; // Plaintext password (for JSON-RPC)
|
||||
};
|
||||
|
||||
// Server farm configuration *
|
||||
@@ -237,6 +134,7 @@ struct RPC_FARM
|
||||
char ControllerName[MAX_HOST_NAME_LEN + 1]; // Controller name
|
||||
UINT ControllerPort; // Controller port
|
||||
UCHAR MemberPassword[SHA1_SIZE]; // Member password
|
||||
char MemberPasswordPlaintext[MAX_SIZE]; // Member password (plaintext)
|
||||
UINT Weight; // Performance ratio
|
||||
bool ControllerOnly; // Only controller function
|
||||
};
|
||||
@@ -342,6 +240,7 @@ struct RPC_CREATE_HUB
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // HUB Name
|
||||
UCHAR HashedPassword[SHA1_SIZE]; // Administrative password
|
||||
UCHAR SecurePassword[SHA1_SIZE]; // Administrator password
|
||||
char AdminPasswordPlainText[MAX_SIZE]; // Password (plaintext)
|
||||
bool Online; // Online flag
|
||||
RPC_HUB_OPTION HubOption; // HUB options
|
||||
UINT HubType; // Type of HUB
|
||||
@@ -659,6 +558,7 @@ struct RPC_ENUM_SESSION_ITEM
|
||||
char RemoteHostname[MAX_HOST_NAME_LEN + 1]; // Remote server name
|
||||
char Username[MAX_USERNAME_LEN + 1]; // User name
|
||||
UINT Ip; // IP address (IPv4)
|
||||
IP ClientIP; // IP address (IPv4 / IPv6)
|
||||
char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
|
||||
UINT MaxNumTcp; // Maximum number of TCP connections
|
||||
UINT CurrentNumTcp; // Number of currentl TCP connections
|
||||
@@ -675,6 +575,8 @@ struct RPC_ENUM_SESSION_ITEM
|
||||
bool IsDormantEnabled; // Is the dormant state enabled
|
||||
bool IsDormant; // Is in the dormant state
|
||||
UINT64 LastCommDormant; // Last comm interval in the dormant state
|
||||
UINT64 CreatedTime; // Creation date and time
|
||||
UINT64 LastCommTime; // Last communication date and time
|
||||
};
|
||||
|
||||
// Disconnect the session
|
||||
@@ -711,8 +613,9 @@ struct RPC_ENUM_IP_TABLE_ITEM
|
||||
{
|
||||
UINT Key; // Key
|
||||
char SessionName[MAX_SESSION_NAME_LEN + 1]; // Session name
|
||||
UINT Ip; // IP address
|
||||
UINT Ip; // IPv4 address
|
||||
IP IpV6; // IPv6 address
|
||||
IP IpAddress; // IPv4 / IPv6 Address
|
||||
bool DhcpAllocated; // Assigned by the DHCP
|
||||
UINT64 CreatedTime; // Creation date and time
|
||||
UINT64 UpdatedTime; // Updating date
|
||||
@@ -998,6 +901,10 @@ struct RPC_AZURE_STATUS
|
||||
bool IsConnected; // Whether it's connected
|
||||
};
|
||||
|
||||
// Constants
|
||||
#define ADMIN_RPC_MAX_POST_SIZE_BY_SERVER_ADMIN MAX_PACK_SIZE
|
||||
#define ADMIN_RPC_MAX_POST_SIZE_BY_HUB_ADMIN (8 * 1024 * 1024)
|
||||
|
||||
|
||||
// Function prototype
|
||||
UINT AdminAccept(CONNECTION *c, PACK *p);
|
||||
@@ -1022,6 +929,26 @@ BUF *DownloadFileFromServer(RPC *r, char *server_name, char *filepath, UINT tota
|
||||
bool CheckAdminSourceAddress(SOCK *sock, char *hubname);
|
||||
void SiEnumSessionMain(SERVER *s, RPC_ENUM_SESSION *t);
|
||||
bool SiIsEmptyPassword(void *hash_password);
|
||||
void JsonRpcProcPost(CONNECTION *c, SOCK *s, HTTP_HEADER *h, UINT post_data_size);
|
||||
void JsonRpcProcGet(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
|
||||
void JsonRpcProcOptions(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
|
||||
JSON_VALUE *JsonRpcProcRequestObject(ADMIN *admin, CONNECTION *c, SOCK *s, JSON_VALUE *json_req, char *method_name);
|
||||
JSON_VALUE *JsonRpcNewError(int code, wchar_t *message);
|
||||
JSON_VALUE *JsonRpcNewResponse(PACK *p);
|
||||
bool HttpParseBasicAuthHeader(HTTP_HEADER *h, char *username, UINT username_size, char *password, UINT password_size);
|
||||
ADMIN *JsonRpcAuthLogin(CEDAR *c, SOCK *sock, HTTP_HEADER *h);
|
||||
JSON_VALUE *QueryStringToJsonListValue(char *qs);
|
||||
JSON_VALUE *ConstructDummyJsonRpcRequest(char *method_name, JSON_VALUE *p);
|
||||
void AdminWebProcPost(CONNECTION *c, SOCK *s, HTTP_HEADER *h, UINT post_data_size, char *url_target);
|
||||
void AdminWebProcGet(CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_target);
|
||||
bool AdminWebHandleFileRequest(ADMIN *a, CONNECTION *c, SOCK *s, HTTP_HEADER *h, char *url_src, char *query_string, char *virtual_root_dir, char *physical_root_dir);
|
||||
BUF *AdminWebProcessServerSideInclude(BUF *src_txt, char *filename, UINT depth);
|
||||
bool AdminWebSendBody(SOCK *s, UINT status_code, char *status_string, UCHAR *data, UINT data_size, char *content_type, char *add_header_name, char *add_header_value, HTTP_HEADER *request_headers);
|
||||
bool AdminWebSend404Error(SOCK *s, HTTP_HEADER *request_headers);
|
||||
bool AdminWebSend302Redirect(SOCK *s, char *url, char *query_string, HTTP_HEADER *request_headers);
|
||||
BUF *AdminWebTryFindAndReadFile(char *vroot, char *proot, char *url, char *ret_filename, UINT ret_filename_size, bool *is_index_html);
|
||||
BUF *AdminWebTryOneFile(char *filename, char *ret_filename, UINT ret_filename_size);
|
||||
bool AdminWebSendUnauthorized(SOCK *s, HTTP_HEADER *http_request_headers);
|
||||
|
||||
UINT StTest(ADMIN *a, RPC_TEST *t);
|
||||
UINT StGetServerInfo(ADMIN *a, RPC_SERVER_INFO *t);
|
||||
@@ -1038,6 +965,7 @@ UINT StEnumFarmMember(ADMIN *a, RPC_ENUM_FARM *t);
|
||||
UINT StGetFarmConnectionStatus(ADMIN *a, RPC_FARM_CONNECTION_STATUS *t);
|
||||
UINT StSetServerCert(ADMIN *a, RPC_KEY_PAIR *t);
|
||||
UINT StGetServerCert(ADMIN *a, RPC_KEY_PAIR *t);
|
||||
UINT StGetServerCipherList(ADMIN *a, RPC_STR *t);
|
||||
UINT StGetServerCipher(ADMIN *a, RPC_STR *t);
|
||||
UINT StSetServerCipher(ADMIN *a, RPC_STR *t);
|
||||
UINT StCreateHub(ADMIN *a, RPC_CREATE_HUB *t);
|
||||
@@ -1181,6 +1109,7 @@ UINT ScEnumFarmMember(RPC *r, RPC_ENUM_FARM *t);
|
||||
UINT ScGetFarmConnectionStatus(RPC *r, RPC_FARM_CONNECTION_STATUS *t);
|
||||
UINT ScSetServerCert(RPC *r, RPC_KEY_PAIR *t);
|
||||
UINT ScGetServerCert(RPC *r, RPC_KEY_PAIR *t);
|
||||
UINT ScGetServerCipherList(RPC *r, RPC_STR *t);
|
||||
UINT ScGetServerCipher(RPC *r, RPC_STR *t);
|
||||
UINT ScSetServerCipher(RPC *r, RPC_STR *t);
|
||||
UINT ScCreateHub(RPC *r, RPC_CREATE_HUB *t);
|
||||
@@ -1355,7 +1284,7 @@ void InRpcDeleteHub(RPC_DELETE_HUB *t, PACK *p);
|
||||
void OutRpcDeleteHub(PACK *p, RPC_DELETE_HUB *t);
|
||||
void InRpcEnumConnection(RPC_ENUM_CONNECTION *t, PACK *p);
|
||||
void OutRpcEnumConnection(PACK *p, RPC_ENUM_CONNECTION *t);
|
||||
void FreeRpcEnumConnetion(RPC_ENUM_CONNECTION *t);
|
||||
void FreeRpcEnumConnection(RPC_ENUM_CONNECTION *t);
|
||||
void InRpcDisconnectConnection(RPC_DISCONNECT_CONNECTION *t, PACK *p);
|
||||
void OutRpcDisconnectConnection(PACK *p, RPC_DISCONNECT_CONNECTION *t);
|
||||
void InRpcConnectionInfo(RPC_CONNECTION_INFO *t, PACK *p);
|
||||
@@ -1395,7 +1324,7 @@ void OutRpcAccess(PACK *p, ACCESS *a);
|
||||
void InRpcEnumAccessList(RPC_ENUM_ACCESS_LIST *a, PACK *p);
|
||||
void OutRpcEnumAccessList(PACK *p, RPC_ENUM_ACCESS_LIST *a);
|
||||
void FreeRpcEnumAccessList(RPC_ENUM_ACCESS_LIST *a);
|
||||
void *InRpcAuthData(PACK *p, UINT *authtype);
|
||||
void *InRpcAuthData(PACK *p, UINT *authtype, char *username);
|
||||
void OutRpcAuthData(PACK *p, void *authdata, UINT authtype);
|
||||
void FreeRpcAuthData(void *authdata, UINT authtype);
|
||||
void InRpcSetUser(RPC_SET_USER *t, PACK *p);
|
||||
|
||||
+1
-119
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// AzureClient.c
|
||||
@@ -193,7 +87,7 @@ void AcWaitForRequest(AZURE_CLIENT *ac, SOCK *s, AZURE_PARAM *param)
|
||||
|
||||
SetTimeout(ns, param->DataTimeout);
|
||||
|
||||
if (StartSSLEx(ns, NULL, NULL, true, 0, NULL))
|
||||
if (StartSSLEx(ns, NULL, NULL, 0, NULL))
|
||||
{
|
||||
// Check certification
|
||||
char server_cert_hash_str[MAX_SIZE];
|
||||
@@ -522,18 +416,6 @@ void AcMainThread(THREAD *thread, void *param)
|
||||
}
|
||||
}
|
||||
|
||||
// Get enabled or disabled VPN Azure client
|
||||
bool AcGetEnable(AZURE_CLIENT *ac)
|
||||
{
|
||||
// Validate arguments
|
||||
if (ac == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return ac->IsEnabled;
|
||||
}
|
||||
|
||||
// Enable or disable VPN Azure client
|
||||
void AcSetEnable(AZURE_CLIENT *ac, bool enabled)
|
||||
{
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// AzureClient.h
|
||||
@@ -166,7 +60,6 @@ void FreeAzureClient(AZURE_CLIENT *ac);
|
||||
void AcApplyCurrentConfig(AZURE_CLIENT *ac, DDNS_CLIENT_STATUS *ddns_status);
|
||||
void AcMainThread(THREAD *thread, void *param);
|
||||
void AcSetEnable(AZURE_CLIENT *ac, bool enabled);
|
||||
bool AcGetEnable(AZURE_CLIENT *ac);
|
||||
void AcWaitForRequest(AZURE_CLIENT *ac, SOCK *s, AZURE_PARAM *param);
|
||||
|
||||
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// AzureServer.c
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// AzureServer.h
|
||||
|
||||
+13
-115
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Bridge.c
|
||||
@@ -136,21 +30,25 @@ UINT GetEthDeviceHash()
|
||||
{
|
||||
#ifdef OS_UNIX
|
||||
// UNIX
|
||||
UINT num;
|
||||
UINT num = 0;
|
||||
UINT i;
|
||||
char tmp[4096];
|
||||
UCHAR hash[SHA1_SIZE];
|
||||
TOKEN_LIST *t = GetEthList();
|
||||
|
||||
num = t->NumTokens;
|
||||
tmp[0] = 0;
|
||||
for (i = 0;i < t->NumTokens;i++)
|
||||
{
|
||||
StrCat(tmp, sizeof(tmp), t->Token[i]);
|
||||
}
|
||||
FreeToken(t);
|
||||
|
||||
Hash(hash, tmp, StrLen(tmp), true);
|
||||
if (t != NULL)
|
||||
{
|
||||
num = t->NumTokens;
|
||||
for (i = 0; i < t->NumTokens; i++)
|
||||
{
|
||||
StrCat(tmp, sizeof(tmp), t->Token[i]);
|
||||
}
|
||||
FreeToken(t);
|
||||
}
|
||||
|
||||
Sha0(hash, tmp, StrLen(tmp));
|
||||
|
||||
Copy(&num, hash, sizeof(UINT));
|
||||
|
||||
@@ -174,7 +72,7 @@ UINT GetEthDeviceHash()
|
||||
}
|
||||
MsFreeAdapterList(a);
|
||||
|
||||
Hash(hash, tmp, StrLen(tmp), true);
|
||||
Sha0(hash, tmp, StrLen(tmp));
|
||||
|
||||
Copy(&num, hash, sizeof(UINT));
|
||||
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Bridge.h
|
||||
|
||||
+2692
-2810
File diff suppressed because it is too large
Load Diff
+1
-108
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// BridgeUnix.h
|
||||
@@ -201,7 +95,7 @@ ETH *OpenEth(char *name, bool local, bool tapmode, char *tapaddr);
|
||||
ETH *OpenEthLinux(char *name, bool local, bool tapmode, char *tapaddr);
|
||||
ETH *OpenEthSolaris(char *name, bool local, bool tapmode, char *tapaddr);
|
||||
ETH *OpenEthPcap(char *name, bool local, bool tapmode, char *tapaddr);
|
||||
bool ParseUnixEthDeviceName(char *dst_devname, UINT dst_devname_size, UINT *dst_devid, char *src_name);
|
||||
bool ParseUnixEthDeviceName(char *dst_devname, UINT dst_devname_size, char *src_name);
|
||||
void CloseEth(ETH *e);
|
||||
CANCEL *EthGetCancel(ETH *e);
|
||||
UINT EthGetPacket(ETH *e, void **data);
|
||||
@@ -227,7 +121,6 @@ void EthSendIpPacketInnerIpRaw(ETH *e, void *data, UINT size, USHORT protocol);
|
||||
|
||||
#ifdef UNIX_SOLARIS
|
||||
// Function prototype for Solaris
|
||||
bool DlipAttatchRequest(int fd, UINT devid);
|
||||
bool DlipReceiveAck(int fd);
|
||||
bool DlipPromiscuous(int fd, UINT level);
|
||||
bool DlipBindRequest(int fd);
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// BridgeWin32.c
|
||||
@@ -1337,7 +1231,7 @@ UINT Win32EthGenIdFromGuid(char *guid)
|
||||
Trim(tmp);
|
||||
StrUpper(tmp);
|
||||
|
||||
HashSha1(hash, tmp, StrLen(tmp));
|
||||
Sha1(hash, tmp, StrLen(tmp));
|
||||
|
||||
Copy(&i, hash, sizeof(UINT));
|
||||
|
||||
@@ -1961,7 +1855,7 @@ HINSTANCE InstallPcdDriverInternal()
|
||||
if (IsFileExists(tmp))
|
||||
{
|
||||
// If driver file is exist, try to get build number from registry
|
||||
if (LoadPcdDriverBuild() >= CEDAR_BUILD)
|
||||
if (LoadPcdDriverBuild() >= CEDAR_VERSION_BUILD)
|
||||
{
|
||||
// Already latest driver is installed
|
||||
install_driver = false;
|
||||
@@ -1990,7 +1884,7 @@ HINSTANCE InstallPcdDriverInternal()
|
||||
}
|
||||
|
||||
// Save build number
|
||||
SavePcdDriverBuild(CEDAR_BUILD);
|
||||
SavePcdDriverBuild(CEDAR_VERSION_BUILD);
|
||||
}
|
||||
|
||||
dll_filename = BRIDGE_WIN32_PCD_DLL;
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// BridgeWin32.h
|
||||
|
||||
+331
-139
@@ -1,113 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// Contributors:
|
||||
// - ELIN (https://github.com/el1n)
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CM.c
|
||||
@@ -123,6 +15,7 @@
|
||||
|
||||
#define _WIN32_WINNT 0x0502
|
||||
#define WINVER 0x0502
|
||||
#define SECURITY_WIN32
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <Iphlpapi.h>
|
||||
@@ -136,6 +29,7 @@
|
||||
#include <psapi.h>
|
||||
#include <wtsapi32.h>
|
||||
#include <Ntsecapi.h>
|
||||
#include <security.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -220,6 +114,7 @@ void CmProxyDlgSet(HWND hWnd, CLIENT_OPTION *o, CM_INTERNET_SETTING *setting)
|
||||
Check(hWnd, R_DIRECT_TCP, setting->ProxyType == PROXY_DIRECT);
|
||||
Check(hWnd, R_HTTPS, setting->ProxyType == PROXY_HTTP);
|
||||
Check(hWnd, R_SOCKS, setting->ProxyType == PROXY_SOCKS);
|
||||
Check(hWnd, R_SOCKS5, setting->ProxyType == PROXY_SOCKS5);
|
||||
|
||||
// Proxy Settings
|
||||
if(setting->ProxyType != PROXY_DIRECT)
|
||||
@@ -631,7 +526,7 @@ void CmRefreshEasy()
|
||||
SendMessage(cm->hEasyWnd, WM_CM_EASY_REFRESH, 0, 0);
|
||||
}
|
||||
|
||||
// Initialze the Simple Connect Manager
|
||||
// Initialize the Simple Connect Manager
|
||||
void CmEasyDlgInit(HWND hWnd, CM_EASY_DLG *d)
|
||||
{
|
||||
HFONT hFontForList;
|
||||
@@ -1164,7 +1059,7 @@ void CmSettingDlgUpdate(HWND hWnd, CM_SETTING_DLG *d)
|
||||
bool password_ok = false;
|
||||
UCHAR hash[SHA1_SIZE];
|
||||
|
||||
Hash(hash, tmp1, StrLen(tmp1), true);
|
||||
Sha0(hash, tmp1, StrLen(tmp1));
|
||||
if (Cmp(hash, d->HashedPassword, sizeof(hash)) == 0)
|
||||
{
|
||||
password_ok = true;
|
||||
@@ -1219,7 +1114,7 @@ void CmSettingDlgOnOk(HWND hWnd, CM_SETTING_DLG *d)
|
||||
{
|
||||
if (StrLen(tmp1) >= 1)
|
||||
{
|
||||
Hash(a.HashedPassword, tmp1, StrLen(tmp1), true);
|
||||
Sha0(a.HashedPassword, tmp1, StrLen(tmp1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4417,7 +4312,7 @@ UINT CmMainWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *p
|
||||
if (CmGetNumConnected(hWnd) == 0)
|
||||
{
|
||||
cm->Update = InitUpdateUi(_UU("PRODUCT_NAME_VPN_CMGR"), NAME_OF_VPN_CLIENT_MANAGER, NULL,
|
||||
GetCurrentBuildDate(), CEDAR_BUILD, CEDAR_VER, ((cm->Client == NULL) ? NULL : cm->Client->ClientId),
|
||||
GetCurrentBuildDate(), CEDAR_VERSION_BUILD, GetCedarVersionNumber(), ((cm->Client == NULL) ? NULL : cm->Client->ClientId),
|
||||
true);
|
||||
}
|
||||
}
|
||||
@@ -4480,7 +4375,7 @@ UINT CmMainWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *p
|
||||
// Specify the notification service to the foreground process
|
||||
void CmSetForegroundProcessToCnService()
|
||||
{
|
||||
if (cm->MenuPopuping)
|
||||
if (cm->PopupMenuOpen)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -4501,9 +4396,6 @@ HMENU CmCreateRecentSubMenu(HWND hWnd, UINT start_id)
|
||||
UINT i;
|
||||
RPC_CLIENT_ENUM_ACCOUNT a;
|
||||
LIST *o;
|
||||
bool easy;
|
||||
|
||||
easy = cm->CmSetting.EasyMode;
|
||||
|
||||
Zero(&a, sizeof(a));
|
||||
|
||||
@@ -4531,7 +4423,6 @@ HMENU CmCreateRecentSubMenu(HWND hWnd, UINT start_id)
|
||||
wchar_t tmp[MAX_PATH];
|
||||
wchar_t *account_name;
|
||||
char *server_name;
|
||||
char *hub_name;
|
||||
UINT pos;
|
||||
|
||||
if (h == NULL)
|
||||
@@ -4541,7 +4432,6 @@ HMENU CmCreateRecentSubMenu(HWND hWnd, UINT start_id)
|
||||
|
||||
account_name = item->AccountName;
|
||||
server_name = item->ServerName;
|
||||
hub_name = item->HubName;
|
||||
|
||||
UniStrCpy(tmp, sizeof(tmp), account_name);
|
||||
|
||||
@@ -4583,7 +4473,6 @@ HMENU CmCreateTraySubMenu(HWND hWnd, bool flag, UINT start_id)
|
||||
if (status_str != NULL)
|
||||
{
|
||||
bool b = false;
|
||||
bool is_account = false;
|
||||
|
||||
if (UniStrCmpi(status_str, _UU("CM_ACCOUNT_OFFLINE")) == 0)
|
||||
{
|
||||
@@ -4591,8 +4480,6 @@ HMENU CmCreateTraySubMenu(HWND hWnd, bool flag, UINT start_id)
|
||||
{
|
||||
b = true;
|
||||
}
|
||||
|
||||
is_account = true;
|
||||
}
|
||||
|
||||
if (UniStrCmpi(status_str, _UU("CM_ACCOUNT_ONLINE")) == 0 ||
|
||||
@@ -4602,8 +4489,6 @@ HMENU CmCreateTraySubMenu(HWND hWnd, bool flag, UINT start_id)
|
||||
{
|
||||
b = true;
|
||||
}
|
||||
|
||||
is_account = true;
|
||||
}
|
||||
|
||||
if (b)
|
||||
@@ -4657,7 +4542,7 @@ void CmShowTrayMenu(HWND hWnd)
|
||||
return;
|
||||
}
|
||||
|
||||
cm->MenuPopuping = true;
|
||||
cm->PopupMenuOpen = true;
|
||||
|
||||
locked = cm->CmSetting.LockMode;
|
||||
easy = cm->CmSetting.EasyMode;
|
||||
@@ -4786,7 +4671,7 @@ void CmShowTrayMenu(HWND hWnd)
|
||||
|
||||
DestroyMenu(h);
|
||||
|
||||
cm->MenuPopuping = false;
|
||||
cm->PopupMenuOpen = false;
|
||||
}
|
||||
|
||||
// Hide or show the main window
|
||||
@@ -5718,6 +5603,12 @@ void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy)
|
||||
// Installation is prohibited
|
||||
break;
|
||||
}
|
||||
// Warning message
|
||||
if (MsgBox(hWnd, MB_ICONINFORMATION | MB_OKCANCEL, _UU("CM_VLAN_REINSTALL_MSG")) == IDCANCEL)
|
||||
{
|
||||
// Cancel
|
||||
break;
|
||||
}
|
||||
index = LvGetSelected(hWnd, L_VLAN);
|
||||
if (index != INFINITE)
|
||||
{
|
||||
@@ -6234,6 +6125,7 @@ void CmExportAccount(HWND hWnd, wchar_t *account_name)
|
||||
t.ClientAuth = a->ClientAuth;
|
||||
t.StartupAccount = a->Startup;
|
||||
t.CheckServerCert = a->CheckServerCert;
|
||||
t.RetryOnServerCert = a->RetryOnServerCert;
|
||||
t.ServerCert = a->ServerCert;
|
||||
t.ClientOption->FromAdminPack = false;
|
||||
|
||||
@@ -6364,7 +6256,6 @@ void CmImportAccountMainEx(HWND hWnd, wchar_t *filename, bool overwrite)
|
||||
t->ClientOption->RequireMonitorMode = old_option->RequireMonitorMode;
|
||||
t->ClientOption->RequireBridgeRoutingMode = old_option->RequireBridgeRoutingMode;
|
||||
t->ClientOption->DisableQoS = old_option->DisableQoS;
|
||||
t->ClientOption->NoTls1 = old_option->NoTls1;
|
||||
|
||||
// Inherit the authentication data
|
||||
CiFreeClientAuth(t->ClientAuth);
|
||||
@@ -6373,6 +6264,7 @@ void CmImportAccountMainEx(HWND hWnd, wchar_t *filename, bool overwrite)
|
||||
// Other Settings
|
||||
t->StartupAccount = get.StartupAccount;
|
||||
t->CheckServerCert = get.CheckServerCert;
|
||||
t->RetryOnServerCert = get.RetryOnServerCert;
|
||||
if (t->ServerCert != NULL)
|
||||
{
|
||||
FreeX(t->ServerCert);
|
||||
@@ -6481,6 +6373,7 @@ void CmCopyAccount(HWND hWnd, wchar_t *account_name)
|
||||
c.ServerCert = CloneX(a->ServerCert);
|
||||
}
|
||||
c.CheckServerCert = a->CheckServerCert;
|
||||
c.RetryOnServerCert = a->RetryOnServerCert;
|
||||
c.StartupAccount = false; // Don't copy the startup attribute
|
||||
|
||||
CALL(hWnd, CcCreateAccount(cm->Client, &c));
|
||||
@@ -6896,6 +6789,10 @@ void CmEditAccountDlgUpdate(HWND hWnd, CM_ACCOUNT *a)
|
||||
{
|
||||
a->ClientOption->ProxyType = PROXY_SOCKS;
|
||||
}
|
||||
if (IsChecked(hWnd, R_SOCKS5))
|
||||
{
|
||||
a->ClientOption->ProxyType = PROXY_SOCKS5;
|
||||
}
|
||||
|
||||
// To validate the server certificate
|
||||
a->CheckServerCert = IsChecked(hWnd, R_CHECK_CERT);
|
||||
@@ -6976,8 +6873,6 @@ void CmEditAccountDlgUpdate(HWND hWnd, CM_ACCOUNT *a)
|
||||
}
|
||||
a->ClientOption->RetryInterval = GetInt(hWnd, E_RETRY_SPAN);
|
||||
|
||||
a->ClientOption->NoTls1 = IsChecked(hWnd, R_NOTLS1);
|
||||
|
||||
// Information determining
|
||||
if (UniStrLen(a->ClientOption->AccountName) == 0 && a->NatMode == false)
|
||||
{
|
||||
@@ -7336,6 +7231,7 @@ void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a)
|
||||
Check(hWnd, R_DIRECT_TCP, a->ClientOption->ProxyType == PROXY_DIRECT);
|
||||
Check(hWnd, R_HTTPS, a->ClientOption->ProxyType == PROXY_HTTP);
|
||||
Check(hWnd, R_SOCKS, a->ClientOption->ProxyType == PROXY_SOCKS);
|
||||
Check(hWnd, R_SOCKS5, a->ClientOption->ProxyType == PROXY_SOCKS5);
|
||||
|
||||
// Verify the server certificate
|
||||
Check(hWnd, R_CHECK_CERT, a->CheckServerCert);
|
||||
@@ -7431,8 +7327,6 @@ void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a)
|
||||
}
|
||||
SetIntEx(hWnd, E_RETRY_SPAN, a->ClientOption->RetryInterval);
|
||||
|
||||
Check(hWnd, R_NOTLS1, a->ClientOption->NoTls1);
|
||||
|
||||
// Title
|
||||
if (a->NatMode == false)
|
||||
{
|
||||
@@ -7818,6 +7712,290 @@ UINT CmEditAccountDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, voi
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Update the custom proxy HTTP header dialog
|
||||
void CmProxyHttpHeaderDlgUpdate(HWND hWnd)
|
||||
{
|
||||
UINT i = 0;
|
||||
bool ok = true;
|
||||
LIST *names_list;
|
||||
// Validate arguments
|
||||
if (hWnd == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
names_list = NewList(NULL);
|
||||
|
||||
for (; i < LvNum(hWnd, L_VALUES_LIST); i++)
|
||||
{
|
||||
wchar_t *str = LvGetStr(hWnd, L_VALUES_LIST, i, 0);
|
||||
UniTrim(str);
|
||||
if (IsEmptyUniStr(str) || IsInListUniStr(names_list, str))
|
||||
{
|
||||
Free(str);
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
Add(names_list, str);
|
||||
}
|
||||
|
||||
FreeStrList(names_list);
|
||||
SetEnable(hWnd, IDOK, ok);
|
||||
}
|
||||
|
||||
// Update the custom proxy HTTP header dialog content
|
||||
void CmProxyHttpHeaderDlgRefresh(HWND hWnd, CM_PROXY_HTTP_HEADER_DLG *d)
|
||||
{
|
||||
UINT i = 0;
|
||||
LIST *list;
|
||||
LVB *b;
|
||||
CLIENT_OPTION *a;
|
||||
// Validate arguments
|
||||
if (hWnd == NULL || d == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
a = (CLIENT_OPTION *)d->ClientOption;
|
||||
|
||||
list = NewEntryList(a->CustomHttpHeader, "\r\n", ":");
|
||||
|
||||
b = LvInsertStart();
|
||||
|
||||
for (; i < LIST_NUM(list); i++)
|
||||
{
|
||||
INI_ENTRY *e = LIST_DATA(list, i);
|
||||
wchar_t *name = CopyStrToUni(e->Key);
|
||||
wchar_t *value = CopyStrToUni(e->Value);
|
||||
UniTrimLeft(value);
|
||||
|
||||
LvInsertAdd(b, 0, NULL, 2, name, value);
|
||||
|
||||
Free(name);
|
||||
Free(value);
|
||||
}
|
||||
|
||||
LvInsertEnd(b, hWnd, L_VALUES_LIST);
|
||||
FreeEntryList(list);
|
||||
}
|
||||
|
||||
// Initialize the custom proxy HTTP header dialog
|
||||
void CmProxyHttpHeaderDlgInit(HWND hWnd, CM_PROXY_HTTP_HEADER_DLG *d)
|
||||
{
|
||||
// Validate arguments
|
||||
if (hWnd == NULL || d == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LvSetEnhanced(hWnd, L_VALUES_LIST, true);
|
||||
LvInitEx(hWnd, L_VALUES_LIST, true);
|
||||
LvInsertColumn(hWnd, L_VALUES_LIST, 0, _UU("CM_HTTP_HEADER_COLUMN_0"), 150);
|
||||
LvInsertColumn(hWnd, L_VALUES_LIST, 1, _UU("CM_HTTP_HEADER_COLUMN_1"), 150);
|
||||
|
||||
LvSetStyle(hWnd, L_VALUES_LIST, LVS_EX_GRIDLINES);
|
||||
|
||||
CmProxyHttpHeaderDlgRefresh(hWnd, d);
|
||||
}
|
||||
|
||||
// Custom proxy HTTP header dialog control
|
||||
UINT CmProxyHttpHeaderDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
|
||||
{
|
||||
CM_PROXY_HTTP_HEADER_DLG *d = (CM_PROXY_HTTP_HEADER_DLG *)param;
|
||||
CLIENT_OPTION *a = (d == NULL ? NULL : d->ClientOption);
|
||||
UINT i = INFINITE;
|
||||
// Validate arguments
|
||||
if (hWnd == NULL || d == NULL || a == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
CmProxyHttpHeaderDlgInit(hWnd, d);
|
||||
break;
|
||||
case WM_CLOSE:
|
||||
EndDialog(hWnd, false);
|
||||
break;
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
// Header divider being dragged (resizing columns)
|
||||
case HDN_ITEMCHANGINGA:
|
||||
case HDN_ITEMCHANGINGW:
|
||||
if (d->EditBox != NULL)
|
||||
{
|
||||
RECT rect;
|
||||
ListView_GetSubItemRect(DlgItem(hWnd, L_VALUES_LIST), d->CurrentItem, d->CurrentSubItem, LVIR_LABEL, &rect);
|
||||
MoveWindow(d->EditBox, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
|
||||
RedrawWindow(d->EditBox, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
}
|
||||
break;
|
||||
case LVN_ITEMCHANGED:
|
||||
if (((LPNMHDR)lParam)->idFrom == L_VALUES_LIST)
|
||||
{
|
||||
CmProxyHttpHeaderDlgUpdate(hWnd);
|
||||
}
|
||||
break;
|
||||
case NM_DBLCLK:
|
||||
{
|
||||
RECT rect;
|
||||
LPNMLISTVIEW list_view = (LPNMLISTVIEW)lParam;
|
||||
wchar_t *str;
|
||||
|
||||
d->CurrentItem = list_view->iItem;
|
||||
d->CurrentSubItem = list_view->iSubItem;
|
||||
str = LvGetStr(DlgItem(hWnd, L_VALUES_LIST), 0, d->CurrentItem, d->CurrentSubItem);
|
||||
ListView_GetSubItemRect(DlgItem(hWnd, L_VALUES_LIST), d->CurrentItem, d->CurrentSubItem, LVIR_LABEL, &rect);
|
||||
|
||||
d->EditBox = CreateWindowExW(0, L"EDIT", str, WS_BORDER | WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_LEFT | ES_MULTILINE | ES_WANTRETURN, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, DlgItem(hWnd, L_VALUES_LIST), NULL, GetModuleHandle(NULL), NULL);
|
||||
Free(str);
|
||||
|
||||
DlgFont(d->EditBox, 0, 8, false);
|
||||
EditBoxSetEnhanced(d->EditBox, 0, true);
|
||||
FocusEx(d->EditBox, 0);
|
||||
break;
|
||||
}
|
||||
case NM_CLICK:
|
||||
case NM_RETURN:
|
||||
if (d->EditBox != NULL)
|
||||
{
|
||||
wchar_t *new_name = GetText(d->EditBox, 0);
|
||||
wchar_t *old_name = LvGetStr(hWnd, L_VALUES_LIST, d->CurrentItem, d->CurrentSubItem);
|
||||
|
||||
if (old_name != NULL)
|
||||
{
|
||||
if (UniStrCmp(new_name, old_name) != 0)
|
||||
{
|
||||
LvSetItem(hWnd, L_VALUES_LIST, d->CurrentItem, d->CurrentSubItem, new_name);
|
||||
}
|
||||
|
||||
Free(old_name);
|
||||
}
|
||||
|
||||
Free(new_name);
|
||||
|
||||
DestroyWindow(d->EditBox);
|
||||
d->EditBox = NULL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
switch (wParam)
|
||||
{
|
||||
case B_NEW:
|
||||
{
|
||||
NMLISTVIEW lv;
|
||||
|
||||
if (d->EditBox != NULL)
|
||||
{
|
||||
DestroyWindow(d->EditBox);
|
||||
}
|
||||
|
||||
i = LvInsertItem(hWnd, L_VALUES_LIST, 0, NULL, L"");
|
||||
LvSelect(hWnd, L_VALUES_LIST, i);
|
||||
|
||||
Zero(&lv, sizeof(lv));
|
||||
lv.hdr.code = NM_DBLCLK;
|
||||
lv.iItem = i;
|
||||
lv.iSubItem = 0;
|
||||
|
||||
SendMsg(hWnd, 0, WM_NOTIFY, 0, (LPARAM)&lv);
|
||||
}
|
||||
break;
|
||||
case B_DELETE:
|
||||
if (d->EditBox != NULL)
|
||||
{
|
||||
DestroyWindow(d->EditBox);
|
||||
}
|
||||
|
||||
i = LvGetSelected(hWnd, L_VALUES_LIST);
|
||||
if (i != INFINITE)
|
||||
{
|
||||
LvDeleteItem(hWnd, L_VALUES_LIST, i);
|
||||
}
|
||||
CmProxyHttpHeaderDlgUpdate(hWnd);
|
||||
break;
|
||||
case B_CLEAR:
|
||||
if (d->EditBox != NULL)
|
||||
{
|
||||
DestroyWindow(d->EditBox);
|
||||
}
|
||||
|
||||
LvReset(hWnd, L_VALUES_LIST);
|
||||
CmProxyHttpHeaderDlgUpdate(hWnd);
|
||||
break;
|
||||
case IDOK:
|
||||
{
|
||||
UINT index = 0;
|
||||
char *name = NULL;
|
||||
char *value = NULL;
|
||||
char http_header[HTTP_CUSTOM_HEADER_MAX_SIZE];
|
||||
|
||||
Zero(http_header, sizeof(http_header));
|
||||
i = LvNum(hWnd, L_VALUES_LIST);
|
||||
|
||||
for (; index < i; index++)
|
||||
{
|
||||
char str[HTTP_CUSTOM_HEADER_MAX_SIZE];
|
||||
name = LvGetStrA(hWnd, L_VALUES_LIST, index, 0);
|
||||
value = LvGetStrA(hWnd, L_VALUES_LIST, index, 1);
|
||||
|
||||
Trim(name);
|
||||
TrimLeft(value);
|
||||
|
||||
Format(str, sizeof(str), "%s: %s\r\n", name, value);
|
||||
EnSafeHttpHeaderValueStr(str, ' ');
|
||||
|
||||
Free(name);
|
||||
Free(value);
|
||||
|
||||
if ((StrLen(http_header) + StrLen(str)) < sizeof(a->CustomHttpHeader))
|
||||
{
|
||||
StrCat(http_header, sizeof(str), str);
|
||||
}
|
||||
else
|
||||
{
|
||||
MsgBox(hWnd, MB_ICONEXCLAMATION | MB_OK, _E(ERR_TOO_MANT_ITEMS));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
Zero(a->CustomHttpHeader, sizeof(a->CustomHttpHeader));
|
||||
StrCpy(a->CustomHttpHeader, sizeof(a->CustomHttpHeader), http_header);
|
||||
|
||||
EndDialog(hWnd, true);
|
||||
break;
|
||||
}
|
||||
case IDCANCEL:
|
||||
Close(hWnd);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Custom proxy HTTP header dialog
|
||||
bool CmProxyHttpHeaderDlg(HWND hWnd, CLIENT_OPTION *a)
|
||||
{
|
||||
CM_PROXY_HTTP_HEADER_DLG d;
|
||||
// Validate arguments
|
||||
if (a == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Zero(&d, sizeof(d));
|
||||
|
||||
d.ClientOption = a;
|
||||
|
||||
return Dialog(hWnd, D_CM_PROXY_HTTP_HEADER, CmProxyHttpHeaderDlgProc, &d);
|
||||
}
|
||||
|
||||
// Update the proxy server settings
|
||||
void CmProxyDlgUpdate(HWND hWnd, CLIENT_OPTION *a)
|
||||
{
|
||||
@@ -7828,6 +8006,8 @@ void CmProxyDlgUpdate(HWND hWnd, CLIENT_OPTION *a)
|
||||
return;
|
||||
}
|
||||
|
||||
SetEnable(hWnd, B_HTTP_HEADER, a->ProxyType == PROXY_HTTP);
|
||||
|
||||
if (IsEmpty(hWnd, E_HOSTNAME))
|
||||
{
|
||||
ok = false;
|
||||
@@ -7891,6 +8071,9 @@ UINT CmProxyDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *par
|
||||
|
||||
switch (wParam)
|
||||
{
|
||||
case B_HTTP_HEADER:
|
||||
CmProxyHttpHeaderDlg(hWnd, a);
|
||||
break;
|
||||
case IDOK:
|
||||
GetTxtA(hWnd, E_HOSTNAME, a->ProxyName, sizeof(a->ProxyName));
|
||||
GetTxtA(hWnd, E_USERNAME, a->ProxyUsername, sizeof(a->ProxyUsername));
|
||||
@@ -8241,10 +8424,6 @@ bool CmLoadXExW(HWND hWnd, X **x, wchar_t *filename, UINT size)
|
||||
}
|
||||
|
||||
// Read the secret key
|
||||
bool CmLoadK(HWND hWnd, K **k)
|
||||
{
|
||||
return CmLoadKEx(hWnd, k, NULL, 0);
|
||||
}
|
||||
bool CmLoadKEx(HWND hWnd, K **k, char *filename, UINT size)
|
||||
{
|
||||
wchar_t *filename_w = CopyStrToUni(filename);
|
||||
@@ -8614,6 +8793,10 @@ void CmEditAccountDlgStartEnumHub(HWND hWnd, CM_ACCOUNT *a)
|
||||
{
|
||||
a->ClientOption->ProxyType = PROXY_SOCKS;
|
||||
}
|
||||
if (IsChecked(hWnd, R_SOCKS5))
|
||||
{
|
||||
a->ClientOption->ProxyType = PROXY_SOCKS5;
|
||||
}
|
||||
|
||||
CmEnumHubStart(hWnd, a->ClientOption);
|
||||
|
||||
@@ -8891,6 +9074,7 @@ CM_ACCOUNT *CmGetExistAccountObject(HWND hWnd, wchar_t *account_name)
|
||||
a = ZeroMalloc(sizeof(CM_ACCOUNT));
|
||||
a->EditMode = true;
|
||||
a->CheckServerCert = c.CheckServerCert;
|
||||
a->RetryOnServerCert = c.RetryOnServerCert;
|
||||
a->Startup = c.StartupAccount;
|
||||
if (c.ServerCert != NULL)
|
||||
{
|
||||
@@ -8920,6 +9104,7 @@ CM_ACCOUNT *CmCreateNewAccountObject(HWND hWnd)
|
||||
a = ZeroMalloc(sizeof(CM_ACCOUNT));
|
||||
a->EditMode = false;
|
||||
a->CheckServerCert = false;
|
||||
a->RetryOnServerCert = false;
|
||||
a->Startup = false;
|
||||
a->ClientOption = ZeroMalloc(sizeof(CLIENT_OPTION));
|
||||
|
||||
@@ -9394,6 +9579,7 @@ void CmPrintStatusToListViewEx(LVB *b, RPC_CLIENT_GET_CONNECTION_STATUS *s, bool
|
||||
GetDateTimeStrEx64(tmp, sizeof(tmp), SystemToLocal64(s->StartTime), NULL);
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_START_TIME"), tmp);
|
||||
GetDateTimeStrEx64(tmp, sizeof(tmp), SystemToLocal64(s->FirstConnectionEstablisiedTime), NULL);
|
||||
/* !!! Do not correct the spelling to keep the backward protocol compatibility !!! */
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_FIRST_ESTAB_TIME"), s->FirstConnectionEstablisiedTime == 0 ? _UU("CM_ST_NONE") : tmp);
|
||||
|
||||
if (s->Connected)
|
||||
@@ -9404,7 +9590,7 @@ void CmPrintStatusToListViewEx(LVB *b, RPC_CLIENT_GET_CONNECTION_STATUS *s, bool
|
||||
|
||||
if (server_mode == false)
|
||||
{
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CM_ST_NUM_STR"), s->NumConnectionsEatablished);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CM_ST_NUM_STR"), s->NumConnectionsEstablished);
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_NUM_ESTABLISHED"), tmp);
|
||||
}
|
||||
|
||||
@@ -9469,6 +9655,12 @@ void CmPrintStatusToListViewEx(LVB *b, RPC_CLIENT_GET_CONNECTION_STATUS *s, bool
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_UNDERLAY_PROTOCOL"), tmp);
|
||||
}
|
||||
|
||||
if (IsEmptyStr(s->ProtocolDetails) == false)
|
||||
{
|
||||
StrToUni(tmp, sizeof(tmp), s->ProtocolDetails);
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_PROTOCOL_DETAILS"), tmp);
|
||||
}
|
||||
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_UDP_ACCEL_ENABLED"), (s->IsUdpAccelerationEnabled ? _UU("CM_ST_YES") : _UU("CM_ST_NO")));
|
||||
LvInsertAdd(b, 0, NULL, 2, _UU("CM_ST_UDP_ACCEL_USING"), (s->IsUsingUdpAcceleration ? _UU("CM_ST_YES") : _UU("CM_ST_NO")));
|
||||
|
||||
@@ -10386,7 +10578,7 @@ void CmRefreshAccountListEx2(HWND hWnd, bool easy, bool style_changed)
|
||||
UINT num_connecting = 0, num_connected = 0;
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
wchar_t new_inserted_item[MAX_ACCOUNT_NAME_LEN + 1];
|
||||
bool select_new_insteted_item = true;
|
||||
bool select_new_inserted_item = true;
|
||||
// Validate arguments
|
||||
if (hWnd == NULL)
|
||||
{
|
||||
@@ -10435,7 +10627,7 @@ void CmRefreshAccountListEx2(HWND hWnd, bool easy, bool style_changed)
|
||||
|
||||
if (LvNum(hWnd, L_ACCOUNT) == 0)
|
||||
{
|
||||
select_new_insteted_item = false;
|
||||
select_new_inserted_item = false;
|
||||
}
|
||||
|
||||
// Enumerate the account list
|
||||
@@ -10573,7 +10765,7 @@ void CmRefreshAccountListEx2(HWND hWnd, bool easy, bool style_changed)
|
||||
|
||||
CiFreeClientEnumAccount(&a);
|
||||
|
||||
if (select_new_insteted_item)
|
||||
if (select_new_inserted_item)
|
||||
{
|
||||
if (UniStrLen(new_inserted_item) >= 1)
|
||||
{
|
||||
@@ -11163,7 +11355,7 @@ void CmMainWindowOnInit(HWND hWnd)
|
||||
|
||||
UniStrCpy(cm->StatudBar1, sizeof(cm->StatudBar1), _UU("CM_TITLE"));
|
||||
UniStrCpy(cm->StatudBar2, sizeof(cm->StatudBar2), _UU("CM_CONN_NO"));
|
||||
UniFormat(cm->StatudBar3, sizeof(cm->StatudBar3), _UU("CM_PRODUCT_NAME"), CEDAR_BUILD);
|
||||
UniFormat(cm->StatudBar3, sizeof(cm->StatudBar3), _UU("CM_PRODUCT_NAME"), CEDAR_VERSION_BUILD);
|
||||
|
||||
cm->Icon2 = LoadSmallIcon(ICO_SERVER_OFFLINE);
|
||||
cm->Icon3 = LoadSmallIcon(ICO_VPN);
|
||||
|
||||
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CM.h
|
||||
|
||||
+15
-111
@@ -1,113 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// Contributors:
|
||||
// - ELIN (https://github.com/el1n)
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CMInner.h
|
||||
@@ -208,7 +100,7 @@ typedef struct CM
|
||||
bool CheckedAndShowedAdminPackMessage;
|
||||
INSTANCE *StartupMutex;
|
||||
bool BadProcessChecked;
|
||||
bool MenuPopuping;
|
||||
bool PopupMenuOpen;
|
||||
WINUI_UPDATE *Update;
|
||||
} CM;
|
||||
|
||||
@@ -236,6 +128,7 @@ typedef struct CM_ACCOUNT
|
||||
CLIENT_AUTH *ClientAuth; // Authentication data
|
||||
bool Startup; // Startup account
|
||||
bool CheckServerCert; // Check the server certificate
|
||||
bool RetryOnServerCert; // Retry on invalid server certificate
|
||||
X *ServerCert; // Server certificate
|
||||
char old_server_name[MAX_HOST_NAME_LEN + 1]; // Old server name
|
||||
bool Inited; // Initialization flag
|
||||
@@ -288,6 +181,14 @@ typedef struct CM_TRAFFIC_DLG
|
||||
bool CloseDialogAfter; // Flag of whether or not to close the dialog
|
||||
} CM_TRAFFIC_DLG;
|
||||
|
||||
typedef struct CM_PROXY_HTTP_HEADER_DLG
|
||||
{
|
||||
CLIENT_OPTION *ClientOption;
|
||||
HWND EditBox;
|
||||
UINT CurrentItem;
|
||||
UINT CurrentSubItem;
|
||||
} CM_PROXY_HTTP_HEADER_DLG;
|
||||
|
||||
// Internet connection settings
|
||||
typedef struct CM_INTERNET_SETTING
|
||||
{
|
||||
@@ -497,7 +398,6 @@ void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a);
|
||||
void CmEditAccountDlgOnOk(HWND hWnd, CM_ACCOUNT *a);
|
||||
void CmEditAccountDlgStartEnumHub(HWND hWnd, CM_ACCOUNT *a);
|
||||
bool CmLoadXAndK(HWND hWnd, X **x, K **k);
|
||||
bool CmLoadK(HWND hWnd, K **k);
|
||||
bool CmLoadKEx(HWND hWnd, K **k, char *filename, UINT size);
|
||||
bool CmLoadKExW(HWND hWnd, K **k, wchar_t *filename, UINT size);
|
||||
bool CmLoadXFromFileOrSecureCard(HWND hWnd, X **x);
|
||||
@@ -638,4 +538,8 @@ void CmProxyDlgSet(HWND hWnd, CLIENT_OPTION *o, CM_INTERNET_SETTING *setting);
|
||||
bool CmGetProxyServerNameAndPortFromIeProxyRegStr(char *name, UINT name_size, UINT *port, char *str, char *server_type);
|
||||
void *CmUpdateJumpList(UINT start_id);
|
||||
|
||||
|
||||
void CmProxyHttpHeaderDlgUpdate(HWND hWnd);
|
||||
void CmProxyHttpHeaderDlgRefresh(HWND hWnd, CM_PROXY_HTTP_HEADER_DLG *d);
|
||||
void CmProxyHttpHeaderDlgInit(HWND hWnd, CM_PROXY_HTTP_HEADER_DLG *d);
|
||||
UINT CmProxyHttpHeaderDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
|
||||
bool CmProxyHttpHeaderDlg(HWND hWnd, CLIENT_OPTION *a);
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
file(GLOB SOURCES_CEDAR "*.c")
|
||||
file(GLOB HEADERS_CEDAR "*.h")
|
||||
|
||||
if(WIN32)
|
||||
enable_language(CXX)
|
||||
file(GLOB SOURCES_CEDAR_CPP "*.cpp")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
add_library(cedar STATIC ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR})
|
||||
else()
|
||||
add_library(cedar SHARED ${SOURCES_CEDAR} ${SOURCES_CEDAR_CPP} ${HEADERS_CEDAR})
|
||||
endif()
|
||||
|
||||
set_target_properties(cedar
|
||||
PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set_target_properties(cedar
|
||||
PROPERTIES
|
||||
COMPILE_PDB_NAME "cedar"
|
||||
COMPILE_PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}"
|
||||
)
|
||||
|
||||
target_include_directories(cedar PRIVATE winpcap)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
find_library(LIB_READLINE readline)
|
||||
find_package(Curses REQUIRED)
|
||||
|
||||
target_link_libraries(cedar PRIVATE ${LIB_READLINE} ${CURSES_LIBRARIES})
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
target_link_libraries(cedar PRIVATE mayaqua pcap)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Version
|
||||
add_definitions(-DCEDAR_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} -DCEDAR_VERSION_MINOR=${PROJECT_VERSION_MINOR} -DCEDAR_VERSION_BUILD=${PROJECT_VERSION_PATCH})
|
||||
|
||||
# Builder
|
||||
if(UNIX)
|
||||
add_definitions(-DBUILDER_NAME="$ENV{USER}")
|
||||
elseif(WIN32)
|
||||
add_definitions(-DBUILDER_NAME="$ENV{USERNAME}")
|
||||
endif()
|
||||
|
||||
cmake_host_system_information(RESULT BUILDER_HOSTNAME QUERY HOSTNAME)
|
||||
|
||||
add_definitions(-DBUILD_PLACE="${BUILDER_HOSTNAME}")
|
||||
|
||||
# Remove leading 0 from date and time
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_DAY "${DATE_DAY}")
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_MONTH "${DATE_MONTH}")
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_YEAR "${DATE_YEAR}")
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_HOUR "${TIME_HOUR}")
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_MINUTE "${TIME_MINUTE}")
|
||||
string(REGEX REPLACE "^0([^ ]*)" "\\1" BUILD_SECOND "${TIME_SECOND}")
|
||||
|
||||
add_definitions(-DBUILD_DATE_D=${BUILD_DAY} -DBUILD_DATE_M=${BUILD_MONTH} -DBUILD_DATE_Y=${BUILD_YEAR})
|
||||
add_definitions(-DBUILD_DATE_HO=${BUILD_HOUR} -DBUILD_DATE_MI=${BUILD_MINUTE} -DBUILD_DATE_SE=${BUILD_SECOND})
|
||||
|
||||
if(UNIX)
|
||||
install(TARGETS cedar
|
||||
COMPONENT "common"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
)
|
||||
endif()
|
||||
+21
-275
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Cedar.c
|
||||
@@ -265,23 +159,11 @@ bool IsSupportedWinVer(RPC_WINVER *v)
|
||||
|
||||
if ((v->VerMajor == 6 && v->VerMinor == 4) || (v->VerMajor == 10 && v->VerMinor == 0))
|
||||
{
|
||||
if (v->IsServer == false)
|
||||
// Windows 10 or Windows Server 2016
|
||||
if (v->ServicePack <= 0)
|
||||
{
|
||||
// Windows 10 (not Windows Server 2016)
|
||||
if (v->ServicePack <= 0)
|
||||
{
|
||||
// SP0 only
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Windows Server 2016
|
||||
if (v->ServicePack <= 0)
|
||||
{
|
||||
// SP0 only
|
||||
return true;
|
||||
}
|
||||
// SP0 only
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -389,34 +271,6 @@ int CompareNoSslList(void *p1, void *p2)
|
||||
return CmpIpAddr(&n1->IpAddress, &n2->IpAddress);
|
||||
}
|
||||
|
||||
// Check whether the specified IP address is in Non-SSL connection list
|
||||
bool IsInNoSsl(CEDAR *c, IP *ip)
|
||||
{
|
||||
bool ret = false;
|
||||
// Validate arguments
|
||||
if (c == NULL || ip == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LockList(c->NonSslList);
|
||||
{
|
||||
NON_SSL *n = SearchNoSslList(c, ip);
|
||||
|
||||
if (n != NULL)
|
||||
{
|
||||
if (n->EntryExpires > Tick64() && n->Count > NON_SSL_MIN_COUNT)
|
||||
{
|
||||
n->EntryExpires = Tick64() + (UINT64)NON_SSL_ENTRY_EXPIRES;
|
||||
ret = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
UnlockList(c->NonSslList);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Decrement connection count of Non-SSL connection list entry
|
||||
void DecrementNoSsl(CEDAR *c, IP *ip, UINT num_dec)
|
||||
{
|
||||
@@ -629,37 +483,6 @@ UINT64 GetTrafficPacketNum(TRAFFIC *t)
|
||||
t->Send.BroadcastCount + t->Send.UnicastCount;
|
||||
}
|
||||
|
||||
// Get whether hidden password is changed in UI
|
||||
bool IsHiddenPasswordChanged(char *str)
|
||||
{
|
||||
// Validate arguments
|
||||
if (str == NULL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (StrCmpi(str, HIDDEN_PASSWORD) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize hidden password in UI
|
||||
void InitHiddenPassword(char *str, UINT size)
|
||||
{
|
||||
// Validate arguments
|
||||
if (str == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StrCpy(str, size, HIDDEN_PASSWORD);
|
||||
}
|
||||
|
||||
// Check whether the certificate is signed by CA which is trusted by the hub
|
||||
bool CheckSignatureByCaLinkMode(SESSION *s, X *x)
|
||||
{
|
||||
@@ -854,47 +677,6 @@ void DelConnection(CEDAR *cedar, CONNECTION *c)
|
||||
UnlockList(cedar->ConnectionList);
|
||||
}
|
||||
|
||||
// Get the number of unestablished connections
|
||||
UINT GetUnestablishedConnections(CEDAR *cedar)
|
||||
{
|
||||
UINT i, ret;
|
||||
// Validate arguments
|
||||
if (cedar == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
LockList(cedar->ConnectionList);
|
||||
{
|
||||
for (i = 0;i < LIST_NUM(cedar->ConnectionList);i++)
|
||||
{
|
||||
CONNECTION *c = LIST_DATA(cedar->ConnectionList, i);
|
||||
|
||||
switch (c->Type)
|
||||
{
|
||||
case CONNECTION_TYPE_CLIENT:
|
||||
case CONNECTION_TYPE_INIT:
|
||||
case CONNECTION_TYPE_LOGIN:
|
||||
case CONNECTION_TYPE_ADDITIONAL:
|
||||
switch (c->Status)
|
||||
{
|
||||
case CONNECTION_STATUS_ACCEPTED:
|
||||
case CONNECTION_STATUS_NEGOTIATION:
|
||||
case CONNECTION_STATUS_USERAUTH:
|
||||
ret++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
UnlockList(cedar->ConnectionList);
|
||||
|
||||
return ret + Count(cedar->AcceptingSockets);
|
||||
}
|
||||
|
||||
// Add connection to Cedar
|
||||
void AddConnection(CEDAR *cedar, CONNECTION *c)
|
||||
{
|
||||
@@ -1601,18 +1383,6 @@ void SetCedarCert(CEDAR *c, X *server_x, K *server_k)
|
||||
Unlock(c->lock);
|
||||
}
|
||||
|
||||
// Enable debug log
|
||||
void EnableDebugLog(CEDAR *c)
|
||||
{
|
||||
// Validate arguments
|
||||
if (c == NULL || c->DebugLog != NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
c->DebugLog = NewLog("cedar_debug_log", "cedar", LOG_SWITCH_NO);
|
||||
}
|
||||
|
||||
// Set the Cedar into VPN Bridge mode
|
||||
void SetCedarVpnBridge(CEDAR *c)
|
||||
{
|
||||
@@ -1641,9 +1411,12 @@ void GetCedarVersion(char *tmp, UINT size)
|
||||
return;
|
||||
}
|
||||
|
||||
Format(tmp, size, "%u.%02u.%u",
|
||||
CEDAR_VER / 100, CEDAR_VER - (CEDAR_VER / 100) * 100,
|
||||
CEDAR_BUILD);
|
||||
Format(tmp, size, "%u.%02u.%u", CEDAR_VERSION_MAJOR, CEDAR_VERSION_MINOR, CEDAR_VERSION_BUILD);
|
||||
}
|
||||
|
||||
UINT GetCedarVersionNumber()
|
||||
{
|
||||
return CEDAR_VERSION_MAJOR * 100 + CEDAR_VERSION_MINOR;
|
||||
}
|
||||
|
||||
// Create Cedar object
|
||||
@@ -1668,6 +1441,8 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
||||
|
||||
StrCpy(c->OpenVPNDefaultClientOption, sizeof(c->OpenVPNDefaultClientOption), OVPN_DEF_CLIENT_OPTION_STRING);
|
||||
|
||||
c->OpenVPNPushDummyIPv4AddressOnL2Mode = true; // Default true. Override by the config file.
|
||||
|
||||
#ifdef BETA_NUMBER
|
||||
c->Beta = BETA_NUMBER;
|
||||
#endif // BETA_NUMBER
|
||||
@@ -1705,8 +1480,8 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
||||
c->ServerX = CloneX(server_x);
|
||||
}
|
||||
|
||||
c->Version = CEDAR_VER;
|
||||
c->Build = CEDAR_BUILD;
|
||||
c->Version = GetCedarVersionNumber();
|
||||
c->Build = CEDAR_VERSION_BUILD;
|
||||
c->ServerStr = CopyStr(CEDAR_SERVER_STR);
|
||||
|
||||
GetMachineName(tmp, sizeof(tmp));
|
||||
@@ -1752,8 +1527,7 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
||||
ToStr(tmp2, c->Beta);
|
||||
|
||||
Format(tmp, sizeof(tmp), "Version %u.%02u Build %u %s %s (%s)",
|
||||
CEDAR_VER / 100, CEDAR_VER - (CEDAR_VER / 100) * 100,
|
||||
CEDAR_BUILD,
|
||||
CEDAR_VERSION_MAJOR, CEDAR_VERSION_MINOR, CEDAR_VERSION_BUILD,
|
||||
c->Beta == 0 ? "" : beta_str,
|
||||
c->Beta == 0 ? "" : tmp2,
|
||||
_SS("LANGSTR"));
|
||||
@@ -1781,40 +1555,6 @@ CEDAR *NewCedar(X *server_x, K *server_k)
|
||||
return c;
|
||||
}
|
||||
|
||||
// Check whether the Cedar was build after the specified date
|
||||
bool IsLaterBuild(CEDAR *c, UINT64 t)
|
||||
{
|
||||
SYSTEMTIME sb, st;
|
||||
UINT64 b;
|
||||
// Validate arguments
|
||||
if (c == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Zero(&sb, sizeof(sb));
|
||||
Zero(&st, sizeof(st));
|
||||
|
||||
UINT64ToSystem(&sb, c->BuiltDate);
|
||||
UINT64ToSystem(&st, t);
|
||||
|
||||
// Ignore time of the day
|
||||
sb.wHour = sb.wMinute = sb.wSecond = sb.wMilliseconds = 0;
|
||||
st.wHour = st.wMinute = st.wSecond = st.wMilliseconds = 0;
|
||||
|
||||
b = SystemToUINT64(&sb);
|
||||
t = SystemToUINT64(&st);
|
||||
|
||||
if (b > t)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Cumulate traffic size
|
||||
void AddTraffic(TRAFFIC *dst, TRAFFIC *diff)
|
||||
{
|
||||
@@ -1866,6 +1606,9 @@ void InitCedar()
|
||||
|
||||
// Initialize protocol module
|
||||
InitProtocol();
|
||||
|
||||
// Initialize third-party protocol interface
|
||||
ProtoInit();
|
||||
}
|
||||
|
||||
// Free Cedar communication module
|
||||
@@ -1876,6 +1619,9 @@ void FreeCedar()
|
||||
return;
|
||||
}
|
||||
|
||||
// Free third-party protocol interface
|
||||
ProtoFree();
|
||||
|
||||
// Free protocol module
|
||||
FreeProtocol();
|
||||
}
|
||||
|
||||
+92
-171
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Cedar.h
|
||||
@@ -135,10 +29,18 @@
|
||||
|
||||
|
||||
// Version number
|
||||
#define CEDAR_VER 501
|
||||
#ifndef CEDAR_VERSION_MAJOR
|
||||
#define CEDAR_VERSION_MAJOR 0
|
||||
#endif // CEDAR_VERSION_MAJOR
|
||||
|
||||
// Build Number
|
||||
#define CEDAR_BUILD 9657
|
||||
#ifndef CEDAR_VERSION_MINOR
|
||||
#define CEDAR_VERSION_MINOR 0
|
||||
#endif // CEDAR_VER_MINOR
|
||||
|
||||
// Build number
|
||||
#ifndef CEDAR_VERSION_BUILD
|
||||
#define CEDAR_VERSION_BUILD 0
|
||||
#endif // CEDAR_VERSION_BUILD
|
||||
|
||||
// Beta number
|
||||
//#define BETA_NUMBER 3
|
||||
@@ -148,21 +50,38 @@
|
||||
|
||||
// Specify the name of the person in charge building
|
||||
#ifndef BUILDER_NAME
|
||||
#define BUILDER_NAME "yagi"
|
||||
#define BUILDER_NAME "Unknown"
|
||||
#endif // BUILDER_NAME
|
||||
|
||||
// Specify the location to build
|
||||
#ifndef BUILD_PLACE
|
||||
#define BUILD_PLACE "pc37"
|
||||
#define BUILD_PLACE "Unknown"
|
||||
#endif // BUILD_PLACE
|
||||
|
||||
// Specifies the build date
|
||||
#define BUILD_DATE_Y 2018
|
||||
#define BUILD_DATE_M 1
|
||||
#define BUILD_DATE_D 14
|
||||
#define BUILD_DATE_HO 0
|
||||
#define BUILD_DATE_MI 36
|
||||
#define BUILD_DATE_SE 20
|
||||
#ifndef BUILD_DATE_Y
|
||||
#define BUILD_DATE_Y 1970
|
||||
#endif // BUILD_DATE_Y
|
||||
|
||||
#ifndef BUILD_DATE_M
|
||||
#define BUILD_DATE_M 1
|
||||
#endif // BUILD_DATE_M
|
||||
|
||||
#ifndef BUILD_DATE_D
|
||||
#define BUILD_DATE_D 1
|
||||
#endif // BUILD_DATE_D
|
||||
|
||||
#ifndef BUILD_DATE_HO
|
||||
#define BUILD_DATE_HO 0
|
||||
#endif // BUILD_DATE_HO
|
||||
|
||||
#ifndef BUILD_DATE_MI
|
||||
#define BUILD_DATE_MI 0
|
||||
#endif // BUILD_DATE_MI
|
||||
|
||||
#ifndef BUILD_DATE_SE
|
||||
#define BUILD_DATE_SE 0
|
||||
#endif // BUILD_DATE_SE
|
||||
|
||||
// Tolerable time difference
|
||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||
@@ -184,6 +103,9 @@
|
||||
// Hidden password string of 8 characters
|
||||
#define HIDDEN_PASSWORD "********"
|
||||
|
||||
// Default separator character for the hub name in the username
|
||||
#define DEFAULT_USERNAME_HUB_SEPARATOR '@'
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -194,8 +116,6 @@
|
||||
#define MAX_ACCOUNT_NAME_LEN 255 // Maximum account name length
|
||||
#define MAX_USERNAME_LEN 255 // User name maximum length
|
||||
#define MAX_PASSWORD_LEN 255 // Password name maximum length
|
||||
#define MAX_PROXY_USERNAME_LEN 255 // Proxy user name maximum length
|
||||
#define MAX_PROXY_PASSWORD_LEN 255 // Proxy Password maximum length
|
||||
#define MAX_SERVER_STR_LEN 255 // Maximum length of server string
|
||||
#define MAX_CLIENT_STR_LEN 255 // Maximum length of client string
|
||||
#define MAX_HUBNAME_LEN 255 // Maximum length of HUB name
|
||||
@@ -268,13 +188,12 @@
|
||||
#define TIMEOUT_MAX (60 * 1000) // Maximum timeout in seconds
|
||||
#define TIMEOUT_DEFAULT (30 * 1000) // Default number of seconds to timeout
|
||||
#define CONNECTING_TIMEOUT (15 * 1000) // Timeout in seconds of being connected
|
||||
#define CONNECTING_TIMEOUT_PROXY (4 * 1000) // Timeout in seconds of being connected (Proxy)
|
||||
#define CONNECTING_POOLING_SPAN (3 * 1000) // Polling interval of connected
|
||||
#define MIN_RETRY_INTERVAL (5 * 1000) // Minimum retry interval
|
||||
#define MAX_RETRY_INTERVAL (300 * 1000) // Maximum retry interval
|
||||
#define RETRY_INTERVAL_SPECIAL (60 * 1000) // Reconnection interval of a special case
|
||||
|
||||
#define MAX_ADDITONAL_CONNECTION_FAILED_COUNTER 16 // Allowable number that can be serially failed to additional connection
|
||||
#define MAX_ADDITIONAL_CONNECTION_FAILED_COUNTER 16 // Allowable number that can be serially failed to additional connection
|
||||
#define ADDITIONAL_CONNECTION_COUNTER_RESET_INTERVAL (30 * 60 * 1000) // Reset period of additional connection failure counter
|
||||
|
||||
#define MAC_MIN_LIMIT_COUNT 3 // Minimum number of MAC addresses
|
||||
@@ -366,7 +285,8 @@
|
||||
// Type of proxy
|
||||
#define PROXY_DIRECT 0 // Direct TCP connection
|
||||
#define PROXY_HTTP 1 // Connection via HTTP proxy server
|
||||
#define PROXY_SOCKS 2 // Connection via SOCKS proxy server
|
||||
#define PROXY_SOCKS 2 // Connection via SOCKS4 proxy server
|
||||
#define PROXY_SOCKS5 3 // Connection via SOCKS5 proxy server
|
||||
|
||||
// Direction of data flow
|
||||
#define TCP_BOTH 0 // Bi-directional
|
||||
@@ -382,8 +302,7 @@
|
||||
#define CONNECTION_TYPE_ADMIN_RPC 5 // RPC for Management
|
||||
#define CONNECTION_TYPE_ENUM_HUB 6 // HUB enumeration
|
||||
#define CONNECTION_TYPE_PASSWORD 7 // Password change
|
||||
#define CONNECTION_TYPE_SSTP 8 // SSTP
|
||||
#define CONNECTION_TYPE_OPENVPN 9 // OpenVPN
|
||||
#define CONNECTION_TYPE_OTHER 0xffffffff // E.g. Third-party protocol
|
||||
|
||||
// Protocol
|
||||
#define CONNECTION_TCP 0 // TCP protocol
|
||||
@@ -448,6 +367,7 @@
|
||||
#define AUTHTYPE_ROOTCERT 3 // Root certificate which is issued by trusted Certificate Authority
|
||||
#define AUTHTYPE_RADIUS 4 // Radius authentication
|
||||
#define AUTHTYPE_NT 5 // Windows NT authentication
|
||||
#define AUTHTYPE_OPENVPN_CERT 98 // TLS client certificate authentication
|
||||
#define AUTHTYPE_TICKET 99 // Ticket authentication
|
||||
|
||||
// Constant of the client side
|
||||
@@ -511,19 +431,29 @@
|
||||
#define LOG_ENGINE_BUFFER_CACHE_SIZE_MAX (10 * 1024 * 1024) // Write cache size
|
||||
|
||||
// Constant such as a file name
|
||||
#define SERVER_LOG_DIR_NAME "@server_log"
|
||||
//
|
||||
// These placeholders will be replaced in InnerFilePathW().
|
||||
//
|
||||
// @ - placeholder for LogDir
|
||||
// $ - placeholder for DbDir (config directory)
|
||||
//
|
||||
#define SERVER_LOG_DIR "server_log"
|
||||
#define SERVER_LOG_DIR_NAME "@"SERVER_LOG_DIR
|
||||
#define BRIDGE_LOG_DIR_NAME SERVER_LOG_DIR_NAME
|
||||
#define SERVER_LOG_PERFIX "vpn"
|
||||
|
||||
#define HUB_SECURITY_LOG_DIR_NAME "@security_log"
|
||||
#define HUB_SECURITY_LOG_FILE_NAME "@security_log/%s"
|
||||
#define HUB_SECURITY_LOG_DIR "security_log"
|
||||
#define HUB_SECURITY_LOG_DIR_NAME "@"HUB_SECURITY_LOG_DIR
|
||||
#define HUB_SECURITY_LOG_FILE_NAME HUB_SECURITY_LOG_DIR_NAME"/%s"
|
||||
#define HUB_SECURITY_LOG_PREFIX "sec"
|
||||
#define HUB_PACKET_LOG_DIR_NAME "@packet_log"
|
||||
#define HUB_PACKET_LOG_FILE_NAME "@packet_log/%s"
|
||||
#define HUB_PACKET_LOG_DIR "packet_log"
|
||||
#define HUB_PACKET_LOG_DIR_NAME "@"HUB_PACKET_LOG_DIR
|
||||
#define HUB_PACKET_LOG_FILE_NAME HUB_PACKET_LOG_DIR_NAME"/%s"
|
||||
#define HUB_PACKET_LOG_PREFIX "pkt"
|
||||
|
||||
#define NAT_LOG_DIR_NAME "@secure_nat_log"
|
||||
#define NAT_LOG_FILE_NAME "@secure_nat_log/%s"
|
||||
#define NAT_LOG_DIR "secure_nat_log"
|
||||
#define NAT_LOG_DIR_NAME "@"NAT_LOG_DIR
|
||||
#define NAT_LOG_FILE_NAME NAT_LOG_DIR_NAME"/%s"
|
||||
#define NAT_LOG_PREFIX "snat"
|
||||
|
||||
#define CLIENT_LOG_DIR_NAME "@client_log"
|
||||
@@ -592,7 +522,7 @@
|
||||
// Expiration date of random size cache
|
||||
#define RAND_SIZE_CACHE_EXPIRE (24 * 60 * 60 * 1000)
|
||||
// Management allowed IP address list file name
|
||||
#define ADMINIP_TXT "@adminip.txt"
|
||||
#define ADMINIP_TXT "$adminip.txt"
|
||||
|
||||
#define NON_SSL_MIN_COUNT 60
|
||||
#define NON_SSL_ENTRY_EXPIRES (10 * 60 * 1000)
|
||||
@@ -643,9 +573,10 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define EL_ADMIN_PORT 22888
|
||||
#define EL_CONFIG_FILENAME "@etherlogger.config"
|
||||
#define EL_PACKET_LOG_DIR_NAME "@etherlogger_log"
|
||||
#define EL_PACKET_LOG_FILE_NAME "@etherlogger_log/%s"
|
||||
#define EL_CONFIG_FILENAME "$etherlogger.config"
|
||||
#define EL_PACKET_LOG_DIR "etherlogger_log"
|
||||
#define EL_PACKET_LOG_DIR_NAME "@"EL_PACKET_LOG_DIR
|
||||
#define EL_PACKET_LOG_FILE_NAME EL_PACKET_LOG_DIR_NAME"/%s"
|
||||
#define EL_PACKET_LOG_PREFIX "pkt"
|
||||
#define EL_LICENSE_CHECK_SPAN (10 * 1000)
|
||||
|
||||
@@ -743,20 +674,14 @@
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef UNIX_BSD
|
||||
#define TAP_FILENAME_1 "/dev/net/tun"
|
||||
#define TAP_FILENAME_2 "/dev/tun"
|
||||
#ifdef UNIX_MACOS
|
||||
#ifdef NO_VLAN
|
||||
#define TAP_MACOS_FILENAME "/dev/tap0"
|
||||
#else // NO_VLAN
|
||||
#define TAP_MACOS_FILENAME "tap"
|
||||
#endif // NO_VLAN
|
||||
#define TAP_MACOS_DIR "/dev/"
|
||||
#define TAP_MACOS_NUMBER (16)
|
||||
#endif // UNIX_MACOS
|
||||
|
||||
|
||||
|
||||
#else // UNIX_BSD
|
||||
#define TAP_NAME "tap"
|
||||
#define TAP_DIR "/dev/"
|
||||
#define TAP_MAX (512)
|
||||
#endif // UNIX_BSD
|
||||
|
||||
|
||||
#define LICENSE_EDITION_VPN3_NO_LICENSE 0 // Without license
|
||||
@@ -1003,6 +928,7 @@ typedef struct CEDAR
|
||||
COUNTER *ConnectionIncrement; // Connection increment counter
|
||||
X *ServerX; // Server certificate
|
||||
K *ServerK; // Private key of the server certificate
|
||||
char UsernameHubSeparator; // Character which separates the username from the hub name
|
||||
char *CipherList; // List of encryption algorithms
|
||||
UINT Version; // Version information
|
||||
UINT Build; // Build Number
|
||||
@@ -1055,7 +981,10 @@ typedef struct CEDAR
|
||||
UINT FifoBudget; // Fifo budget
|
||||
SSL_ACCEPT_SETTINGS SslAcceptSettings; // SSL Accept Settings
|
||||
UINT DhParamBits; // Bits of Diffie-Hellman parameters
|
||||
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN Default Client Option String
|
||||
char OpenVPNDefaultClientOption[MAX_SIZE]; // OpenVPN: Default Client Option String
|
||||
bool OpenVPNObfuscation; // OpenVPN: Obfuscation mode
|
||||
char OpenVPNObfuscationMask[MAX_SIZE]; // OpenVPN: String (mask) for XOR obfuscation
|
||||
bool OpenVPNPushDummyIPv4AddressOnL2Mode; // OpenVPN: Push a dummy IPv4 address on L2 mode
|
||||
} CEDAR;
|
||||
|
||||
// Type of CEDAR
|
||||
@@ -1088,7 +1017,7 @@ typedef struct CEDAR
|
||||
#include <Cedar/Sam.h>
|
||||
// Radius authentication module
|
||||
#include <Cedar/Radius.h>
|
||||
// Protocol
|
||||
// Native protocol
|
||||
#include <Cedar/Protocol.h>
|
||||
// Inter-HUB link
|
||||
#include <Cedar/Link.h>
|
||||
@@ -1106,19 +1035,19 @@ typedef struct CEDAR
|
||||
#include <Cedar/Command.h>
|
||||
// RPC over HTTP
|
||||
#include <Cedar/Wpc.h>
|
||||
// IPsec
|
||||
#include <Cedar/IPsec.h>
|
||||
#include <Cedar/IPsec_L2TP.h>
|
||||
#include <Cedar/IPsec_PPP.h>
|
||||
#include <Cedar/IPsec_IPC.h>
|
||||
#include <Cedar/IPsec_IkePacket.h>
|
||||
#include <Cedar/IPsec_IKE.h>
|
||||
#include <Cedar/IPsec_Win7.h>
|
||||
#include <Cedar/IPsec_EtherIP.h>
|
||||
// SSTP
|
||||
#include <Cedar/Interop_SSTP.h>
|
||||
// OpenVPN
|
||||
#include <Cedar/Interop_OpenVPN.h>
|
||||
// Layer-2/Layer-3 converter
|
||||
#include <Cedar/IPC.h>
|
||||
// Third party protocols
|
||||
#include <Cedar/Proto.h>
|
||||
#include <Cedar/Proto_IPsec.h>
|
||||
#include <Cedar/Proto_EtherIP.h>
|
||||
#include <Cedar/Proto_IkePacket.h>
|
||||
#include <Cedar/Proto_IKE.h>
|
||||
#include <Cedar/Proto_L2TP.h>
|
||||
#include <Cedar/Proto_OpenVPN.h>
|
||||
#include <Cedar/Proto_PPP.h>
|
||||
#include <Cedar/Proto_SSTP.h>
|
||||
#include <Cedar/Proto_Win7.h>
|
||||
// UDP Acceleration
|
||||
#include <Cedar/UdpAccel.h>
|
||||
// DDNS Client
|
||||
@@ -1161,9 +1090,6 @@ typedef struct CEDAR
|
||||
// Web UI
|
||||
#include <Cedar/WebUI.h>
|
||||
|
||||
// VPN Gate Plugin DLL
|
||||
#include <VGate/VGateCommon.h>
|
||||
|
||||
// VPN Gate Main Implementation
|
||||
#include <Cedar/VG.h>
|
||||
|
||||
@@ -1213,7 +1139,6 @@ void DelHubEx(CEDAR *c, HUB *h, bool no_lock);
|
||||
void StopAllHub(CEDAR *c);
|
||||
void StopAllConnection(CEDAR *c);
|
||||
void AddConnection(CEDAR *cedar, CONNECTION *c);
|
||||
UINT GetUnestablishedConnections(CEDAR *cedar);
|
||||
void DelConnection(CEDAR *cedar, CONNECTION *c);
|
||||
void SetCedarCipherList(CEDAR *cedar, char *name);
|
||||
void InitCedar();
|
||||
@@ -1227,11 +1152,8 @@ void InitNetSvcList(CEDAR *cedar);
|
||||
void FreeNetSvcList(CEDAR *cedar);
|
||||
int CompareNetSvc(void *p1, void *p2);
|
||||
char *GetSvcName(CEDAR *cedar, bool udp, UINT port);
|
||||
void InitHiddenPassword(char *str, UINT size);
|
||||
bool IsHiddenPasswordChanged(char *str);
|
||||
UINT64 GetTrafficPacketSize(TRAFFIC *t);
|
||||
UINT64 GetTrafficPacketNum(TRAFFIC *t);
|
||||
void EnableDebugLog(CEDAR *c);
|
||||
void StartCedarLog();
|
||||
void StopCedarLog();
|
||||
int CompareNoSslList(void *p1, void *p2);
|
||||
@@ -1241,16 +1163,15 @@ bool AddNoSsl(CEDAR *c, IP *ip);
|
||||
void DecrementNoSsl(CEDAR *c, IP *ip, UINT num_dec);
|
||||
void DeleteOldNoSsl(CEDAR *c);
|
||||
NON_SSL *SearchNoSslList(CEDAR *c, IP *ip);
|
||||
bool IsInNoSsl(CEDAR *c, IP *ip);
|
||||
void FreeTinyLog(TINY_LOG *t);
|
||||
void WriteTinyLog(TINY_LOG *t, char *str);
|
||||
TINY_LOG *NewTinyLog();
|
||||
void GetWinVer(RPC_WINVER *v);
|
||||
bool IsSupportedWinVer(RPC_WINVER *v);
|
||||
bool IsLaterBuild(CEDAR *c, UINT64 t);
|
||||
SOCK *GetInProcListeningSock(CEDAR *c);
|
||||
SOCK *GetReverseListeningSock(CEDAR *c);
|
||||
void GetCedarVersion(char *tmp, UINT size);
|
||||
UINT GetCedarVersionNumber();
|
||||
UINT64 GetCurrentBuildDate();
|
||||
void CedarAddCurrentTcpQueueSize(CEDAR *c, int diff);
|
||||
UINT CedarGetCurrentTcpQueueSize(CEDAR *c);
|
||||
|
||||
+122
-114
@@ -70,7 +70,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\$(PlatformName)_$(ConfigurationName)"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\vs2008\$(PlatformName)_$(ConfigurationName)"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
@@ -140,7 +140,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\$(PlatformName)_$(ConfigurationName)"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\vs2008\$(PlatformName)_$(ConfigurationName)"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
@@ -213,7 +213,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\$(PlatformName)_$(ConfigurationName)"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\vs2008\$(PlatformName)_$(ConfigurationName)"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
@@ -287,7 +287,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\$(PlatformName)_$(ConfigurationName)"
|
||||
AdditionalLibraryDirectories="$(SolutionDir)BuildFiles\Library\vs2008\$(PlatformName)_$(ConfigurationName)"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
@@ -583,77 +583,9 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Interop_OpenVPN.c"
|
||||
RelativePath=".\IPC.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Interop_SSTP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_EtherIP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IKE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IkePacket.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IPC.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_L2TP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_PPP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_Win7.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Layer3.c"
|
||||
>
|
||||
@@ -718,6 +650,78 @@
|
||||
RelativePath=".\NullLan.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_EtherIP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IKE.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IkePacket.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IPsec.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_L2TP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_OpenVPN.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_PPP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_SSTP.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_Win7.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="0"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Protocol.c"
|
||||
>
|
||||
@@ -1241,47 +1245,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Interop_OpenVPN.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Interop_SSTP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_EtherIP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IKE.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IkePacket.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_IPC.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_L2TP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_PPP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_Win7.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IPsec_Win7Inner.h"
|
||||
RelativePath=".\IPC.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1320,6 +1284,50 @@
|
||||
RelativePath=".\NullLan.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_EtherIP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IKE.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IkePacket.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_IPsec.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_L2TP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_OpenVPN.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_PPP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_SSTP.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_Win7.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Proto_Win7Inner.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Protocol.h"
|
||||
>
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CedarPch.c
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CedarPch.h
|
||||
|
||||
+2
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// CedarType.h
|
||||
@@ -683,8 +577,9 @@ typedef struct IPC IPC;
|
||||
typedef struct IPC_ARP IPC_ARP;
|
||||
typedef struct IPC_ASYNC IPC_ASYNC;
|
||||
typedef struct IPC_PARAM IPC_PARAM;
|
||||
typedef struct IPC_DHCP_RELESAE_QUEUE IPC_DHCP_RELESAE_QUEUE;
|
||||
typedef struct IPC_DHCP_RELEASE_QUEUE IPC_DHCP_RELEASE_QUEUE;
|
||||
typedef struct IPC_MSCHAP_V2_AUTHINFO IPC_MSCHAP_V2_AUTHINFO;
|
||||
typedef struct IPC_SESSION_SHARED_BUFFER_DATA IPC_SESSION_SHARED_BUFFER_DATA;
|
||||
|
||||
|
||||
// ==============================================================
|
||||
|
||||
+221
-444
File diff suppressed because it is too large
Load Diff
+9
-122
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Client.h
|
||||
@@ -125,7 +19,7 @@
|
||||
|
||||
|
||||
// Constants
|
||||
#define CLIENT_CONFIG_FILE_NAME "@vpn_client.config"
|
||||
#define CLIENT_CONFIG_FILE_NAME "$vpn_client.config"
|
||||
#define CLIENT_DEFAULT_KEEPALIVE_HOST "keepalive.softether.org"
|
||||
#define CLIENT_DEFAULT_KEEPALIVE_PORT 80
|
||||
#define CLIENT_DEFAULT_KEEPALIVE_INTERVAL KEEP_INTERVAL_DEFAULT
|
||||
@@ -145,7 +39,7 @@
|
||||
#define CLIENT_WIN32_EXE_FILENAME_X64 "vpnclient_x64.exe"
|
||||
#define CLIENT_WIN32_EXE_FILENAME_IA64 "vpnclient_ia64.exe"
|
||||
|
||||
#define CLIENT_CUSTOM_INI_FILENAME "@custom.ini"
|
||||
#define CLIENT_CUSTOM_INI_FILENAME "$custom.ini"
|
||||
|
||||
#define CLIENT_GLOBAL_PULSE_NAME "clientglobalpulse"
|
||||
|
||||
@@ -170,6 +64,7 @@ struct ACCOUNT
|
||||
CLIENT_OPTION *ClientOption; // Client Option
|
||||
CLIENT_AUTH *ClientAuth; // Client authentication data
|
||||
bool CheckServerCert; // Check the server certificate
|
||||
bool RetryOnServerCert; // Retry on invalid server certificate
|
||||
X *ServerCert; // Server certificate
|
||||
bool StartupAccount; // Start-up account
|
||||
UCHAR ShortcutKey[SHA1_SIZE]; // Key
|
||||
@@ -195,6 +90,7 @@ struct CLIENT_CONFIG
|
||||
UINT KeepConnectProtocol; // Protocol
|
||||
UINT KeepConnectInterval; // Interval
|
||||
bool NoChangeWcmNetworkSettingOnWindows8; // Don't change the WCM network settings on Windows 8
|
||||
bool NicDownOnDisconnect; // Put NIC down on disconnect/connection loss and put it up again after connecting to VPN server
|
||||
};
|
||||
|
||||
// Version acquisition
|
||||
@@ -347,6 +243,7 @@ struct RPC_CLIENT_CREATE_ACCOUNT
|
||||
CLIENT_AUTH *ClientAuth; // Client authentication data
|
||||
bool StartupAccount; // Startup account
|
||||
bool CheckServerCert; // Checking of the server certificate
|
||||
bool RetryOnServerCert; // Retry on invalid server certificate
|
||||
X *ServerCert; // Server certificate
|
||||
UCHAR ShortcutKey[SHA1_SIZE]; // Shortcut Key
|
||||
};
|
||||
@@ -399,6 +296,7 @@ struct RPC_CLIENT_GET_ACCOUNT
|
||||
CLIENT_AUTH *ClientAuth; // Client authentication data
|
||||
bool StartupAccount; // Startup account
|
||||
bool CheckServerCert; // Check the server certificate
|
||||
bool RetryOnServerCert; // Retry on invalid server certificate
|
||||
X *ServerCert; // Server certificate
|
||||
UCHAR ShortcutKey[SHA1_SIZE]; // Shortcut Key
|
||||
UINT64 CreateDateTime; // Creation date and time (Ver 3.0 or later)
|
||||
@@ -427,9 +325,10 @@ struct RPC_CLIENT_GET_CONNECTION_STATUS
|
||||
X *ServerX; // Server certificate
|
||||
X *ClientX; // Client certificate
|
||||
UINT64 StartTime; // Connection start time
|
||||
/* !!! Do not correct the spelling to keep the backward protocol compatibility !!! */
|
||||
UINT64 FirstConnectionEstablisiedTime; // Connection completion time of the first connection
|
||||
UINT64 CurrentConnectionEstablishTime; // Connection completion time of this connection
|
||||
UINT NumConnectionsEatablished; // Number of connections have been established so far
|
||||
UINT NumConnectionsEstablished; // Number of connections have been established so far
|
||||
bool HalfConnection; // Half-connection
|
||||
bool QoS; // VoIP / QoS
|
||||
UINT MaxTcpConnections; // Maximum number of the TCP connections
|
||||
@@ -442,6 +341,7 @@ struct RPC_CLIENT_GET_CONNECTION_STATUS
|
||||
bool UseCompress; // Use of compression
|
||||
bool IsRUDPSession; // R-UDP session
|
||||
char UnderlayProtocol[64]; // Physical communication protocol
|
||||
char ProtocolDetails[256]; // Protocol details
|
||||
bool IsUdpAccelerationEnabled; // The UDP acceleration is enabled
|
||||
bool IsUsingUdpAcceleration; // Using the UDP acceleration function
|
||||
char SessionName[MAX_SESSION_NAME_LEN + 1]; // Session name
|
||||
@@ -598,9 +498,6 @@ void CcSetServiceToForegroundProcess(REMOTE_CLIENT *r);
|
||||
char *CiGetFirstVLan(CLIENT *c);
|
||||
void CiNormalizeAccountVLan(CLIENT *c);
|
||||
|
||||
bool CompareInternetSetting(INTERNET_SETTING *s1, INTERNET_SETTING *s2);
|
||||
|
||||
|
||||
void CnStart();
|
||||
void CnListenerProc(THREAD *thread, void *param);
|
||||
|
||||
@@ -642,7 +539,6 @@ SOCK *CncConnect();
|
||||
SOCK *CncConnectEx(UINT timeout);
|
||||
void CncReleaseSocket();
|
||||
void CncExit();
|
||||
UINT CncGetSessionId();
|
||||
bool CncExecDriverInstaller(char *arg);
|
||||
SOCK *CncStatusPrinterWindowStart(SESSION *s);
|
||||
void CncStatusPrinterWindowPrint(SOCK *s, wchar_t *str);
|
||||
@@ -651,7 +547,6 @@ void CncStatusPrinterWindowThreadProc(THREAD *thread, void *param);
|
||||
bool CncConnectErrorDlg(SESSION *session, UI_CONNECTERROR_DLG *dlg);
|
||||
void CncConnectErrorDlgHaltThread(THREAD *thread, void *param);
|
||||
bool CncPasswordDlg(SESSION *session, UI_PASSWORD_DLG *dlg);
|
||||
void CncPasswordDlgHaltThread(THREAD *thread, void *param);
|
||||
void CncCheckCert(SESSION *session, UI_CHECKCERT *dlg);
|
||||
void CncCheckCertHaltThread(THREAD *thread, void *param);
|
||||
bool CncSecureSignDlg(SECURE_SIGN *sign);
|
||||
@@ -662,7 +557,6 @@ void CncNicInfoFree(SOCK *s);
|
||||
|
||||
void CtStartClient();
|
||||
void CtStopClient();
|
||||
CLIENT *CtGetClient();
|
||||
void CtReleaseClient(CLIENT *c);
|
||||
bool CtGetClientVersion(CLIENT *c, RPC_CLIENT_VERSION *ver);
|
||||
bool CtGetCmSetting(CLIENT *c, CM_SETTING *s);
|
||||
@@ -793,13 +687,9 @@ bool CiTryToParseAccount(BUF *b);
|
||||
bool CiTryToParseAccountFile(wchar_t *name);
|
||||
bool CiEraseSensitiveInAccount(BUF *b);
|
||||
bool CiHasAccountSensitiveInformation(BUF *b);
|
||||
bool CiHasAccountSensitiveInformationFile(wchar_t *name);
|
||||
void CiApplyInnerVPNServerConfig(CLIENT *c);
|
||||
SERVER *CiNewInnerVPNServer(CLIENT *c, bool relay_server);
|
||||
void CiFreeInnerVPNServer(CLIENT *c, SERVER *s);
|
||||
void CiIncrementNumActiveSessions();
|
||||
void CiDecrementNumActiveSessions();
|
||||
UINT CiGetNumActiveSessions();
|
||||
|
||||
BUF *EncryptPassword(char *password);
|
||||
BUF *EncryptPassword2(char *password);
|
||||
@@ -824,7 +714,6 @@ void InRpcClientEnumSecure(RPC_CLIENT_ENUM_SECURE *e, PACK *p);
|
||||
void OutRpcClientEnumSecure(PACK *p, RPC_CLIENT_ENUM_SECURE *e);
|
||||
void InRpcUseSecure(RPC_USE_SECURE *u, PACK *p);
|
||||
void OutRpcUseSecure(PACK *p, RPC_USE_SECURE *u);
|
||||
void InRpcEnumObjectInSecure(RPC_ENUM_OBJECT_IN_SECURE *e, PACK *p);
|
||||
void OutRpcEnumObjectInSecure(PACK *p, RPC_ENUM_OBJECT_IN_SECURE *e);
|
||||
void InRpcCreateVLan(RPC_CLIENT_CREATE_VLAN *v, PACK *p);
|
||||
void OutRpcCreateVLan(PACK *p, RPC_CLIENT_CREATE_VLAN *v);
|
||||
@@ -854,8 +743,6 @@ void InRpcPolicy(POLICY *o, PACK *p);
|
||||
void OutRpcPolicy(PACK *p, POLICY *o);
|
||||
void InRpcClientGetConnectionStatus(RPC_CLIENT_GET_CONNECTION_STATUS *s, PACK *p);
|
||||
void OutRpcClientGetConnectionStatus(PACK *p, RPC_CLIENT_GET_CONNECTION_STATUS *c);
|
||||
void InRpcClientNotify(RPC_CLIENT_NOTIFY *n, PACK *p);
|
||||
void OutRpcClientNotify(PACK *p, RPC_CLIENT_NOTIFY *n);
|
||||
void InRpcClientConfig(CLIENT_CONFIG *c, PACK *p);
|
||||
void OutRpcClientConfig(PACK *p, CLIENT_CONFIG *c);
|
||||
void InRpcClientPasswordSetting(RPC_CLIENT_PASSWORD_SETTING *a, PACK *p);
|
||||
|
||||
+1126
-466
File diff suppressed because it is too large
Load Diff
+15
-112
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Command.h
|
||||
@@ -320,12 +214,9 @@ void CtPrint(CT *ct, CONSOLE *c);
|
||||
void CtPrintStandard(CT *ct, CONSOLE *c);
|
||||
void CtPrintRow(CONSOLE *c, UINT num, UINT *widths, wchar_t **strings, bool *rights, char separate_char);
|
||||
void VpnCmdInitBootPath();
|
||||
void OutRpcTtResult(PACK *p, TT_RESULT *t);
|
||||
void InRpcTtResult(PACK *p, TT_RESULT *t);
|
||||
|
||||
void CmdPrintError(CONSOLE *c, UINT err);
|
||||
void CmdPrintAbout(CONSOLE *c);
|
||||
void CmdPrintRow(CONSOLE *c, wchar_t *title, wchar_t *tag, ...);
|
||||
wchar_t *CmdPromptPort(CONSOLE *c, void *param);
|
||||
wchar_t *CmdPromptChoosePassword(CONSOLE *c, void *param);
|
||||
bool CmdEvalPort(CONSOLE *c, wchar_t *str, void *param);
|
||||
@@ -345,11 +236,8 @@ bool CmdEvalTcpOrUdp(CONSOLE *c, wchar_t *str, void *param);
|
||||
wchar_t *GetConnectionTypeStr(UINT type);
|
||||
bool CmdEvalHostAndSubnetMask4(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalNetworkAndSubnetMask4(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalNetworkAndSubnetMask6(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalNetworkAndSubnetMask46(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalIpAndMask4(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalIpAndMask6(CONSOLE *c, wchar_t *str, void *param);
|
||||
bool CmdEvalIpAndMask46(CONSOLE *c, wchar_t *str, void *param);
|
||||
wchar_t *GetLogSwitchStr(UINT i);
|
||||
wchar_t *GetPacketLogNameStr(UINT i);
|
||||
UINT StrToLogSwitchType(char *str);
|
||||
@@ -459,11 +347,17 @@ UINT PcAccountEncryptDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *par
|
||||
UINT PcAccountEncryptEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountCompressEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountHttpHeaderAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountHttpHeaderDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountHttpHeaderGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountRetryOnServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountRetryOnServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountServerCertDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountServerCertGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
@@ -483,6 +377,9 @@ UINT PcAccountExport(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcAccountImport(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcRemoteEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcRemoteDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcTunDownOnDisconnectEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcTunDownOnDisconnectDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcTunDownOnDisconnectGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcKeepEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcKeepDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PcKeepSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
@@ -591,9 +488,13 @@ UINT PsCascadeEncryptEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *para
|
||||
UINT PsCascadeEncryptDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeCompressEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeHttpHeaderAdd(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeHttpHeaderDelete(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeHttpHeaderGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsCascadeServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
@@ -686,6 +587,8 @@ UINT PsEtherIpClientList(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsOpenVpnEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsOpenVpnGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsOpenVpnMakeConfig(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsOpenVpnObfuscationEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsOpenVpnObfuscationGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsSstpEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsSstpGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PsServerCertRegenerate(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
|
||||
+35
-231
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Connection.c
|
||||
@@ -659,15 +553,10 @@ void WriteSendFifo(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
return;
|
||||
}
|
||||
|
||||
if (s->UseFastRC4)
|
||||
{
|
||||
Encrypt(ts->SendKey, data, data, size);
|
||||
}
|
||||
|
||||
WriteFifo(ts->SendFifo, data, size);
|
||||
}
|
||||
|
||||
// Write data to the reception FIFO (automatic deccyption)
|
||||
// Write data to the reception FIFO (automatic decryption)
|
||||
void WriteRecvFifo(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
{
|
||||
// Validate arguments
|
||||
@@ -676,11 +565,6 @@ void WriteRecvFifo(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
return;
|
||||
}
|
||||
|
||||
if (s->UseFastRC4)
|
||||
{
|
||||
Encrypt(ts->RecvKey, data, data, size);
|
||||
}
|
||||
|
||||
WriteFifo(ts->RecvFifo, data, size);
|
||||
}
|
||||
|
||||
@@ -688,14 +572,14 @@ void WriteRecvFifo(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
UINT TcpSockRecv(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
{
|
||||
// Receive
|
||||
return Recv(ts->Sock, data, size, s->UseSSLDataEncryption);
|
||||
return Recv(ts->Sock, data, size, s->UseEncrypt);
|
||||
}
|
||||
|
||||
// TCP socket send
|
||||
UINT TcpSockSend(SESSION *s, TCPSOCK *ts, void *data, UINT size)
|
||||
{
|
||||
// Transmission
|
||||
return Send(ts->Sock, data, size, s->UseSSLDataEncryption);
|
||||
return Send(ts->Sock, data, size, s->UseEncrypt);
|
||||
}
|
||||
|
||||
// Send the data as UDP packet
|
||||
@@ -892,7 +776,7 @@ void PutUDPPacketData(CONNECTION *c, void *data, UINT size)
|
||||
block = NewBlock(tmp, size, 0);
|
||||
|
||||
// Insert Block
|
||||
InsertReveicedBlockToQueue(c, block, false);
|
||||
InsertReceivedBlockToQueue(c, block, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -909,7 +793,7 @@ void PutUDPPacketData(CONNECTION *c, void *data, UINT size)
|
||||
}
|
||||
|
||||
// Add a block to the receive queue
|
||||
void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock)
|
||||
void InsertReceivedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock)
|
||||
{
|
||||
SESSION *s;
|
||||
// Validate arguments
|
||||
@@ -1082,12 +966,12 @@ void ConnectionSend(CONNECTION *c, UINT64 now)
|
||||
for (i = 0;i < num;i++)
|
||||
{
|
||||
TCPSOCK *tcpsock = tcpsocks[i];
|
||||
if (tcpsock->Sock->Connected && tcpsock->Sock->AsyncMode &&
|
||||
if (s != NULL && tcpsock->Sock->Connected && tcpsock->Sock->AsyncMode &&
|
||||
IS_SEND_TCP_SOCK(tcpsock))
|
||||
{
|
||||
// Processing of KeepAlive
|
||||
if (now >= tcpsock->NextKeepAliveTime || tcpsock->NextKeepAliveTime == 0 ||
|
||||
(s != NULL && s->UseUdpAcceleration && s->UdpAccel != NULL && s->UdpAccel->MyPortByNatTServerChanged))
|
||||
(s->UseUdpAcceleration && s->UdpAccel != NULL && s->UdpAccel->MyPortByNatTServerChanged))
|
||||
{
|
||||
// Send the KeepAlive
|
||||
SendKeepAlive(c, tcpsock);
|
||||
@@ -1181,7 +1065,7 @@ void ConnectionSend(CONNECTION *c, UINT64 now)
|
||||
UINT j;
|
||||
QUEUE *q;
|
||||
|
||||
if (s->UdpAccel != NULL)
|
||||
if (s != NULL && s->UdpAccel != NULL)
|
||||
{
|
||||
UdpAccelSetTick(s->UdpAccel, now);
|
||||
}
|
||||
@@ -1276,6 +1160,8 @@ void ConnectionSend(CONNECTION *c, UINT64 now)
|
||||
s->TotalSendSizeReal += b->Size;
|
||||
|
||||
c->CurrentSendQueueSize -= b->Size;
|
||||
|
||||
Free(new_buf);
|
||||
}
|
||||
|
||||
FreeBlock(b);
|
||||
@@ -1589,7 +1475,7 @@ SEND_START:
|
||||
{
|
||||
// Packet data array
|
||||
void **datas = MallocFast(sizeof(void *) * num_packet);
|
||||
UINT *sizes = MallocFast(sizeof(UINT *) * num_packet);
|
||||
UINT *sizes = MallocFast(sizeof(UINT) * num_packet);
|
||||
UINT i;
|
||||
|
||||
i = 0;
|
||||
@@ -1831,7 +1717,7 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
|
||||
else
|
||||
{
|
||||
// Add the data block to queue
|
||||
InsertReveicedBlockToQueue(c, b, true);
|
||||
InsertReceivedBlockToQueue(c, b, true);
|
||||
|
||||
if ((current_packet_index % 32) == 0)
|
||||
{
|
||||
@@ -1914,7 +1800,7 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
|
||||
else
|
||||
{
|
||||
// Add the data block to queue
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
|
||||
if ((current_packet_index % 32) == 0)
|
||||
{
|
||||
@@ -1979,7 +1865,7 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
|
||||
else
|
||||
{
|
||||
// Add the data block to queue
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
|
||||
if ((current_packet_index % 32) == 0)
|
||||
{
|
||||
@@ -2208,7 +2094,7 @@ DISCONNECT_THIS_TCP:
|
||||
else
|
||||
{
|
||||
// Add the data block to queue
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
|
||||
if ((current_packet_index % 32) == 0)
|
||||
{
|
||||
@@ -2477,7 +2363,7 @@ DISCONNECT_THIS_TCP:
|
||||
else
|
||||
{
|
||||
// Add the data block to queue
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
}
|
||||
num++;
|
||||
if (num >= MAX_SEND_SOCKET_QUEUE_NUM)
|
||||
@@ -2558,7 +2444,7 @@ DISCONNECT_THIS_TCP:
|
||||
}
|
||||
else
|
||||
{
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
}
|
||||
|
||||
num++;
|
||||
@@ -2675,7 +2561,7 @@ DISCONNECT_THIS_TCP:
|
||||
}
|
||||
else
|
||||
{
|
||||
InsertReveicedBlockToQueue(c, block, true);
|
||||
InsertReceivedBlockToQueue(c, block, true);
|
||||
}
|
||||
num++;
|
||||
if (num >= MAX_SEND_SOCKET_QUEUE_NUM)
|
||||
@@ -2690,7 +2576,7 @@ DISCONNECT_THIS_TCP:
|
||||
else
|
||||
{
|
||||
ETH *e;
|
||||
// Bridge is stopped cureently
|
||||
// Bridge is stopped currently
|
||||
Select(NULL, SELECT_TIME, c1, NULL);
|
||||
|
||||
if (b->LastBridgeTry == 0 || (b->LastBridgeTry + BRIDGE_TRY_SPAN) <= Tick64())
|
||||
@@ -2798,6 +2684,8 @@ BLOCK *NewBlock(void *data, UINT size, int compress)
|
||||
|
||||
b = MallocFast(sizeof(BLOCK));
|
||||
|
||||
b->RawFlagRetUdpAccel = 0;
|
||||
|
||||
b->IsFlooding = false;
|
||||
|
||||
b->PriorityQoS = b->Ttl = b->Param1 = 0;
|
||||
@@ -2867,34 +2755,6 @@ TCPSOCK *NewTcpSock(SOCK *s)
|
||||
return ts;
|
||||
}
|
||||
|
||||
// Set a encryption key for the TCP socket
|
||||
void InitTcpSockRc4Key(TCPSOCK *ts, bool server_mode)
|
||||
{
|
||||
RC4_KEY_PAIR *pair;
|
||||
CRYPT *c1, *c2;
|
||||
// Validate arguments
|
||||
if (ts == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pair = &ts->Rc4KeyPair;
|
||||
|
||||
c1 = NewCrypt(pair->ClientToServerKey, sizeof(pair->ClientToServerKey));
|
||||
c2 = NewCrypt(pair->ServerToClientKey, sizeof(pair->ServerToClientKey));
|
||||
|
||||
if (server_mode)
|
||||
{
|
||||
ts->RecvKey = c1;
|
||||
ts->SendKey = c2;
|
||||
}
|
||||
else
|
||||
{
|
||||
ts->SendKey = c1;
|
||||
ts->RecvKey = c2;
|
||||
}
|
||||
}
|
||||
|
||||
// Release of TCP socket
|
||||
void FreeTcpSock(TCPSOCK *ts)
|
||||
{
|
||||
@@ -3033,7 +2893,7 @@ UINT GetMachineRand()
|
||||
Zero(pcname, sizeof(pcname));
|
||||
GetMachineName(pcname, sizeof(pcname));
|
||||
|
||||
HashSha1(hash, pcname, StrLen(pcname));
|
||||
Sha1(hash, pcname, StrLen(pcname));
|
||||
|
||||
return READ_UINT(hash);
|
||||
}
|
||||
@@ -3045,21 +2905,8 @@ void ConnectionAccept(CONNECTION *c)
|
||||
X *x;
|
||||
K *k;
|
||||
char tmp[128];
|
||||
UCHAR openssl_check_buf[2];
|
||||
char *error_details = NULL;
|
||||
SERVER *server;
|
||||
UCHAR *peek_buf = NULL;
|
||||
UINT peek_buf_size = 1500;
|
||||
char sni[256] = {0};
|
||||
bool native1 = false;
|
||||
bool native2 = false;
|
||||
bool native3 = false;
|
||||
bool no_native = false;
|
||||
UINT peek_size = 0;
|
||||
UINT initial_timeout = CONNECTING_TIMEOUT;
|
||||
bool no_peek_log = false;
|
||||
UCHAR ctoken_hash[SHA1_SIZE];
|
||||
bool no_write_ctoken_log = false;
|
||||
|
||||
// Validate arguments
|
||||
if (c == NULL)
|
||||
@@ -3069,13 +2916,7 @@ void ConnectionAccept(CONNECTION *c)
|
||||
|
||||
Zero(ctoken_hash, sizeof(ctoken_hash));
|
||||
|
||||
peek_buf = ZeroMalloc(peek_buf_size);
|
||||
|
||||
Debug("ConnectionAccept()\n");
|
||||
|
||||
server = c->Cedar->Server;
|
||||
|
||||
// get a socket
|
||||
// Get a socket
|
||||
s = c->FirstSock;
|
||||
AddRef(s->ref);
|
||||
|
||||
@@ -3089,37 +2930,18 @@ void ConnectionAccept(CONNECTION *c)
|
||||
initial_timeout += GetMachineRand() % (CONNECTING_TIMEOUT / 2);
|
||||
SetTimeout(s, initial_timeout);
|
||||
|
||||
|
||||
// Peek whether OpenSSL packet
|
||||
if (s->IsReverseAcceptedSocket == false)
|
||||
// Handle third-party protocols
|
||||
if (s->IsReverseAcceptedSocket == false && s->Type == SOCK_TCP)
|
||||
{
|
||||
if (s->Type == SOCK_TCP && (c->Cedar != NULL && c->Cedar->Server != NULL && c->Cedar->Server->DisableOpenVPNServer == false))
|
||||
if (c->Cedar != NULL && c->Cedar->Server != NULL)
|
||||
{
|
||||
if (Peek(s, openssl_check_buf, sizeof(openssl_check_buf)) == sizeof(openssl_check_buf))
|
||||
c->Type = CONNECTION_TYPE_OTHER;
|
||||
|
||||
if (ProtoHandleConnection(c->Cedar, s) == true)
|
||||
{
|
||||
if (OvsCheckTcpRecvBufIfOpenVPNProtocol(openssl_check_buf, sizeof(openssl_check_buf)))
|
||||
{
|
||||
// Detect OpenSSL packet
|
||||
Debug("Detect OpenSSL on TCP!\n");
|
||||
|
||||
no_native = true;
|
||||
|
||||
if (OvsGetNoOpenVpnTcp() == false)
|
||||
{
|
||||
// Do OpenSSL processing
|
||||
c->Type = CONNECTION_TYPE_OPENVPN;
|
||||
if (OvsPerformTcpServer(c->Cedar, s) == false)
|
||||
{
|
||||
error_details = "OpenVPN_TCP_Aborted";
|
||||
}
|
||||
}
|
||||
|
||||
goto ERROR;
|
||||
}
|
||||
goto FINAL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Specify the encryption algorithm
|
||||
@@ -3136,22 +2958,18 @@ void ConnectionAccept(CONNECTION *c)
|
||||
Unlock(c->Cedar->lock);
|
||||
|
||||
// Start the SSL communication
|
||||
Debug("StartSSL()\n");
|
||||
Copy(&s->SslAcceptSettings, &c->Cedar->SslAcceptSettings, sizeof(SSL_ACCEPT_SETTINGS));
|
||||
if (StartSSL(s, x, k) == false)
|
||||
{
|
||||
// Failed
|
||||
AddNoSsl(c->Cedar, &s->RemoteIP);
|
||||
Debug("Failed to StartSSL.\n");
|
||||
Debug("ConnectionAccept(): StartSSL() failed\n");
|
||||
FreeX(x);
|
||||
FreeK(k);
|
||||
|
||||
error_details = "StartSSL";
|
||||
|
||||
goto ERROR;
|
||||
goto FINAL;
|
||||
}
|
||||
|
||||
|
||||
FreeX(x);
|
||||
FreeK(k);
|
||||
|
||||
@@ -3163,29 +2981,18 @@ void ConnectionAccept(CONNECTION *c)
|
||||
if (ServerAccept(c) == false)
|
||||
{
|
||||
// Failed
|
||||
Debug("ServerAccept Failed. Err = %u\n", c->Err);
|
||||
goto ERROR;
|
||||
Debug("ConnectionAccept(): ServerAccept() failed with error %u\n", c->Err);
|
||||
}
|
||||
|
||||
FINAL:
|
||||
if (c->flag1 == false)
|
||||
{
|
||||
Debug("%s %u c->flag1 == false\n", __FILE__, __LINE__);
|
||||
Disconnect(s);
|
||||
}
|
||||
|
||||
DelConnection(c->Cedar, c);
|
||||
ReleaseSock(s);
|
||||
|
||||
Free(peek_buf);
|
||||
return;
|
||||
|
||||
ERROR:
|
||||
Debug("ConnectionAccept() Error.\n");
|
||||
|
||||
|
||||
Disconnect(s);
|
||||
DelConnection(c->Cedar, c);
|
||||
ReleaseSock(s);
|
||||
Free(peek_buf);
|
||||
}
|
||||
|
||||
// Stop the threads putting additional connection of all that are currently running
|
||||
@@ -3659,9 +3466,6 @@ CONNECTION *NewClientConnectionEx(SESSION *s, char *client_str, UINT client_ver,
|
||||
StrCpy(c->ServerName, sizeof(c->ServerName), s->ClientOption->Hostname);
|
||||
c->ServerPort = s->ClientOption->Port;
|
||||
|
||||
// TLS 1.0 using flag
|
||||
c->DontUseTls1 = s->ClientOption->NoTls1;
|
||||
|
||||
// Create queues
|
||||
c->ReceivedBlocks = NewQueue();
|
||||
c->SendBlocks = NewQueue();
|
||||
|
||||
+35
-138
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Connection.h
|
||||
@@ -163,35 +57,35 @@ struct RC4_KEY_PAIR
|
||||
// Client Options
|
||||
struct CLIENT_OPTION
|
||||
{
|
||||
wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Connection setting name
|
||||
char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
|
||||
UINT Port; // Port number
|
||||
UINT PortUDP; // UDP port number (0: Use only TCP)
|
||||
UINT ProxyType; // Type of proxy
|
||||
char ProxyName[MAX_HOST_NAME_LEN + 1]; // Proxy server name
|
||||
UINT ProxyPort; // Port number of the proxy server
|
||||
char ProxyUsername[MAX_PROXY_USERNAME_LEN + 1]; // Maximum user name length
|
||||
char ProxyPassword[MAX_PROXY_PASSWORD_LEN + 1]; // Maximum password length
|
||||
UINT NumRetry; // Automatic retries
|
||||
UINT RetryInterval; // Retry interval
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // HUB name
|
||||
UINT MaxConnection; // Maximum number of concurrent TCP connections
|
||||
bool UseEncrypt; // Use encrypted communication
|
||||
bool UseCompress; // Use data compression
|
||||
bool HalfConnection; // Use half connection in TCP
|
||||
bool NoRoutingTracking; // Disable the routing tracking
|
||||
char DeviceName[MAX_DEVICE_NAME_LEN + 1]; // VLAN device name
|
||||
UINT AdditionalConnectionInterval; // Connection attempt interval when additional connection establish
|
||||
UINT ConnectionDisconnectSpan; // Disconnection interval
|
||||
bool HideStatusWindow; // Hide the status window
|
||||
bool HideNicInfoWindow; // Hide the NIC status window
|
||||
bool RequireMonitorMode; // Monitor port mode
|
||||
bool RequireBridgeRoutingMode; // Bridge or routing mode
|
||||
bool DisableQoS; // Disable the VoIP / QoS function
|
||||
bool FromAdminPack; // For Administration Pack
|
||||
bool NoTls1; // Do not use TLS 1.0
|
||||
bool NoUdpAcceleration; // Do not use UDP acceleration mode
|
||||
UCHAR HostUniqueKey[SHA1_SIZE]; // Host unique key
|
||||
wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1]; // Connection setting name
|
||||
char Hostname[MAX_HOST_NAME_LEN + 1]; // Host name
|
||||
UINT Port; // Port number
|
||||
UINT PortUDP; // UDP port number (0: Use only TCP)
|
||||
UINT ProxyType; // Type of proxy
|
||||
char ProxyName[MAX_HOST_NAME_LEN + 1]; // Proxy server name
|
||||
UINT ProxyPort; // Port number of the proxy server
|
||||
char ProxyUsername[PROXY_MAX_USERNAME_LEN + 1]; // Maximum user name length
|
||||
char ProxyPassword[PROXY_MAX_PASSWORD_LEN + 1]; // Maximum password length
|
||||
char CustomHttpHeader[HTTP_CUSTOM_HEADER_MAX_SIZE + 1]; // Custom HTTP proxy header
|
||||
UINT NumRetry; // Automatic retries
|
||||
UINT RetryInterval; // Retry interval
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // HUB name
|
||||
UINT MaxConnection; // Maximum number of concurrent TCP connections
|
||||
bool UseEncrypt; // Use encrypted communication
|
||||
bool UseCompress; // Use data compression
|
||||
bool HalfConnection; // Use half connection in TCP
|
||||
bool NoRoutingTracking; // Disable the routing tracking
|
||||
char DeviceName[MAX_DEVICE_NAME_LEN + 1]; // VLAN device name
|
||||
UINT AdditionalConnectionInterval; // Connection attempt interval when additional connection establish
|
||||
UINT ConnectionDisconnectSpan; // Disconnection interval
|
||||
bool HideStatusWindow; // Hide the status window
|
||||
bool HideNicInfoWindow; // Hide the NIC status window
|
||||
bool RequireMonitorMode; // Monitor port mode
|
||||
bool RequireBridgeRoutingMode; // Bridge or routing mode
|
||||
bool DisableQoS; // Disable the VoIP / QoS function
|
||||
bool FromAdminPack; // For Administration Pack
|
||||
bool NoUdpAcceleration; // Do not use UDP acceleration mode
|
||||
UCHAR HostUniqueKey[SHA1_SIZE]; // Host unique key
|
||||
};
|
||||
|
||||
// Client authentication data
|
||||
@@ -261,6 +155,7 @@ struct BLOCK
|
||||
UINT Ttl; // TTL value (Used only in ICMP NAT of Virtual.c)
|
||||
UINT Param1; // Parameter 1
|
||||
bool IsFlooding; // Is flooding packet
|
||||
UCHAR RawFlagRetUdpAccel; // Raw flag returned by UDP accel
|
||||
};
|
||||
|
||||
// Connection structure
|
||||
@@ -310,10 +205,10 @@ struct CONNECTION
|
||||
IP ClientIp; // Client IP address
|
||||
char ClientHostname[MAX_HOST_NAME_LEN + 1]; // Client host name
|
||||
UINT Type; // Type
|
||||
bool DontUseTls1; // Do not use TLS 1.0
|
||||
void *hWndForUI; // Parent window
|
||||
bool IsInProc; // In-process
|
||||
char InProcPrefix[64]; // Prefix
|
||||
UINT InProcLayer; // InProc layer
|
||||
UINT AdditionalConnectionFailedCounter; // Additional connection failure counter
|
||||
UINT64 LastCounterResetTick; // Time the counter was reset finally
|
||||
bool WasSstp; // Processed the SSTP
|
||||
@@ -323,6 +218,9 @@ struct CONNECTION
|
||||
UINT LastPacketQueueSize; // The last queue size of packets
|
||||
UINT LastRecvFifoTotalSize; // The last RecvFifo total size
|
||||
UINT LastRecvBlocksNum; // The last ReceivedBlocks num
|
||||
bool IsJsonRpc; // Is JSON-RPC
|
||||
bool JsonRpcAuthed; // JSON-RPC Authed
|
||||
LISTENER *Listener; // Listener ref
|
||||
};
|
||||
|
||||
|
||||
@@ -352,8 +250,7 @@ void SendKeepAlive(CONNECTION *c, TCPSOCK *ts);
|
||||
void DisconnectUDPSockets(CONNECTION *c);
|
||||
void PutUDPPacketData(CONNECTION *c, void *data, UINT size);
|
||||
void SendDataWithUDP(SOCK *s, CONNECTION *c);
|
||||
void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock);
|
||||
void InitTcpSockRc4Key(TCPSOCK *ts, bool server_mode);
|
||||
void InsertReceivedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock);
|
||||
UINT TcpSockRecv(SESSION *s, TCPSOCK *ts, void *data, UINT size);
|
||||
UINT TcpSockSend(SESSION *s, TCPSOCK *ts, void *data, UINT size);
|
||||
void WriteSendFifo(SESSION *s, TCPSOCK *ts, void *data, UINT size);
|
||||
|
||||
+10
-112
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Console.c
|
||||
@@ -933,11 +827,11 @@ RETRY:
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
|
||||
// There is more than one candidate
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGIOUS_CMD"), cmd_name);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGUOUS_CMD"), cmd_name);
|
||||
c->Write(c, tmp);
|
||||
c->Write(c, _UU("CON_AMBIGIOUS_CMD_1"));
|
||||
c->Write(c, _UU("CON_AMBIGUOUS_CMD_1"));
|
||||
PrintCandidateHelp(c, NULL, candidate, 1);
|
||||
c->Write(c, _UU("CON_AMBIGIOUS_CMD_2"));
|
||||
c->Write(c, _UU("CON_AMBIGUOUS_CMD_2"));
|
||||
|
||||
c->RetCode = ERR_BAD_COMMAND_OR_PARAM;
|
||||
}
|
||||
@@ -1338,14 +1232,14 @@ LIST *ParseCommandList(CONSOLE *c, char *cmd_name, wchar_t *command, PARAM param
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
|
||||
// There is more than one candidate
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGIOUS_PARAM"), param_list->Token[i]);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGUOUS_PARAM"), param_list->Token[i]);
|
||||
c->Write(c, tmp);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGIOUS_PARAM_1"), cmd_name);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CON_AMBIGUOUS_PARAM_1"), cmd_name);
|
||||
c->Write(c, tmp);
|
||||
|
||||
PrintCandidateHelp(c, cmd_name, candidate, 1);
|
||||
|
||||
c->Write(c, _UU("CON_AMBIGIOUS_PARAM_2"));
|
||||
c->Write(c, _UU("CON_AMBIGUOUS_PARAM_2"));
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -2048,7 +1942,11 @@ bool PasswordPrompt(char *password, UINT size)
|
||||
else if (c == 0xE0)
|
||||
{
|
||||
// Read one more character
|
||||
#ifdef OS_WIN32
|
||||
c = getch();
|
||||
#else // OS_WIN32
|
||||
c = getc(stdin);
|
||||
#endif // OS_WIN32
|
||||
if (c == 0x4B || c == 0x53)
|
||||
{
|
||||
// Backspace
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Console.h
|
||||
|
||||
+26
-164
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// DDNS.c
|
||||
@@ -143,6 +37,9 @@ void DCGetStatus(DDNS_CLIENT *c, DDNS_CLIENT_STATUS *st)
|
||||
Copy(&st->InternetSetting, &c->InternetSetting, sizeof(INTERNET_SETTING));
|
||||
}
|
||||
Unlock(c->Lock);
|
||||
|
||||
UniStrCpy(st->ErrStr_IPv4, sizeof(st->ErrStr_IPv4), _E(st->Err_IPv4));
|
||||
UniStrCpy(st->ErrStr_IPv6, sizeof(st->ErrStr_IPv6), _E(st->Err_IPv6));
|
||||
}
|
||||
|
||||
// Set the Internet settings
|
||||
@@ -227,7 +124,7 @@ UINT DCChangeHostName(DDNS_CLIENT *c, char *hostname)
|
||||
void DCThread(THREAD *thread, void *param)
|
||||
{
|
||||
DDNS_CLIENT *c;
|
||||
INTERRUPT_MANAGER *interrput;
|
||||
INTERRUPT_MANAGER *interrupt;
|
||||
UINT last_ip_hash = 0;
|
||||
void *route_change_poller = NULL;
|
||||
bool last_time_ip_changed = false;
|
||||
@@ -243,7 +140,7 @@ void DCThread(THREAD *thread, void *param)
|
||||
|
||||
c = (DDNS_CLIENT *)param;
|
||||
|
||||
interrput = NewInterruptManager();
|
||||
interrupt = NewInterruptManager();
|
||||
|
||||
route_change_poller = NewRouteChange();
|
||||
IsRouteChanged(route_change_poller);
|
||||
@@ -346,7 +243,7 @@ void DCThread(THREAD *thread, void *param)
|
||||
|
||||
c->NextGetMyIpTick_IPv4 = Tick64() + (UINT64)next_interval;
|
||||
|
||||
AddInterrupt(interrput, c->NextGetMyIpTick_IPv4);
|
||||
AddInterrupt(interrupt, c->NextGetMyIpTick_IPv4);
|
||||
}
|
||||
|
||||
// Self IPv6 address acquisition
|
||||
@@ -381,7 +278,7 @@ void DCThread(THREAD *thread, void *param)
|
||||
|
||||
c->NextGetMyIpTick_IPv6 = Tick64() + (UINT64)next_interval;
|
||||
|
||||
AddInterrupt(interrput, c->NextGetMyIpTick_IPv6);
|
||||
AddInterrupt(interrupt, c->NextGetMyIpTick_IPv6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -419,7 +316,7 @@ void DCThread(THREAD *thread, void *param)
|
||||
SiApplyAzureConfig(c->Cedar->Server, &st);
|
||||
}
|
||||
|
||||
AddInterrupt(interrput, c->NextRegisterTick_IPv4);
|
||||
AddInterrupt(interrupt, c->NextRegisterTick_IPv4);
|
||||
}
|
||||
|
||||
if (c->Halt)
|
||||
@@ -454,15 +351,15 @@ void DCThread(THREAD *thread, void *param)
|
||||
SiApplyAzureConfig(c->Cedar->Server, &st);
|
||||
}
|
||||
|
||||
AddInterrupt(interrput, c->NextRegisterTick_IPv6);
|
||||
AddInterrupt(interrupt, c->NextRegisterTick_IPv6);
|
||||
}
|
||||
|
||||
interval = GetNextIntervalForInterrupt(interrput);
|
||||
interval = GetNextIntervalForInterrupt(interrupt);
|
||||
interval = MIN(interval, 1234);
|
||||
|
||||
if (n == 1)
|
||||
{
|
||||
interval = MIN(interval, 0);
|
||||
interval = 0;
|
||||
}
|
||||
|
||||
if (c->Halt)
|
||||
@@ -490,21 +387,7 @@ void DCThread(THREAD *thread, void *param)
|
||||
}
|
||||
|
||||
FreeRouteChange(route_change_poller);
|
||||
FreeInterruptManager(interrput);
|
||||
}
|
||||
|
||||
// Command to update immediately
|
||||
void DCUpdateNow(DDNS_CLIENT *c)
|
||||
{
|
||||
// Validate arguments
|
||||
if (c == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
c->NextRegisterTick_IPv4 = c->NextRegisterTick_IPv6 = 0;
|
||||
|
||||
Set(c->Event);
|
||||
FreeInterruptManager(interrupt);
|
||||
}
|
||||
|
||||
// Execution of registration
|
||||
@@ -526,9 +409,6 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
|
||||
char current_azure_ip[MAX_SIZE];
|
||||
INTERNET_SETTING t;
|
||||
UINT build = 0;
|
||||
bool use_https = false;
|
||||
bool use_vgs = false;
|
||||
bool no_cert_verify = false;
|
||||
char add_header_name[64];
|
||||
char add_header_value[64];
|
||||
// Validate arguments
|
||||
@@ -635,7 +515,7 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
|
||||
PackAddStr(req, "current_azure_ip", current_azure_ip);
|
||||
}
|
||||
|
||||
HashSha1(key_hash, key_str, StrLen(key_str));
|
||||
Sha1(key_hash, key_str, StrLen(key_str));
|
||||
BinToStr(key_hash_str, sizeof(key_hash_str), key_hash, sizeof(key_hash));
|
||||
StrLower(key_hash_str);
|
||||
|
||||
@@ -652,33 +532,20 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
|
||||
Format(url2, sizeof(url2), "%s?v=%I64u", url, Rand64());
|
||||
Format(url3, sizeof(url3), url2, key_hash_str[2], key_hash_str[3]);
|
||||
|
||||
if (use_https == false)
|
||||
{
|
||||
ReplaceStr(url3, sizeof(url3), url3, "https://", "http://");
|
||||
}
|
||||
ReplaceStr(url3, sizeof(url3), url3, "https://", "http://");
|
||||
|
||||
ReplaceStr(url3, sizeof(url3), url3, ".servers", ".open.servers");
|
||||
|
||||
cert_hash = StrToBin(DDNS_CERT_HASH);
|
||||
|
||||
if (no_cert_verify == false)
|
||||
{
|
||||
cert_hash = StrToBin(DDNS_CERT_HASH);
|
||||
}
|
||||
|
||||
ret = NULL;
|
||||
|
||||
|
||||
if (ret == NULL)
|
||||
{
|
||||
Debug("WpcCall: %s\n", url3);
|
||||
ret = WpcCallEx2(url3, &t, DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, "register", req,
|
||||
NULL, NULL, ((cert_hash != NULL && ((cert_hash->Size % SHA1_SIZE) == 0)) ? cert_hash->Buf : NULL),
|
||||
(cert_hash != NULL ? cert_hash->Size / SHA1_SIZE : 0),
|
||||
NULL, DDNS_RPC_MAX_RECV_SIZE,
|
||||
add_header_name, add_header_value,
|
||||
DDNS_SNI_VER_STRING);
|
||||
Debug("WpcCall Ret: %u\n", ret);
|
||||
}
|
||||
Debug("WpcCall: %s\n", url3);
|
||||
ret = WpcCallEx2(url3, &t, DDNS_CONNECT_TIMEOUT, DDNS_COMM_TIMEOUT, "register", req,
|
||||
NULL, NULL, ((cert_hash != NULL && ((cert_hash->Size % SHA1_SIZE) == 0)) ? cert_hash->Buf : NULL),
|
||||
(cert_hash != NULL ? cert_hash->Size / SHA1_SIZE : 0),
|
||||
NULL, DDNS_RPC_MAX_RECV_SIZE,
|
||||
add_header_name, add_header_value,
|
||||
DDNS_SNI_VER_STRING);
|
||||
Debug("WpcCall Ret: %u\n", ret);
|
||||
|
||||
FreeBuf(cert_hash);
|
||||
|
||||
@@ -828,7 +695,6 @@ UINT DCGetMyIpMain(DDNS_CLIENT *c, bool ipv6, char *dst, UINT dst_size, bool use
|
||||
URL_DATA data;
|
||||
BUF *recv;
|
||||
BUF *cert_hash = NULL;
|
||||
bool no_cert_verify = false;
|
||||
// Validate arguments
|
||||
if (dst == NULL || c == NULL)
|
||||
{
|
||||
@@ -872,11 +738,7 @@ UINT DCGetMyIpMain(DDNS_CLIENT *c, bool ipv6, char *dst, UINT dst_size, bool use
|
||||
return ERR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (no_cert_verify == false)
|
||||
{
|
||||
cert_hash = StrToBin(DDNS_CERT_HASH);
|
||||
}
|
||||
|
||||
cert_hash = StrToBin(DDNS_CERT_HASH);
|
||||
|
||||
StrCpy(data.SniString, sizeof(data.SniString), DDNS_SNI_VER_STRING);
|
||||
|
||||
@@ -963,7 +825,7 @@ DDNS_CLIENT *NewDDNSClient(CEDAR *cedar, UCHAR *key, INTERNET_SETTING *t)
|
||||
Copy(c->Key, key, SHA1_SIZE);
|
||||
}
|
||||
|
||||
HashSha1(key_hash, c->Key, sizeof(c->Key));
|
||||
Sha1(key_hash, c->Key, sizeof(c->Key));
|
||||
|
||||
|
||||
if (t != NULL)
|
||||
@@ -1035,7 +897,7 @@ void DCGenNewKey(UCHAR *key)
|
||||
GetCurrentMachineIpProcessHash(hash);
|
||||
WriteBuf(b, hash, sizeof(hash));
|
||||
|
||||
HashSha1(key, b->Buf, b->Size);
|
||||
Sha1(key, b->Buf, b->Size);
|
||||
Rand(rand, sizeof(rand));
|
||||
|
||||
for (i = 0;i < SHA1_SIZE;i++)
|
||||
|
||||
+2
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// DDNS.h
|
||||
@@ -217,6 +111,8 @@ struct DDNS_REGISTER_PARAM
|
||||
struct DDNS_CLIENT_STATUS
|
||||
{
|
||||
UINT Err_IPv4, Err_IPv6; // Last error
|
||||
wchar_t ErrStr_IPv4[MAX_SIZE];
|
||||
wchar_t ErrStr_IPv6[MAX_SIZE];
|
||||
char CurrentHostName[DDNS_MAX_HOSTNAME + 1]; // Current host name
|
||||
char CurrentFqdn[MAX_SIZE]; // Current FQDN
|
||||
char DnsSuffix[MAX_SIZE]; // DNS suffix
|
||||
@@ -237,7 +133,6 @@ void DCThread(THREAD *thread, void *param);
|
||||
UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace_v6);
|
||||
UINT DCGetMyIpMain(DDNS_CLIENT *c, bool ipv6, char *dst, UINT dst_size, bool use_ssl, char *replace_v6);
|
||||
UINT DCGetMyIp(DDNS_CLIENT *c, bool ipv6, char *dst, UINT dst_size, char *replace_v6);
|
||||
void DCUpdateNow(DDNS_CLIENT *c);
|
||||
void DCGetStatus(DDNS_CLIENT *c, DDNS_CLIENT_STATUS *st);
|
||||
UINT DCChangeHostName(DDNS_CLIENT *c, char *hostname);
|
||||
void DCSetInternetSetting(DDNS_CLIENT *c, INTERNET_SETTING *t);
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Database.c
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Database.h
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// EM.c
|
||||
@@ -626,7 +520,7 @@ UINT EmPasswordDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
|
||||
{
|
||||
case IDOK:
|
||||
GetTxtA(hWnd, E_PASSWORD1, pass1, sizeof(pass1));
|
||||
Hash(hash, pass1, StrLen(pass1), true);
|
||||
Sha0(hash, pass1, StrLen(pass1));
|
||||
Zero(&t, sizeof(t));
|
||||
Copy(t.HashedPassword, hash, SHA1_SIZE);
|
||||
if (CALL(hWnd, EcSetPassword(r, &t)) == false)
|
||||
@@ -781,7 +675,7 @@ void EmAddInit(HWND hWnd, EM_ADD *p)
|
||||
// Edit mode (to obtain a configuration)
|
||||
wchar_t tmp[MAX_PATH];
|
||||
RPC_ADD_DEVICE t;
|
||||
Hide(hWnd, R_PROMISCUS);
|
||||
Hide(hWnd, R_PROMISCUOUS);
|
||||
|
||||
Zero(&t, sizeof(t));
|
||||
StrCpy(t.DeviceName, sizeof(t.DeviceName), p->DeviceName);
|
||||
@@ -827,7 +721,7 @@ void EmAddOk(HWND hWnd, EM_ADD *p)
|
||||
|
||||
if (p->NewMode)
|
||||
{
|
||||
t.NoPromiscus = IsChecked(hWnd, R_PROMISCUS);
|
||||
t.NoPromiscuous = IsChecked(hWnd, R_PROMISCUOUS);
|
||||
}
|
||||
|
||||
if (p->NewMode)
|
||||
|
||||
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// EM.h
|
||||
|
||||
+1
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// EMInner.h
|
||||
@@ -114,7 +8,7 @@
|
||||
// Constants
|
||||
#define EM_REG_KEY "Software\\" GC_REG_COMPANY_NAME "\\EtherLogger\\Manager"
|
||||
|
||||
// Innner structure
|
||||
// Inner structure
|
||||
typedef struct EM_ADD
|
||||
{
|
||||
RPC *Rpc;
|
||||
|
||||
+19
-143
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// EtherLog.c
|
||||
@@ -236,11 +130,11 @@ UINT EcConnect(char *host, UINT port, char *password, RPC **rpc)
|
||||
SetTimeout(s, 5000);
|
||||
|
||||
// Hash the password
|
||||
Hash(password_hash, password, StrLen(password), true);
|
||||
Sha0(password_hash, password, StrLen(password));
|
||||
|
||||
// Receive the random number
|
||||
Zero(rand, sizeof(rand));
|
||||
RecvAll(s, rand, sizeof(rand), false);
|
||||
(void)RecvAll(s, rand, sizeof(rand), false);
|
||||
SecurePassword(response, password_hash, rand);
|
||||
|
||||
// Send a response
|
||||
@@ -276,16 +170,17 @@ UINT EcConnect(char *host, UINT port, char *password, RPC **rpc)
|
||||
// RPC server function
|
||||
PACK *ElRpcServer(RPC *r, char *name, PACK *p)
|
||||
{
|
||||
EL *e = (EL *)r->Param;
|
||||
EL *e;
|
||||
PACK *ret;
|
||||
UINT err;
|
||||
bool ok;
|
||||
// Validate arguments
|
||||
if (r == NULL || name == NULL || p == NULL || e == NULL)
|
||||
if (r == NULL || name == NULL || p == NULL || r->Param == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
e = (EL *)r->Param;
|
||||
ret = NewPack();
|
||||
err = ERR_NO_ERROR;
|
||||
ok = false;
|
||||
@@ -323,7 +218,6 @@ DECLARE_SC("GetDevice", RPC_ADD_DEVICE, EcGetDevice, InRpcAddDevice, OutRpcAddDe
|
||||
DECLARE_SC_EX("EnumDevice", RPC_ENUM_DEVICE, EcEnumDevice, InRpcEnumDevice, OutRpcEnumDevice, FreeRpcEnumDevice)
|
||||
DECLARE_SC("SetPassword", RPC_SET_PASSWORD, EcSetPassword, InRpcSetPassword, OutRpcSetPassword)
|
||||
DECLARE_SC_EX("EnumAllDevice", RPC_ENUM_DEVICE, EcEnumAllDevice, InRpcEnumDevice, OutRpcEnumDevice, FreeRpcEnumDevice)
|
||||
DECLARE_SC("AddLicenseKey", RPC_TEST, EcAddLicenseKey, InRpcTest, OutRpcTest)
|
||||
DECLARE_SC("DelLicenseKey", RPC_TEST, EcDelLicenseKey, InRpcTest, OutRpcTest)
|
||||
DECLARE_SC_EX("EnumLicenseKey", RPC_ENUM_LICENSE_KEY, EcEnumLicenseKey, InRpcEnumLicenseKey, OutRpcEnumLicenseKey, FreeRpcEnumLicenseKey)
|
||||
DECLARE_SC("GetLicenseStatus", RPC_EL_LICENSE_STATUS, EcGetLicenseStatus, InRpcElLicenseStatus, OutRpcElLicenseStatus)
|
||||
@@ -380,11 +274,6 @@ UINT EtGetBridgeSupport(EL *a, RPC_BRIDGE_SUPPORT *t)
|
||||
return ERR_NO_ERROR;
|
||||
}
|
||||
|
||||
// Update the status by checking the all licenses
|
||||
void ElCheckLicense(EL_LICENSE_STATUS *st, LICENSE *e)
|
||||
{
|
||||
}
|
||||
|
||||
// Save by analyzing the status of the current license
|
||||
void ElParseCurrentLicenseStatus(LICENSE_SYSTEM *s, EL_LICENSE_STATUS *st)
|
||||
{
|
||||
@@ -444,7 +333,7 @@ UINT EtSetPassword(EL *e, RPC_SET_PASSWORD *t)
|
||||
// Add a device
|
||||
UINT EtAddDevice(EL *e, RPC_ADD_DEVICE *t)
|
||||
{
|
||||
if (ElAddCaptureDevice(e, t->DeviceName, &t->LogSetting, t->NoPromiscus) == false)
|
||||
if (ElAddCaptureDevice(e, t->DeviceName, &t->LogSetting, t->NoPromiscuous) == false)
|
||||
{
|
||||
return ERR_CAPTURE_DEVICE_ADD_ERROR;
|
||||
}
|
||||
@@ -485,7 +374,7 @@ UINT EtGetDevice(EL *e, RPC_ADD_DEVICE *t)
|
||||
ret = ERR_NO_ERROR;
|
||||
|
||||
Copy(&t->LogSetting, &d->LogSetting, sizeof(HUB_LOG));
|
||||
t->NoPromiscus = d->NoPromiscus;
|
||||
t->NoPromiscuous = d->NoPromiscuous;
|
||||
}
|
||||
}
|
||||
UnlockList(e->DeviceList);
|
||||
@@ -583,7 +472,7 @@ void InRpcAddDevice(RPC_ADD_DEVICE *t, PACK *p)
|
||||
|
||||
Zero(t, sizeof(RPC_ADD_DEVICE));
|
||||
PackGetStr(p, "DeviceName", t->DeviceName, sizeof(t->DeviceName));
|
||||
t->NoPromiscus = PackGetInt(p, "NoPromiscus");
|
||||
t->NoPromiscuous = PackGetInt(p, "NoPromiscuous");
|
||||
t->LogSetting.PacketLogSwitchType = PackGetInt(p, "PacketLogSwitchType");
|
||||
|
||||
for (i = 0;i < NUM_PACKET_LOG;i++)
|
||||
@@ -602,7 +491,7 @@ void OutRpcAddDevice(PACK *p, RPC_ADD_DEVICE *t)
|
||||
}
|
||||
|
||||
PackAddStr(p, "DeviceName", t->DeviceName);
|
||||
PackAddInt(p, "NoPromiscus", t->NoPromiscus);
|
||||
PackAddInt(p, "NoPromiscuous", t->NoPromiscuous);
|
||||
PackAddInt(p, "PacketLogSwitchType", t->LogSetting.PacketLogSwitchType);
|
||||
|
||||
for (i = 0;i < NUM_PACKET_LOG;i++)
|
||||
@@ -669,6 +558,7 @@ void OutRpcEnumDevice(PACK *p, RPC_ENUM_DEVICE *t)
|
||||
|
||||
PackAddInt(p, "NumItem", t->NumItem);
|
||||
|
||||
PackSetCurrentJsonGroupName(p, "DeviceList");
|
||||
for (i = 0;i < t->NumItem;i++)
|
||||
{
|
||||
RPC_ENUM_DEVICE_ITEM *d = &t->Items[i];
|
||||
@@ -676,6 +566,7 @@ void OutRpcEnumDevice(PACK *p, RPC_ENUM_DEVICE *t)
|
||||
PackAddStrEx(p, "DeviceName", d->DeviceName, i, t->NumItem);
|
||||
PackAddBoolEx(p, "Active", d->Active, i, t->NumItem);
|
||||
}
|
||||
PackSetCurrentJsonGroupName(p, NULL);
|
||||
|
||||
PackAddBool(p, "IsLicenseSupported", t->IsLicenseSupported);
|
||||
}
|
||||
@@ -716,7 +607,7 @@ void OutRpcElLicenseStatus(PACK *p, RPC_EL_LICENSE_STATUS *t)
|
||||
|
||||
PackAddBool(p, "Valid", t->Valid);
|
||||
PackAddInt64(p, "SystemId", t->SystemId);
|
||||
PackAddInt64(p, "SystemExpires", t->SystemExpires);
|
||||
PackAddTime64(p, "SystemExpires", t->SystemExpires);
|
||||
}
|
||||
|
||||
// Listener thread
|
||||
@@ -754,7 +645,7 @@ void ElListenerProc(THREAD *thread, void *param)
|
||||
// Receive a response
|
||||
SecurePassword(pass1, e->HashedPassword, rand);
|
||||
Zero(pass2, sizeof(pass2));
|
||||
RecvAll(s, pass2, sizeof(pass2), false);
|
||||
(void)RecvAll(s, pass2, sizeof(pass2), false);
|
||||
|
||||
if (Cmp(pass1, pass2, SHA1_SIZE) != 0)
|
||||
{
|
||||
@@ -969,7 +860,7 @@ bool ElDeleteCaptureDevice(EL *e, char *name)
|
||||
}
|
||||
|
||||
// Add a capture device
|
||||
bool ElAddCaptureDevice(EL *e, char *name, HUB_LOG *log, bool no_promiscus)
|
||||
bool ElAddCaptureDevice(EL *e, char *name, HUB_LOG *log, bool no_promiscuous)
|
||||
{
|
||||
EL_DEVICE *d, t;
|
||||
// Validate arguments
|
||||
@@ -995,7 +886,7 @@ bool ElAddCaptureDevice(EL *e, char *name, HUB_LOG *log, bool no_promiscus)
|
||||
d = ZeroMalloc(sizeof(EL_DEVICE));
|
||||
StrCpy(d->DeviceName, sizeof(d->DeviceName), name);
|
||||
Copy(&d->LogSetting, log, sizeof(HUB_LOG));
|
||||
d->NoPromiscus = no_promiscus;
|
||||
d->NoPromiscuous = no_promiscuous;
|
||||
d->el = e;
|
||||
Insert(e->DeviceList, d);
|
||||
|
||||
@@ -1091,7 +982,7 @@ void ElSaveConfigToFolder(EL *e, FOLDER *root)
|
||||
|
||||
f = CfgCreateFolder(devices, d->DeviceName);
|
||||
SiWriteHubLogCfgEx(f, &d->LogSetting, true);
|
||||
CfgAddBool(f, "NoPromiscusMode", d->NoPromiscus);
|
||||
CfgAddBool(f, "NoPromiscuousMode", d->NoPromiscuous);
|
||||
}
|
||||
}
|
||||
UnlockList(e->DeviceList);
|
||||
@@ -1132,7 +1023,7 @@ void ElLoadConfigFromFolder(EL *e, FOLDER *root)
|
||||
|
||||
if (CfgGetByte(root, "AdminPassword", e->HashedPassword, sizeof(e->HashedPassword)) != sizeof(e->HashedPassword))
|
||||
{
|
||||
Hash(e->HashedPassword, "", 0, true);
|
||||
Sha0(e->HashedPassword, "", 0);
|
||||
}
|
||||
|
||||
if (ELOG_IS_BETA == false)
|
||||
@@ -1157,7 +1048,7 @@ void ElLoadConfigFromFolder(EL *e, FOLDER *root)
|
||||
|
||||
Zero(&g, sizeof(g));
|
||||
SiLoadHubLogCfg(&g, f);
|
||||
ElAddCaptureDevice(e, name, &g, CfgGetBool(f, "NoPromiscusMode"));
|
||||
ElAddCaptureDevice(e, name, &g, CfgGetBool(f, "NoPromiscuousMode"));
|
||||
}
|
||||
}
|
||||
FreeToken(t);
|
||||
@@ -1190,7 +1081,7 @@ bool ElLoadConfig(EL *e)
|
||||
else
|
||||
{
|
||||
char *pass = "";
|
||||
Hash(e->HashedPassword, pass, StrLen(pass), true);
|
||||
Sha0(e->HashedPassword, pass, StrLen(pass));
|
||||
e->AutoDeleteCheckDiskFreeSpaceMin = DISK_FREE_SPACE_DEFAULT;
|
||||
}
|
||||
|
||||
@@ -1365,18 +1256,3 @@ void ElStop()
|
||||
Unlock(el_lock);
|
||||
}
|
||||
|
||||
// EL initialization
|
||||
void ElInit()
|
||||
{
|
||||
// Lock initialization
|
||||
el_lock = NewLock();
|
||||
}
|
||||
|
||||
// EL release
|
||||
void ElFree()
|
||||
{
|
||||
// Lock release
|
||||
DeleteLock(el_lock);
|
||||
el_lock = NULL;
|
||||
}
|
||||
|
||||
|
||||
+3
-113
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// EtherLog.h
|
||||
@@ -133,7 +27,7 @@ struct RPC_ADD_DEVICE
|
||||
{
|
||||
char DeviceName[MAX_SIZE]; // Device name
|
||||
HUB_LOG LogSetting; // Log settings
|
||||
bool NoPromiscus; // Without promiscuous mode
|
||||
bool NoPromiscuous; // Without promiscuous mode
|
||||
};
|
||||
|
||||
struct RPC_DELETE_DEVICE
|
||||
@@ -173,7 +67,7 @@ struct EL_DEVICE
|
||||
CANCEL *Cancel2; // Cancel 2
|
||||
volatile bool Halt; // Halting flag
|
||||
bool Active; // Running flag
|
||||
bool NoPromiscus; // Without promiscuous mode
|
||||
bool NoPromiscuous; // Without promiscuous mode
|
||||
LOG *Logger; // Logger
|
||||
};
|
||||
|
||||
@@ -205,8 +99,6 @@ struct EL
|
||||
};
|
||||
|
||||
// Function prototype
|
||||
void ElInit();
|
||||
void ElFree();
|
||||
void ElStart();
|
||||
void ElStop();
|
||||
EL *NewEl();
|
||||
@@ -219,7 +111,7 @@ void ElLoadConfigFromFolder(EL *e, FOLDER *root);
|
||||
void ElSaveConfig(EL *e);
|
||||
void ElSaveConfigToFolder(EL *e, FOLDER *root);
|
||||
int ElCompareDevice(void *p1, void *p2);
|
||||
bool ElAddCaptureDevice(EL *e, char *name, HUB_LOG *log, bool no_promiscus);
|
||||
bool ElAddCaptureDevice(EL *e, char *name, HUB_LOG *log, bool no_promiscuous);
|
||||
bool ElDeleteCaptureDevice(EL *e, char *name);
|
||||
bool ElSetCaptureDeviceLogSetting(EL *e, char *name, HUB_LOG *log);
|
||||
void ElCaptureThread(THREAD *thread, void *param);
|
||||
@@ -227,7 +119,6 @@ void ElStartListener(EL *e);
|
||||
void ElStopListener(EL *e);
|
||||
void ElListenerProc(THREAD *thread, void *param);
|
||||
PACK *ElRpcServer(RPC *r, char *name, PACK *p);
|
||||
void ElCheckLicense(EL_LICENSE_STATUS *st, LICENSE *e);
|
||||
void ElParseCurrentLicenseStatus(LICENSE_SYSTEM *s, EL_LICENSE_STATUS *st);
|
||||
bool ElIsBetaExpired();
|
||||
|
||||
@@ -253,7 +144,6 @@ UINT EcGetDevice(RPC *r, RPC_ADD_DEVICE *t);
|
||||
UINT EcEnumDevice(RPC *r, RPC_ENUM_DEVICE *t);
|
||||
UINT EcEnumAllDevice(RPC *r, RPC_ENUM_DEVICE *t);
|
||||
UINT EcSetPassword(RPC *r, RPC_SET_PASSWORD *t);
|
||||
UINT EcAddLicenseKey(RPC *r, RPC_TEST *t);
|
||||
UINT EcDelLicenseKey(RPC *r, RPC_TEST *t);
|
||||
UINT EcEnumLicenseKey(RPC *r, RPC_ENUM_LICENSE_KEY *t);
|
||||
UINT EcGetLicenseStatus(RPC *r, RPC_EL_LICENSE_STATUS *t);
|
||||
|
||||
+35
-246
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Hub.c
|
||||
@@ -168,7 +62,7 @@ UINT num_admin_options = sizeof(admin_options) / sizeof(ADMIN_OPTION);
|
||||
|
||||
|
||||
// Create an EAP client for the specified Virtual Hub
|
||||
EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username)
|
||||
EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username, char *vpn_protocol_state_str)
|
||||
{
|
||||
HUB *hub = NULL;
|
||||
EAP_CLIENT *ret = NULL;
|
||||
@@ -218,6 +112,11 @@ EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, ch
|
||||
|
||||
if (eap != NULL)
|
||||
{
|
||||
if (IsEmptyStr(vpn_protocol_state_str) == false)
|
||||
{
|
||||
StrCpy(eap->In_VpnProtocolState, sizeof(eap->In_VpnProtocolState), vpn_protocol_state_str);
|
||||
}
|
||||
|
||||
if (use_peap == false)
|
||||
{
|
||||
// EAP
|
||||
@@ -787,6 +686,8 @@ void HubOptionStructToData(RPC_ADMIN_OPTION *ao, HUB_OPTION *o, char *hub_name)
|
||||
{
|
||||
ADMIN_OPTION *a = LIST_DATA(aol, i);
|
||||
|
||||
UniStrCpy(a->Descrption, sizeof(a->Descrption), GetHubAdminOptionHelpString(a->Name));
|
||||
|
||||
Copy(&ao->Items[i], a, sizeof(ADMIN_OPTION));
|
||||
|
||||
Free(a);
|
||||
@@ -1662,13 +1563,15 @@ void HubWatchDogThread(THREAD *t, void *param)
|
||||
o2 = NewListFast(NULL);
|
||||
|
||||
// Send an ARP packet
|
||||
LockList(hub->IpTable);
|
||||
LockHashList(hub->MacHashTable);
|
||||
{
|
||||
num = LIST_NUM(hub->IpTable);
|
||||
for (i = 0;i < LIST_NUM(hub->IpTable);i++)
|
||||
{
|
||||
IP_TABLE_ENTRY *e = LIST_DATA(hub->IpTable, i);
|
||||
|
||||
if (e == NULL) continue;
|
||||
|
||||
if ((e->UpdatedTime + (UINT64)(IP_TABLE_EXPIRE_TIME)) > Tick64())
|
||||
{
|
||||
if (e->MacAddress[0] != 0xff || e->MacAddress[1] != 0xff || e->MacAddress[2] != 0xff ||
|
||||
@@ -1744,7 +1647,7 @@ void HubWatchDogThread(THREAD *t, void *param)
|
||||
}
|
||||
}
|
||||
}
|
||||
UnlockList(hub->IpTable);
|
||||
UnlockHashList(hub->MacHashTable);
|
||||
|
||||
if ((LIST_NUM(o) + LIST_NUM(o2)) != 0)
|
||||
{
|
||||
@@ -1835,7 +1738,7 @@ ESCAPE:
|
||||
return;
|
||||
}
|
||||
|
||||
// Eable / disable the SecureNAT
|
||||
// Enable / disable the SecureNAT
|
||||
void EnableSecureNAT(HUB *h, bool enable)
|
||||
{
|
||||
EnableSecureNATEx(h, enable, false);
|
||||
@@ -2719,7 +2622,7 @@ BUF *BuildRedirectToUrlPayload(HUB *hub, SESSION *s, char *redirect_url)
|
||||
WriteBuf(b2, tmp, StrLen(tmp));
|
||||
WriteBuf(b2, secret, StrLen(secret));
|
||||
|
||||
HashSha1(hash, b2->Buf, b2->Size);
|
||||
Sha1(hash, b2->Buf, b2->Size);
|
||||
|
||||
BinToStr(hash_str, sizeof(hash_str), hash, sizeof(hash));
|
||||
|
||||
@@ -3023,7 +2926,7 @@ bool ApplyAccessListToStoredPacket(HUB *hub, SESSION *s, PKT *p)
|
||||
|
||||
if (pass)
|
||||
{
|
||||
if (s != NULL && s->FirstTimeHttpRedirect && s->FirstTimeHttpAccessCheckIp != 0)
|
||||
if (s->FirstTimeHttpRedirect && s->FirstTimeHttpAccessCheckIp != 0)
|
||||
{
|
||||
if ((p->TypeL3 == L3_IPV4 || p->TypeL3 == L3_IPV6) &&
|
||||
p->TypeL4 == L4_TCP)
|
||||
@@ -3135,39 +3038,6 @@ bool IsTcpPacketNcsiHttpAccess(PKT *p)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Set the URL to which to redirect first
|
||||
bool SetSessionFirstRedirectHttpUrl(SESSION *s, char *url)
|
||||
{
|
||||
URL_DATA d;
|
||||
IP ip;
|
||||
// Validate arguments
|
||||
if (s == NULL || url == NULL || IsEmptyStr(url))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ParseUrl(&d, url, false, NULL) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (StrToIP(&ip, d.HostName) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsIP4(&ip) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
s->FirstTimeHttpAccessCheckIp = IPToUINT(&ip);
|
||||
StrCpy(s->FirstTimeHttpRedirectUrl, sizeof(s->FirstTimeHttpRedirectUrl), url);
|
||||
s->FirstTimeHttpRedirect = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Adding Access List
|
||||
void AddAccessList(HUB *hub, ACCESS *a)
|
||||
{
|
||||
@@ -3377,41 +3247,12 @@ UINT64 UsernameToInt64(char *name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
Hash(hash, tmp, StrLen(tmp), true);
|
||||
Sha0(hash, tmp, StrLen(tmp));
|
||||
Copy(&ret, hash, sizeof(ret));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Search the session from the session pointer
|
||||
SESSION *GetSessionByPtr(HUB *hub, void *ptr)
|
||||
{
|
||||
// Validate arguments
|
||||
if (hub == NULL || ptr == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LockList(hub->SessionList);
|
||||
{
|
||||
UINT i;
|
||||
for (i = 0;i < LIST_NUM(hub->SessionList);i++)
|
||||
{
|
||||
SESSION *s = LIST_DATA(hub->SessionList, i);
|
||||
if (s == (SESSION *)ptr)
|
||||
{
|
||||
// Found
|
||||
AddRef(s->ref);
|
||||
UnlockList(hub->SessionList);
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
||||
UnlockList(hub->SessionList);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Search the session from the session name
|
||||
SESSION *GetSessionByName(HUB *hub, char *name)
|
||||
{
|
||||
@@ -3700,7 +3541,7 @@ bool HubPaPutPacket(SESSION *s, void *data, UINT size)
|
||||
pa->Now = Tick64();
|
||||
|
||||
// Processing of Adjust TCP MSS
|
||||
if (hub->Option != NULL && hub->Option->DisableAdjustTcpMss == false && s != NULL)
|
||||
if (hub != NULL && hub->Option != NULL && hub->Option->DisableAdjustTcpMss == false && s != NULL)
|
||||
{
|
||||
UINT target_mss = (hub->Option->AdjustTcpMssValue == 0 ? INFINITE : hub->Option->AdjustTcpMssValue);
|
||||
UINT session_mss = (s->AdjustMss == 0 ? INFINITE : s->AdjustMss);
|
||||
@@ -3779,9 +3620,12 @@ bool HubPaPutPacket(SESSION *s, void *data, UINT size)
|
||||
CancelList(s->CancelList);
|
||||
|
||||
// Yield
|
||||
if (hub->Option != NULL && hub->Option->YieldAfterStorePacket)
|
||||
if (hub != NULL)
|
||||
{
|
||||
YieldCpu();
|
||||
if (hub->Option != NULL && hub->Option->YieldAfterStorePacket)
|
||||
{
|
||||
YieldCpu();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -3844,7 +3688,7 @@ LABEL_TRY_AGAIN:
|
||||
|
||||
if (no_parse_dhcp == false && packet != NULL)
|
||||
{
|
||||
if (hub->Option != NULL && hub->Option->RemoveDefGwOnDhcpForLocalhost)
|
||||
if (hub != NULL && hub->Option != NULL && hub->Option->RemoveDefGwOnDhcpForLocalhost)
|
||||
{
|
||||
// Remove the designation of the DHCP server from the DHCP response packet addressed to localhost
|
||||
if (packet->TypeL7 == L7_DHCPV4)
|
||||
@@ -3908,26 +3752,6 @@ LABEL_TRY_AGAIN:
|
||||
return true;
|
||||
}
|
||||
|
||||
// VGS: Setting for embedding UA tag
|
||||
void VgsSetEmbTag(bool b)
|
||||
{
|
||||
g_vgs_emb_tag = b;
|
||||
}
|
||||
|
||||
// VGS: Setting for the User-Agent value
|
||||
void VgsSetUserAgentValue(char *str)
|
||||
{
|
||||
// Validate arguments
|
||||
if (str == NULL || StrLen(str) != 8)
|
||||
{
|
||||
Zero(vgs_ua_str, sizeof(vgs_ua_str));
|
||||
}
|
||||
else
|
||||
{
|
||||
StrCpy(vgs_ua_str, sizeof(vgs_ua_str), str);
|
||||
}
|
||||
}
|
||||
|
||||
// Checking algorithm to prevent broadcast-storm
|
||||
// If broadcast from a specific endpoint came frequently, filter it
|
||||
bool CheckBroadcastStorm(HUB *hub, SESSION *s, PKT *p)
|
||||
@@ -3952,7 +3776,7 @@ bool CheckBroadcastStorm(HUB *hub, SESSION *s, PKT *p)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (hub != NULL && hub->Option != NULL)
|
||||
if (hub->Option != NULL)
|
||||
{
|
||||
strict = hub->Option->BroadcastLimiterStrictMode;
|
||||
no_heavy = hub->Option->DoNotSaveHeavySecurityLogs;
|
||||
@@ -4364,7 +4188,7 @@ DISCARD_PACKET:
|
||||
UCHAR hash[MD5_SIZE];
|
||||
UINT64 tick_diff = Tick64() - s->LastDLinkSTPPacketSendTick;
|
||||
|
||||
Hash(hash, packet->PacketData, packet->PacketSize, false);
|
||||
Md5(hash, packet->PacketData, packet->PacketSize);
|
||||
|
||||
if ((s->LastDLinkSTPPacketSendTick != 0) &&
|
||||
(tick_diff < 750ULL) &&
|
||||
@@ -5346,7 +5170,6 @@ bool IsIPManagementTargetForHUB(IP *ip, HUB *hub)
|
||||
void DeleteOldIpTableEntry(LIST *o)
|
||||
{
|
||||
UINT i;
|
||||
UINT64 oldest_time = 0xffffffffffffffffULL;
|
||||
IP_TABLE_ENTRY *old = NULL;
|
||||
// Validate arguments
|
||||
if (o == NULL)
|
||||
@@ -5357,11 +5180,7 @@ void DeleteOldIpTableEntry(LIST *o)
|
||||
for (i = 0;i < LIST_NUM(o);i++)
|
||||
{
|
||||
IP_TABLE_ENTRY *e = LIST_DATA(o, i);
|
||||
|
||||
if (e->UpdatedTime <= oldest_time)
|
||||
{
|
||||
old = e;
|
||||
}
|
||||
old = e;
|
||||
}
|
||||
|
||||
if (old != NULL)
|
||||
@@ -5476,7 +5295,7 @@ void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *
|
||||
}
|
||||
}
|
||||
|
||||
if (src != NULL && src->Hub != NULL && src->Hub->Option != NULL && src->Hub->Option->FixForDLinkBPDU)
|
||||
if (packet != NULL && src != NULL && src->Hub != NULL && src->Hub->Option != NULL && src->Hub->Option->FixForDLinkBPDU)
|
||||
{
|
||||
// Measures for D-Link bug
|
||||
UCHAR *mac = packet->MacAddressSrc;
|
||||
@@ -5490,7 +5309,7 @@ void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *
|
||||
if (session->Policy != NULL && session->Policy->CheckMac)
|
||||
{
|
||||
UCHAR hash[MD5_SIZE];
|
||||
Hash(hash, packet->PacketData, packet->PacketSize, false);
|
||||
Md5(hash, packet->PacketData, packet->PacketSize);
|
||||
|
||||
Copy(session->LastDLinkSTPPacketDataHash, hash, MD5_SIZE);
|
||||
session->LastDLinkSTPPacketSendTick = Tick64();
|
||||
@@ -5514,7 +5333,7 @@ void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *
|
||||
}
|
||||
}
|
||||
|
||||
if (dest != NULL && src != NULL && dest->Session != NULL && src->Hub != NULL && src->Hub->Option != NULL)
|
||||
if (src != NULL && dest->Session != NULL && src->Hub != NULL && src->Hub->Option != NULL)
|
||||
{
|
||||
if (dest->Session->AdjustMss != 0 ||
|
||||
(dest->Session->IsUsingUdpAcceleration && dest->Session->UdpAccelMss != 0) ||
|
||||
@@ -5621,7 +5440,7 @@ bool StorePacketFilterByPolicy(SESSION *s, PKT *p)
|
||||
|
||||
hub = s->Hub;
|
||||
|
||||
if (hub->Option != NULL)
|
||||
if (hub != NULL && hub->Option != NULL)
|
||||
{
|
||||
no_heavy = hub->Option->DoNotSaveHeavySecurityLogs;
|
||||
}
|
||||
@@ -5922,10 +5741,8 @@ UPDATE_DHCP_ALLOC_ENTRY:
|
||||
DeleteOldIpTableEntry(hub->IpTable);
|
||||
}
|
||||
Insert(hub->IpTable, e);
|
||||
}
|
||||
|
||||
if (new_entry)
|
||||
{
|
||||
|
||||
if ((hub->Option != NULL && hub->Option->NoDhcpPacketLogOutsideHub == false) || mac_table->Session != s)
|
||||
{
|
||||
char dhcp_mac_addr[64];
|
||||
@@ -6098,7 +5915,7 @@ void IntoTrafficLimiter(TRAFFIC_LIMITER *tr, PKT *p)
|
||||
}
|
||||
|
||||
// Value increase
|
||||
tr->Value += (UINT64)(p->PacketSize * 8);
|
||||
tr->Value += (UINT64)p->PacketSize * (UINT64)8;
|
||||
}
|
||||
|
||||
// The bandwidth reduction by traffic limiter
|
||||
@@ -6659,34 +6476,6 @@ void SetRadiusServerEx(HUB *hub, char *name, UINT port, char *secret, UINT inter
|
||||
Unlock(hub->RadiusOptionLock);
|
||||
}
|
||||
|
||||
// Get the difference between the traffic data
|
||||
void CalcTrafficEntryDiff(TRAFFIC_ENTRY *diff, TRAFFIC_ENTRY *old, TRAFFIC_ENTRY *current)
|
||||
{
|
||||
// Validate arguments
|
||||
Zero(diff, sizeof(TRAFFIC_ENTRY));
|
||||
if (old == NULL || current == NULL || diff == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (current->BroadcastCount >= old->BroadcastCount)
|
||||
{
|
||||
diff->BroadcastCount = current->BroadcastCount - old->BroadcastCount;
|
||||
}
|
||||
if (current->BroadcastBytes >= old->BroadcastBytes)
|
||||
{
|
||||
diff->BroadcastBytes = current->BroadcastBytes - old->BroadcastBytes;
|
||||
}
|
||||
if (current->UnicastCount >= old->UnicastCount)
|
||||
{
|
||||
diff->UnicastCount = current->UnicastCount - old->UnicastCount;
|
||||
}
|
||||
if (current->UnicastBytes >= old->UnicastBytes)
|
||||
{
|
||||
diff->UnicastBytes = current->UnicastBytes - old->UnicastBytes;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the traffic information for Virtual HUB
|
||||
void IncrementHubTraffic(HUB *h)
|
||||
{
|
||||
@@ -7006,7 +6795,7 @@ void GenHubIpAddress(IP *ip, char *name)
|
||||
StrCat(tmp2, sizeof(tmp2), tmp1);
|
||||
StrUpper(tmp2);
|
||||
|
||||
Hash(hash, tmp2, StrLen(tmp2), true);
|
||||
Sha0(hash, tmp2, StrLen(tmp2));
|
||||
|
||||
Zero(ip, sizeof(IP));
|
||||
ip->addr[0] = 172;
|
||||
@@ -7034,7 +6823,7 @@ void GenHubMacAddress(UCHAR *mac, char *name)
|
||||
StrCat(tmp2, sizeof(tmp2), tmp1);
|
||||
StrUpper(tmp2);
|
||||
|
||||
Hash(hash, tmp2, StrLen(tmp2), true);
|
||||
Sha0(hash, tmp2, StrLen(tmp2));
|
||||
|
||||
mac[0] = 0x00;
|
||||
mac[1] = SE_HUB_MAC_ADDR_SIGN;
|
||||
@@ -7107,7 +6896,7 @@ HUB *NewHub(CEDAR *cedar, char *HubName, HUB_OPTION *option)
|
||||
}
|
||||
|
||||
h = ZeroMalloc(sizeof(HUB));
|
||||
Hash(h->HashedPassword, "", 0, true);
|
||||
Sha0(h->HashedPassword, "", 0);
|
||||
HashPassword(h->SecurePassword, ADMINISTRATOR_USERNAME, "");
|
||||
h->lock = NewLock();
|
||||
h->lock_online = NewLock();
|
||||
|
||||
+3
-113
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Hub.h
|
||||
@@ -348,7 +242,7 @@ struct ACCESS
|
||||
UCHAR DstMacAddress[6]; // Destination MAC address
|
||||
UCHAR DstMacMask[6]; // Destination MAC address mask
|
||||
bool CheckTcpState; // The state of the TCP connection
|
||||
bool Established; // Establieshed(TCP)
|
||||
bool Established; // Established(TCP)
|
||||
UINT Delay; // Delay
|
||||
UINT Jitter; // Jitter
|
||||
UINT Loss; // Packet loss
|
||||
@@ -393,6 +287,7 @@ struct ADMIN_OPTION
|
||||
{
|
||||
char Name[MAX_ADMIN_OPTION_NAME_LEN + 1]; // Name
|
||||
UINT Value; // Data
|
||||
wchar_t Descrption[MAX_SIZE]; // Descrption
|
||||
};
|
||||
|
||||
// Certificate Revocation List entry
|
||||
@@ -547,7 +442,6 @@ bool StorePacketFilter(SESSION *s, PKT *packet);
|
||||
void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet, bool is_flooding, bool no_check_acl);
|
||||
void SetHubOnline(HUB *h);
|
||||
void SetHubOffline(HUB *h);
|
||||
SESSION *GetSessionByPtr(HUB *hub, void *ptr);
|
||||
SESSION *GetSessionByName(HUB *hub, char *name);
|
||||
int CompareIpTable(void *p1, void *p2);
|
||||
bool StorePacketFilterByPolicy(SESSION *s, PKT *p);
|
||||
@@ -566,7 +460,6 @@ void InitAccessList(HUB *hub);
|
||||
void FreeAccessList(HUB *hub);
|
||||
void AddAccessList(HUB *hub, ACCESS *a);
|
||||
void AddAccessListEx(HUB *hub, ACCESS *a, bool no_sort, bool no_reassign_id);
|
||||
bool SetSessionFirstRedirectHttpUrl(SESSION *s, char *url);
|
||||
bool IsTcpPacketNcsiHttpAccess(PKT *p);
|
||||
UINT64 UsernameToInt64(char *name);
|
||||
void MakeSimpleUsernameRemoveNtDomain(char *dst, UINT dst_size, char *src);
|
||||
@@ -638,11 +531,8 @@ USERLIST *FindUserList(LIST *o, char *filename);
|
||||
bool IsUserMatchInUserList(LIST *o, char *filename, UINT64 user_hash);
|
||||
bool IsUserMatchInUserListWithCacheExpires(LIST *o, char *filename, UINT64 user_hash, UINT64 lifetime);
|
||||
bool IsUserMatchInUserListWithCacheExpiresAcl(LIST *o, char *name_in_acl, UINT64 user_hash, UINT64 lifetime);
|
||||
void CalcTrafficEntryDiff(TRAFFIC_ENTRY *diff, TRAFFIC_ENTRY *old, TRAFFIC_ENTRY *current);
|
||||
bool CheckMaxLoggedPacketsPerMinute(SESSION *s, UINT max_packets, UINT64 now);
|
||||
void VgsSetUserAgentValue(char *str);
|
||||
void VgsSetEmbTag(bool b);
|
||||
EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username);
|
||||
EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username, char *vpn_protocol_state_str);
|
||||
|
||||
#endif // HUB_H
|
||||
|
||||
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IPC.c
|
||||
// IPC.c
|
||||
// In-process VPN client module
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -188,6 +82,12 @@ IPC_ASYNC *NewIPCAsync(CEDAR *cedar, IPC_PARAM *param, SOCK_EVENT *sock_event)
|
||||
|
||||
Copy(&a->Param, param, sizeof(IPC_PARAM));
|
||||
|
||||
if (param->ClientCertificate != NULL)
|
||||
{
|
||||
// Client certificate must be copied for async processing
|
||||
a->Param.ClientCertificate = CloneX(param->ClientCertificate);
|
||||
}
|
||||
|
||||
if (sock_event != NULL)
|
||||
{
|
||||
a->SockEvent = sock_event;
|
||||
@@ -223,13 +123,13 @@ void IPCAsyncThreadProc(THREAD *thread, void *param)
|
||||
Zero(&cao, sizeof(cao));
|
||||
|
||||
// Get an IP address from the DHCP server in the case of L3 mode
|
||||
Debug("IPCDhcpAllocateIPEx() start...\n");
|
||||
if (IPCDhcpAllocateIPEx(a->Ipc, &cao, a->TubeForDisconnect, a->Param.IsOpenVPN))
|
||||
Debug("IPCDhcpAllocateIP() start...\n");
|
||||
if (IPCDhcpAllocateIP(a->Ipc, &cao, a->TubeForDisconnect))
|
||||
{
|
||||
UINT t;
|
||||
IP ip, subnet, gw;
|
||||
|
||||
Debug("IPCDhcpAllocateIPEx() Ok.\n");
|
||||
Debug("IPCDhcpAllocateIP() Ok.\n");
|
||||
|
||||
// Calculate the DHCP update interval
|
||||
t = cao.LeaseTime;
|
||||
@@ -260,7 +160,7 @@ void IPCAsyncThreadProc(THREAD *thread, void *param)
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug("IPCDhcpAllocateIPEx() Error.\n");
|
||||
Debug("IPCDhcpAllocateIP() Error.\n");
|
||||
|
||||
a->DhcpAllocFailed = true;
|
||||
|
||||
@@ -306,6 +206,12 @@ void FreeIPCAsync(IPC_ASYNC *a)
|
||||
ReleaseCedar(a->Cedar);
|
||||
|
||||
ReleaseTube(a->TubeForDisconnect);
|
||||
|
||||
if (a->Param.ClientCertificate != NULL)
|
||||
{
|
||||
FreeX(a->Param.ClientCertificate);
|
||||
}
|
||||
|
||||
Free(a);
|
||||
}
|
||||
|
||||
@@ -323,7 +229,7 @@ IPC *NewIPCByParam(CEDAR *cedar, IPC_PARAM *param, UINT *error_code)
|
||||
param->UserName, param->Password, error_code, ¶m->ClientIp,
|
||||
param->ClientPort, ¶m->ServerIp, param->ServerPort,
|
||||
param->ClientHostname, param->CryptName,
|
||||
param->BridgeMode, param->Mss, NULL);
|
||||
param->BridgeMode, param->Mss, NULL, param->ClientCertificate, param->Layer);
|
||||
|
||||
return ipc;
|
||||
}
|
||||
@@ -332,7 +238,8 @@ IPC *NewIPCByParam(CEDAR *cedar, IPC_PARAM *param, UINT *error_code)
|
||||
IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char *username, char *password,
|
||||
UINT *error_code, IP *client_ip, UINT client_port, IP *server_ip, UINT server_port,
|
||||
char *client_hostname, char *crypt_name,
|
||||
bool bridge_mode, UINT mss, EAP_CLIENT *eap_client)
|
||||
bool bridge_mode, UINT mss, EAP_CLIENT *eap_client, X *client_certificate,
|
||||
UINT layer)
|
||||
{
|
||||
IPC *ipc;
|
||||
UINT dummy_int = 0;
|
||||
@@ -347,6 +254,7 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
NODE_INFO info;
|
||||
BUF *b;
|
||||
UCHAR mschap_v2_server_response_20[20];
|
||||
UINT64 u64;
|
||||
// Validate arguments
|
||||
if (cedar == NULL || username == NULL || password == NULL || client_hostname == NULL)
|
||||
{
|
||||
@@ -380,6 +288,12 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
ipc->Cedar = cedar;
|
||||
AddRef(cedar->ref);
|
||||
|
||||
ipc->Layer = layer;
|
||||
if (ipc->Layer == 0)
|
||||
{
|
||||
ipc->Layer = IPC_LAYER_2;
|
||||
}
|
||||
|
||||
ipc->FlushList = NewTubeFlushList();
|
||||
|
||||
StrCpy(ipc->ClientHostname, sizeof(ipc->ClientHostname), client_hostname);
|
||||
@@ -425,7 +339,21 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
FreePack(p);
|
||||
|
||||
// Upload the authentication data
|
||||
p = PackLoginWithPlainPassword(hubname, username, password);
|
||||
if (client_certificate != NULL)
|
||||
{
|
||||
p = PackLoginWithOpenVPNCertificate(hubname, username, client_certificate);
|
||||
}
|
||||
else
|
||||
{
|
||||
p = PackLoginWithPlainPassword(hubname, username, password);
|
||||
}
|
||||
|
||||
if (p == NULL)
|
||||
{
|
||||
err = ERR_AUTH_FAILED;
|
||||
goto LABEL_ERROR;
|
||||
}
|
||||
|
||||
PackAddStr(p, "hello", client_name);
|
||||
PackAddInt(p, "client_ver", cedar->Version);
|
||||
PackAddInt(p, "client_build", cedar->Build);
|
||||
@@ -452,7 +380,7 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
WriteBufStr(b, client_name);
|
||||
WriteBufStr(b, crypt_name);
|
||||
|
||||
HashSha1(unique, b->Buf, b->Size);
|
||||
Sha1(unique, b->Buf, b->Size);
|
||||
|
||||
FreeBuf(b);
|
||||
|
||||
@@ -460,6 +388,7 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
|
||||
PackAddStr(p, "inproc_postfix", postfix);
|
||||
PackAddStr(p, "inproc_cryptname", crypt_name);
|
||||
PackAddInt(p, "inproc_layer", ipc->Layer);
|
||||
|
||||
// Node information
|
||||
Zero(&info, sizeof(info));
|
||||
@@ -541,6 +470,10 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
|
||||
Debug("IPC: Session = %s, Connection = %s, Mac = %s\n", ipc->SessionName, ipc->ConnectionName, macstr);
|
||||
|
||||
u64 = PackGetInt64(p, "IpcSessionSharedBuffer");
|
||||
ipc->IpcSessionSharedBuffer = (SHARED_BUFFER *)u64;
|
||||
ipc->IpcSessionShared = ipc->IpcSessionSharedBuffer->Data;
|
||||
|
||||
FreePack(p);
|
||||
|
||||
ReleaseSock(a);
|
||||
@@ -554,7 +487,7 @@ IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char
|
||||
ipc->ArpTable = NewList(IPCCmpArpTable);
|
||||
|
||||
// Create an IPv4 reception queue
|
||||
ipc->IPv4RecviedQueue = NewQueue();
|
||||
ipc->IPv4ReceivedQueue = NewQueue();
|
||||
|
||||
return ipc;
|
||||
|
||||
@@ -594,7 +527,7 @@ IPC *NewIPCBySock(CEDAR *cedar, SOCK *s, void *mac_address)
|
||||
ipc->ArpTable = NewList(IPCCmpArpTable);
|
||||
|
||||
// Create an IPv4 reception queue
|
||||
ipc->IPv4RecviedQueue = NewQueue();
|
||||
ipc->IPv4ReceivedQueue = NewQueue();
|
||||
|
||||
ipc->FlushList = NewTubeFlushList();
|
||||
|
||||
@@ -664,7 +597,7 @@ void FreeIPC(IPC *ipc)
|
||||
|
||||
while (true)
|
||||
{
|
||||
BLOCK *b = GetNext(ipc->IPv4RecviedQueue);
|
||||
BLOCK *b = GetNext(ipc->IPv4ReceivedQueue);
|
||||
if (b == NULL)
|
||||
{
|
||||
break;
|
||||
@@ -673,7 +606,9 @@ void FreeIPC(IPC *ipc)
|
||||
FreeBlock(b);
|
||||
}
|
||||
|
||||
ReleaseQueue(ipc->IPv4RecviedQueue);
|
||||
ReleaseQueue(ipc->IPv4ReceivedQueue);
|
||||
|
||||
ReleaseSharedBuffer(ipc->IpcSessionSharedBuffer);
|
||||
|
||||
Free(ipc);
|
||||
}
|
||||
@@ -784,39 +719,20 @@ bool IPCDhcpRequestInformIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_t
|
||||
|
||||
// Make a request for IP addresses using DHCP
|
||||
bool IPCDhcpAllocateIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube)
|
||||
{
|
||||
return IPCDhcpAllocateIPEx(ipc, opt, discon_poll_tube, false);
|
||||
}
|
||||
bool IPCDhcpAllocateIPEx(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube, bool openvpn_compatible)
|
||||
{
|
||||
DHCP_OPTION_LIST req;
|
||||
DHCPV4_DATA *d, *d2;
|
||||
UINT tran_id = Rand32();
|
||||
bool ok;
|
||||
UINT request_ip = 0;
|
||||
IP current_scanning_ip;
|
||||
UCHAR current_scanning_addr8;
|
||||
UCHAR begin_scanning_addr8;
|
||||
UINT64 giveup = Tick64() + (UINT64)IPC_DHCP_TIMEOUT_TOTAL_GIVEUP;
|
||||
LIST *release_list;
|
||||
bool ret = false;
|
||||
// Validate arguments
|
||||
if (ipc == NULL || opt == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
release_list = NewListFast(NULL);
|
||||
|
||||
Zero(¤t_scanning_ip, sizeof(current_scanning_ip));
|
||||
current_scanning_addr8 = 0;
|
||||
begin_scanning_addr8 = 0;
|
||||
|
||||
LABEL_RETRY_FOR_OPENVPN:
|
||||
tran_id = Rand32();
|
||||
// Send a DHCP Discover
|
||||
Zero(&req, sizeof(req));
|
||||
req.RequestedIp = request_ip;
|
||||
req.RequestedIp = 0;
|
||||
req.Opcode = DHCP_DISCOVER;
|
||||
StrCpy(req.Hostname, sizeof(req.Hostname), ipc->ClientHostname);
|
||||
IPCDhcpSetConditionalUserClass(ipc, &req);
|
||||
@@ -824,7 +740,7 @@ LABEL_RETRY_FOR_OPENVPN:
|
||||
d = IPCSendDhcpRequest(ipc, NULL, tran_id, &req, DHCP_OFFER, IPC_DHCP_TIMEOUT, discon_poll_tube);
|
||||
if (d == NULL)
|
||||
{
|
||||
goto LABEL_CLEANUP;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze the DHCP Offer
|
||||
@@ -853,75 +769,7 @@ LABEL_RETRY_FOR_OPENVPN:
|
||||
if (ok == false)
|
||||
{
|
||||
FreeDHCPv4Data(d);
|
||||
goto LABEL_CLEANUP;
|
||||
}
|
||||
|
||||
if (openvpn_compatible)
|
||||
{
|
||||
UINT ip = d->ParsedOptionList->ClientAddress;
|
||||
|
||||
if (OvsIsCompatibleL3IP(ip) == false)
|
||||
{
|
||||
char tmp[64];
|
||||
|
||||
DHCP_OPTION_LIST req;
|
||||
IPC_DHCP_RELESAE_QUEUE *q;
|
||||
|
||||
// If the offered IP address is not used, place the address
|
||||
// in release memo list to release at the end of this function
|
||||
Zero(&req, sizeof(req));
|
||||
req.Opcode = DHCP_RELEASE;
|
||||
req.ServerAddress = d->ParsedOptionList->ServerAddress;
|
||||
|
||||
q = ZeroMalloc(sizeof(IPC_DHCP_RELESAE_QUEUE));
|
||||
Copy(&q->Req, &req, sizeof(DHCP_OPTION_LIST));
|
||||
q->TranId = tran_id;
|
||||
Copy(q->MacAddress, ipc->MacAddress, 6);
|
||||
|
||||
Add(release_list, q);
|
||||
|
||||
FreeDHCPv4Data(d);
|
||||
|
||||
if (Tick64() >= giveup)
|
||||
{
|
||||
goto LABEL_CLEANUP;
|
||||
}
|
||||
|
||||
if (IsZero(¤t_scanning_ip, sizeof(IP)))
|
||||
{
|
||||
UINTToIP(¤t_scanning_ip, ip);
|
||||
current_scanning_addr8 = current_scanning_ip.addr[3];
|
||||
|
||||
if ((current_scanning_addr8 % 4) != 1)
|
||||
{
|
||||
current_scanning_addr8 = (UCHAR)(((((UINT)current_scanning_addr8 - 1) / 4) + 1) * 4 + 1);
|
||||
}
|
||||
|
||||
begin_scanning_addr8 = current_scanning_addr8;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_scanning_addr8 += 4;
|
||||
|
||||
if (current_scanning_addr8 == begin_scanning_addr8)
|
||||
{
|
||||
goto LABEL_CLEANUP;
|
||||
}
|
||||
}
|
||||
|
||||
current_scanning_ip.addr[3] = current_scanning_addr8;
|
||||
|
||||
request_ip = IPToUINT(¤t_scanning_ip);
|
||||
|
||||
IPToStr32(tmp, sizeof(tmp), request_ip);
|
||||
|
||||
// Generate another MAC address
|
||||
ipc->MacAddress[5]++;
|
||||
|
||||
Debug("Trying Allocating IP for OpenVPN: %s\n", tmp);
|
||||
|
||||
goto LABEL_RETRY_FOR_OPENVPN;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Send a DHCP Request
|
||||
@@ -936,7 +784,7 @@ LABEL_RETRY_FOR_OPENVPN:
|
||||
if (d2 == NULL)
|
||||
{
|
||||
FreeDHCPv4Data(d);
|
||||
goto LABEL_CLEANUP;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Analyze the DHCP Ack
|
||||
@@ -966,7 +814,7 @@ LABEL_RETRY_FOR_OPENVPN:
|
||||
{
|
||||
FreeDHCPv4Data(d);
|
||||
FreeDHCPv4Data(d2);
|
||||
goto LABEL_CLEANUP;
|
||||
return false;
|
||||
}
|
||||
|
||||
Copy(opt, d2->ParsedOptionList, sizeof(DHCP_OPTION_LIST));
|
||||
@@ -974,34 +822,7 @@ LABEL_RETRY_FOR_OPENVPN:
|
||||
FreeDHCPv4Data(d);
|
||||
FreeDHCPv4Data(d2);
|
||||
|
||||
ret = true;
|
||||
|
||||
LABEL_CLEANUP:
|
||||
if (release_list != NULL)
|
||||
{
|
||||
// Release the IP address that was acquired from the DHCP server to no avail on the way
|
||||
UINT i;
|
||||
UCHAR mac_backup[6];
|
||||
|
||||
Copy(mac_backup, ipc->MacAddress, 6);
|
||||
|
||||
for (i = 0;i < LIST_NUM(release_list);i++)
|
||||
{
|
||||
IPC_DHCP_RELESAE_QUEUE *q = LIST_DATA(release_list, i);
|
||||
|
||||
Copy(ipc->MacAddress, q->MacAddress, 6);
|
||||
FreeDHCPv4Data(IPCSendDhcpRequest(ipc, NULL, q->TranId, &q->Req, 0, 0, NULL));
|
||||
|
||||
IPCProcessInterrupts(ipc);
|
||||
|
||||
Free(q);
|
||||
}
|
||||
|
||||
Copy(ipc->MacAddress, mac_backup, 6);
|
||||
|
||||
ReleaseList(release_list);
|
||||
}
|
||||
return ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Send out a DHCP request, and wait for a corresponding response
|
||||
@@ -1228,7 +1049,6 @@ BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt)
|
||||
{
|
||||
LIST *o;
|
||||
UCHAR opcode;
|
||||
UCHAR client_id[7];
|
||||
BUF *ret;
|
||||
// Validate arguments
|
||||
if (ipc == NULL || opt == NULL)
|
||||
@@ -1248,11 +1068,6 @@ BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt)
|
||||
Add(o, NewDhcpOption(DHCP_ID_SERVER_ADDRESS, &opt->ServerAddress, 4));
|
||||
}
|
||||
|
||||
// Client MAC Address
|
||||
client_id[0] = ARP_HARDWARE_TYPE_ETHERNET;
|
||||
Copy(client_id + 1, ipc->MacAddress, 6);
|
||||
Add(o, NewDhcpOption(DHCP_ID_CLIENT_ID, client_id, sizeof(client_id)));
|
||||
|
||||
// Requested IP Address
|
||||
if (opt->RequestedIp != 0)
|
||||
{
|
||||
@@ -1263,6 +1078,14 @@ BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt)
|
||||
if (IsEmptyStr(opt->Hostname) == false)
|
||||
{
|
||||
Add(o, NewDhcpOption(DHCP_ID_HOST_NAME, opt->Hostname, StrLen(opt->Hostname)));
|
||||
Add(o, NewDhcpOption(DHCP_ID_CLIENT_ID, opt->Hostname, StrLen(opt->Hostname)));
|
||||
}
|
||||
else // Client MAC Address
|
||||
{
|
||||
UCHAR client_id[7];
|
||||
client_id[0] = ARP_HARDWARE_TYPE_ETHERNET;
|
||||
Copy(client_id + 1, ipc->MacAddress, 6);
|
||||
Add(o, NewDhcpOption(DHCP_ID_CLIENT_ID, client_id, sizeof(client_id)));
|
||||
}
|
||||
|
||||
// User Class
|
||||
@@ -1449,7 +1272,7 @@ void IPCAssociateOnArpTable(IPC *ipc, IP *ip, UCHAR *mac_address)
|
||||
}
|
||||
}
|
||||
|
||||
// Identifiy whether the MAC address is a normal unicast address
|
||||
// Identify whether the MAC address is a normal unicast address
|
||||
bool IsValidUnicastMacAddress(UCHAR *mac)
|
||||
{
|
||||
// Validate arguments
|
||||
@@ -1619,7 +1442,7 @@ void IPCProcessL3EventsEx(IPC *ipc, UINT64 now)
|
||||
IPCAssociateOnArpTable(ipc, &ip_src, src_mac);
|
||||
|
||||
// Place in the reception queue
|
||||
InsertQueue(ipc->IPv4RecviedQueue, NewBlock(data, size, 0));
|
||||
InsertQueue(ipc->IPv4ReceivedQueue, NewBlock(data, size, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2079,7 +1902,7 @@ BLOCK *IPCRecvIPv4(IPC *ipc)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
b = GetNext(ipc->IPv4RecviedQueue);
|
||||
b = GetNext(ipc->IPv4ReceivedQueue);
|
||||
|
||||
return b;
|
||||
}
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
|
||||
|
||||
// IPC.h
|
||||
// Header of IPC.c
|
||||
|
||||
#ifndef IPC_H
|
||||
#define IPC_H
|
||||
|
||||
// Constants
|
||||
#define IPC_ARP_LIFETIME (3 * 60 * 1000)
|
||||
#define IPC_ARP_GIVEUPTIME (1 * 1000)
|
||||
#define IPC_DHCP_TIMEOUT (5 * 1000)
|
||||
#define IPC_DHCP_MIN_LEASE 5
|
||||
#define IPC_DHCP_DEFAULT_LEASE 3600
|
||||
|
||||
#define IPC_MAX_PACKET_QUEUE_LEN 10000
|
||||
|
||||
#define IPC_DHCP_VENDOR_ID "MSFT 5.0"
|
||||
|
||||
#define IPC_PASSWORD_MSCHAPV2_TAG "xH7DiNlurDhcYV4a:"
|
||||
|
||||
#define IPC_LAYER_2 2
|
||||
#define IPC_LAYER_3 3
|
||||
|
||||
// ARP table entry
|
||||
struct IPC_ARP
|
||||
{
|
||||
IP Ip; // IP address
|
||||
bool Resolved; // Whether the MAC address have been resolved
|
||||
UCHAR MacAddress[6]; // MAC address
|
||||
UINT64 GiveupTime; // Time to give up (in the case of unresolved)
|
||||
UINT64 ExpireTime; // Expiration date (If resolved)
|
||||
QUEUE *PacketQueue; // Transmission packet queue
|
||||
};
|
||||
|
||||
// DHCP release queue
|
||||
struct IPC_DHCP_RELEASE_QUEUE
|
||||
{
|
||||
DHCP_OPTION_LIST Req;
|
||||
UINT TranId;
|
||||
UCHAR MacAddress[6];
|
||||
};
|
||||
|
||||
// IPC_SESSION_SHARED_BUFFER_DATA
|
||||
struct IPC_SESSION_SHARED_BUFFER_DATA
|
||||
{
|
||||
char ProtocolDetails[256];
|
||||
bool EnableUdpAccel;
|
||||
bool UsingUdpAccel;
|
||||
};
|
||||
|
||||
// IPC_PARAM
|
||||
struct IPC_PARAM
|
||||
{
|
||||
char ClientName[MAX_SIZE];
|
||||
char Postfix[MAX_SIZE];
|
||||
char HubName[MAX_HUBNAME_LEN + 1];
|
||||
char UserName[MAX_USERNAME_LEN + 1];
|
||||
char Password[MAX_PASSWORD_LEN + 1];
|
||||
IP ClientIp;
|
||||
UINT ClientPort;
|
||||
IP ServerIp;
|
||||
UINT ServerPort;
|
||||
char ClientHostname[MAX_SIZE];
|
||||
char CryptName[MAX_SIZE];
|
||||
bool BridgeMode;
|
||||
UINT Mss;
|
||||
bool IsL3Mode;
|
||||
X *ClientCertificate;
|
||||
UINT Layer;
|
||||
};
|
||||
|
||||
// IPC_ASYNC object
|
||||
struct IPC_ASYNC
|
||||
{
|
||||
CEDAR *Cedar; // Cedar
|
||||
IPC_PARAM Param; // Parameters for creating IPC
|
||||
THREAD *Thread; // Thread
|
||||
SOCK_EVENT *SockEvent; // Socket events that is set when the connection is completed
|
||||
bool Done; // Processing completion flag
|
||||
IPC *Ipc; // IPC object (if it fails to connect, the value is NULL)
|
||||
TUBE *TubeForDisconnect; // Tube for disconnection notification
|
||||
UINT ErrorCode; // Error code in the case of failing to connect
|
||||
DHCP_OPTION_LIST L3ClientAddressOption; // Client IP address option (Only in the case of L3 mode)
|
||||
UINT64 L3DhcpRenewInterval; // DHCP update interval
|
||||
UINT64 L3NextDhcpRenewTick; // DHCP renewal time of the next
|
||||
bool DhcpAllocFailed; // Failed to get IP address from the DHCP server
|
||||
};
|
||||
|
||||
// IPC object
|
||||
struct IPC
|
||||
{
|
||||
CEDAR *Cedar;
|
||||
char HubName[MAX_HUBNAME_LEN + 1];
|
||||
char UserName[MAX_USERNAME_LEN + 1];
|
||||
char Password[MAX_PASSWORD_LEN + 1];
|
||||
char ClientHostname[MAX_SIZE];
|
||||
UCHAR random[SHA1_SIZE];
|
||||
char SessionName[MAX_SESSION_NAME_LEN + 1];
|
||||
char ConnectionName[MAX_CONNECTION_NAME_LEN + 1];
|
||||
POLICY *Policy;
|
||||
SOCK *Sock;
|
||||
INTERRUPT_MANAGER *Interrupt; // Interrupt manager
|
||||
IP ClientIPAddress; // IP address of the client
|
||||
IP SubnetMask; // Subnet mask of the client
|
||||
IP DefaultGateway; // Default gateway address
|
||||
IP BroadcastAddress; // Broadcast address
|
||||
UCHAR MacAddress[6]; // MAC address
|
||||
UCHAR Padding[2];
|
||||
LIST *ArpTable; // ARP table
|
||||
QUEUE *IPv4ReceivedQueue; // IPv4 reception queue
|
||||
TUBE_FLUSH_LIST *FlushList; // Tube Flush List
|
||||
UCHAR MsChapV2_ServerResponse[20]; // Server response
|
||||
DHCP_CLASSLESS_ROUTE_TABLE ClasslessRoute; // Classless routing table
|
||||
SHARED_BUFFER *IpcSessionSharedBuffer; // A shared buffer between IPC and Session
|
||||
IPC_SESSION_SHARED_BUFFER_DATA *IpcSessionShared; // Shared data between IPC and Session
|
||||
UINT Layer;
|
||||
};
|
||||
|
||||
// MS-CHAPv2 authentication information
|
||||
struct IPC_MSCHAP_V2_AUTHINFO
|
||||
{
|
||||
char MsChapV2_PPPUsername[MAX_SIZE]; // MS-CHAPv2 Username
|
||||
UCHAR MsChapV2_ServerChallenge[16]; // MS-CHAPv2 Server Challenge
|
||||
UCHAR MsChapV2_ClientChallenge[16]; // MS-CHAPv2 Client Challenge
|
||||
UCHAR MsChapV2_ClientResponse[24]; // MS-CHAPv2 Client Response
|
||||
EAP_CLIENT *MsChapV2_EapClient; // EAP client
|
||||
};
|
||||
|
||||
IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char *username, char *password,
|
||||
UINT *error_code, IP *client_ip, UINT client_port, IP *server_ip, UINT server_port,
|
||||
char *client_hostname, char *crypt_name,
|
||||
bool bridge_mode, UINT mss, EAP_CLIENT *eap_client, X *client_certificate,
|
||||
UINT layer);
|
||||
IPC *NewIPCByParam(CEDAR *cedar, IPC_PARAM *param, UINT *error_code);
|
||||
IPC *NewIPCBySock(CEDAR *cedar, SOCK *s, void *mac_address);
|
||||
void FreeIPC(IPC *ipc);
|
||||
bool IsIPCConnected(IPC *ipc);
|
||||
void IPCSetSockEventWhenRecvL2Packet(IPC *ipc, SOCK_EVENT *e);
|
||||
void IPCSendL2(IPC *ipc, void *data, UINT size);
|
||||
void IPCSendIPv4(IPC *ipc, void *data, UINT size);
|
||||
BLOCK *IPCRecvL2(IPC *ipc);
|
||||
BLOCK *IPCRecvIPv4(IPC *ipc);
|
||||
void IPCProcessInterrupts(IPC *ipc);
|
||||
void IPCProcessL3Events(IPC *ipc);
|
||||
void IPCProcessL3EventsEx(IPC *ipc, UINT64 now);
|
||||
bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw, DHCP_CLASSLESS_ROUTE_TABLE *rt);
|
||||
IPC_ARP *IPCNewARP(IP *ip, UCHAR *mac_address);
|
||||
void IPCFreeARP(IPC_ARP *a);
|
||||
int IPCCmpArpTable(void *p1, void *p2);
|
||||
void IPCSendIPv4Unicast(IPC *ipc, void *data, UINT size, IP *next_ip);
|
||||
IPC_ARP *IPCSearchArpTable(IPC *ipc, IP *ip);
|
||||
void IPCSendIPv4WithDestMacAddr(IPC *ipc, void *data, UINT size, UCHAR *dest_mac_addr);
|
||||
void IPCFlushArpTable(IPC *ipc);
|
||||
void IPCFlushArpTableEx(IPC *ipc, UINT64 now);
|
||||
void IPCProcessArp(IPC *ipc, BLOCK *b);
|
||||
void IPCAssociateOnArpTable(IPC *ipc, IP *ip, UCHAR *mac_address);
|
||||
bool IsValidUnicastMacAddress(UCHAR *mac);
|
||||
bool IsValidUnicastIPAddress4(IP *ip);
|
||||
bool IsValidUnicastIPAddressUINT4(UINT ip);
|
||||
DHCPV4_DATA *IPCSendDhcpRequest(IPC *ipc, IP *dest_ip, UINT tran_id, DHCP_OPTION_LIST *opt, UINT expecting_code, UINT timeout, TUBE *discon_poll_tube);
|
||||
BUF *IPCBuildDhcpRequest(IPC *ipc, IP *dest_ip, UINT tran_id, DHCP_OPTION_LIST *opt);
|
||||
BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt);
|
||||
bool IPCDhcpAllocateIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube);
|
||||
bool IPCDhcpRequestInformIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube, IP *client_ip);
|
||||
void IPCDhcpRenewIP(IPC *ipc, IP *dhcp_server);
|
||||
void IPCDhcpFreeIP(IPC *ipc, IP *dhcp_server);
|
||||
IPC_ASYNC *NewIPCAsync(CEDAR *cedar, IPC_PARAM *param, SOCK_EVENT *sock_event);
|
||||
void IPCAsyncThreadProc(THREAD *thread, void *param);
|
||||
void FreeIPCAsync(IPC_ASYNC *a);
|
||||
|
||||
bool ParseAndExtractMsChapV2InfoFromPassword(IPC_MSCHAP_V2_AUTHINFO *d, char *password);
|
||||
|
||||
#endif // IPC_H
|
||||
@@ -1,205 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec.h
|
||||
// Header of IPsec.c
|
||||
|
||||
#ifndef IPSEC_H
|
||||
#define IPSEC_H
|
||||
|
||||
//// Constants
|
||||
|
||||
// UDP port number
|
||||
#define IPSEC_PORT_L2TP 1701 // L2TP
|
||||
#define IPSEC_PORT_IPSEC_ISAKMP 500 // ISAKMP
|
||||
#define IPSEC_PORT_IPSEC_ESP_UDP 4500 // IPsec ESP over UDP
|
||||
#define IPSEC_PORT_IPSEC_ESP_RAW MAKE_SPECIAL_PORT(50) // Raw mode ESP Protocol No: 50
|
||||
#define IPSEC_PORT_IPSEC_ESP_RAW_WPF MAKE_SPECIAL_PORT(52) // Raw mode ESP Protocol No: 52 (WPF)
|
||||
#define IPSEC_PORT_L2TPV3_VIRTUAL 1000001 // L2TPv3 virtual port
|
||||
|
||||
// IP protocol number
|
||||
#define IPSEC_IP_PROTO_ETHERIP IP_PROTO_ETHERIP // EtherIP
|
||||
#define IPSEC_IP_PROTO_L2TPV3 IP_PROTO_L2TPV3 // L2TPv3
|
||||
|
||||
// WFP tag
|
||||
#define WFP_ESP_PACKET_TAG_1 0x19841117
|
||||
#define WFP_ESP_PACKET_TAG_2 0x1accafe1
|
||||
|
||||
// Monitoring interval of OS service
|
||||
#define IPSEC_CHECK_OS_SERVICE_INTERVAL_INITIAL 1024
|
||||
#define IPSEC_CHECK_OS_SERVICE_INTERVAL_MAX (5 * 60 * 1000)
|
||||
|
||||
// Default IPsec pre-shared key
|
||||
#define IPSEC_DEFAULT_SECRET "vpn"
|
||||
|
||||
|
||||
//// Type
|
||||
|
||||
// List of services provided by IPsec server
|
||||
struct IPSEC_SERVICES
|
||||
{
|
||||
bool L2TP_Raw; // Raw L2TP
|
||||
bool L2TP_IPsec; // L2TP over IPsec
|
||||
bool EtherIP_IPsec; // EtherIP over IPsec
|
||||
|
||||
char IPsec_Secret[MAX_SIZE]; // IPsec pre-shared key
|
||||
char L2TP_DefaultHub[MAX_SIZE]; // Default Virtual HUB name for L2TP connection
|
||||
};
|
||||
|
||||
// EtherIP key list entry
|
||||
struct ETHERIP_ID
|
||||
{
|
||||
char Id[MAX_SIZE]; // ID
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // Virtual HUB name
|
||||
char UserName[MAX_USERNAME_LEN + 1]; // User name
|
||||
char Password[MAX_USERNAME_LEN + 1]; // Password
|
||||
};
|
||||
|
||||
// IPsec server
|
||||
struct IPSEC_SERVER
|
||||
{
|
||||
CEDAR *Cedar;
|
||||
UDPLISTENER *UdpListener;
|
||||
bool Halt;
|
||||
bool NoMoreChangeSettings;
|
||||
LOCK *LockSettings;
|
||||
IPSEC_SERVICES Services;
|
||||
L2TP_SERVER *L2TP; // L2TP server
|
||||
IKE_SERVER *Ike; // IKE server
|
||||
LIST *EtherIPIdList; // EtherIP setting list
|
||||
UINT EtherIPIdListSettingVerNo; // EtherIP setting list version number
|
||||
THREAD *OsServiceCheckThread; // OS Service monitoring thread
|
||||
EVENT *OsServiceCheckThreadEvent; // Event for OS Service monitoring thread
|
||||
IPSEC_WIN7 *Win7; // Helper module for Windows Vista / 7
|
||||
bool Check_LastEnabledStatus;
|
||||
bool HostIPAddressListChanged;
|
||||
bool OsServiceStoped;
|
||||
};
|
||||
|
||||
|
||||
//// Function prototype
|
||||
IPSEC_SERVER *NewIPsecServer(CEDAR *cedar);
|
||||
void FreeIPsecServer(IPSEC_SERVER *s);
|
||||
void IPsecServerUdpPacketRecvProc(UDPLISTENER *u, LIST *packet_list);
|
||||
void IPsecServerSetServices(IPSEC_SERVER *s, IPSEC_SERVICES *sl);
|
||||
void IPsecNormalizeServiceSetting(IPSEC_SERVER *s);
|
||||
void IPsecServerGetServices(IPSEC_SERVER *s, IPSEC_SERVICES *sl);
|
||||
void IPsecProcPacket(IPSEC_SERVER *s, UDPPACKET *p);
|
||||
int CmpEtherIPId(void *p1, void *p2);
|
||||
bool SearchEtherIPId(IPSEC_SERVER *s, ETHERIP_ID *id, char *id_str);
|
||||
void AddEtherIPId(IPSEC_SERVER *s, ETHERIP_ID *id);
|
||||
bool DeleteEtherIPId(IPSEC_SERVER *s, char *id_str);
|
||||
void IPsecOsServiceCheckThread(THREAD *t, void *p);
|
||||
bool IPsecCheckOsService(IPSEC_SERVER *s);
|
||||
void IPSecSetDisable(bool b);
|
||||
|
||||
|
||||
#endif // IPSEC_H
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_EtherIP.h
|
||||
// Header of IPsec_EtherIP.c
|
||||
|
||||
#ifndef IPSEC_ETHERIP_H
|
||||
#define IPSEC_ETHERIP_H
|
||||
|
||||
//// Macro
|
||||
|
||||
|
||||
//// Constants
|
||||
#define ETHERIP_VPN_CONNECT_RETRY_INTERVAL (15 * 1000) // VPN connection retry interval
|
||||
#define ETHERIP_CLIENT_NAME "EtherIP Client"
|
||||
#define ETHERIP_POSTFIX "ETHERIP"
|
||||
#define ETHERIP_L2TPV3_CLIENT_NAME "L2TPv3 Client"
|
||||
#define ETHERIP_L2TPV3_CLIENT_NAME_EX "L2TPv3 Client - %s"
|
||||
#define ETHERIP_L2TPV3_POSTFIX "L2TPV3"
|
||||
|
||||
//// Type
|
||||
|
||||
// EtherIP server
|
||||
struct ETHERIP_SERVER
|
||||
{
|
||||
REF *Ref;
|
||||
CEDAR *Cedar;
|
||||
IPSEC_SERVER *IPsec;
|
||||
LOCK *Lock;
|
||||
UINT Id;
|
||||
IKE_SERVER *Ike;
|
||||
UINT64 Now; // Current time
|
||||
INTERRUPT_MANAGER *Interrupts; // Interrupt manager
|
||||
SOCK_EVENT *SockEvent; // SockEvent
|
||||
char CryptName[MAX_SIZE]; // Cipher algorithm name
|
||||
LIST *SendPacketList; // Transmission packet list
|
||||
UINT64 LastConnectFailedTick; // Time that it fails to connect at the last
|
||||
IPC *Ipc; // IPC
|
||||
THREAD *IpcConnectThread; // IPC connection thread
|
||||
IPSEC_SERVICES CurrentIPSecServiceSetting; // Copy of the current IPsec service settings
|
||||
IP ClientIP, ServerIP;
|
||||
UINT ClientPort, ServerPort;
|
||||
bool IsTunnelMode; // Whether the IPsec is in the tunnel mode
|
||||
UINT CryptBlockSize; // Encryption block size of IPsec
|
||||
char ClientId[MAX_SIZE]; // Client ID has been presented by the IPsec connection
|
||||
UINT LastEtherIPSettingVerNo; // Version number of EtherIP settings last checked
|
||||
ETHERIP_ID CurrentEtherIPIdSetting; // Current EtherIP ID settings
|
||||
bool L2TPv3; // L2TPv3 mode
|
||||
char VendorName[MAX_SIZE]; // Vendor name
|
||||
};
|
||||
|
||||
|
||||
//// Function prototype
|
||||
ETHERIP_SERVER *NewEtherIPServer(CEDAR *cedar, IPSEC_SERVER *ipsec, IKE_SERVER *ike,
|
||||
IP *client_ip, UINT client_port, IP *server_ip, UINT server_port, char *crypt_name,
|
||||
bool is_tunnel_mode, UINT crypt_block_size,
|
||||
char *client_id, UINT id);
|
||||
void ReleaseEtherIPServer(ETHERIP_SERVER *s);
|
||||
void CleanupEtherIPServer(ETHERIP_SERVER *s);
|
||||
void SetEtherIPServerSockEvent(ETHERIP_SERVER *s, SOCK_EVENT *e);
|
||||
void EtherIPProcInterrupts(ETHERIP_SERVER *s);
|
||||
void EtherIPProcRecvPackets(ETHERIP_SERVER *s, BLOCK *b);
|
||||
void EtherIPIpcConnectThread(THREAD *t, void *p);
|
||||
UINT CalcEtherIPTcpMss(ETHERIP_SERVER *s);
|
||||
|
||||
|
||||
#endif // IPSEC_ETHERIP_H
|
||||
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IPC.h
|
||||
// Header of IPsec_IPC.c
|
||||
|
||||
#ifndef IPSEC_IPC
|
||||
#define IPSEC_IPC
|
||||
|
||||
// Constants
|
||||
#define IPC_ARP_LIFETIME (3 * 60 * 1000)
|
||||
#define IPC_ARP_GIVEUPTIME (1 * 1000)
|
||||
#define IPC_DHCP_TIMEOUT (5 * 1000)
|
||||
#define IPC_DHCP_TIMEOUT_TOTAL_GIVEUP (20 * 1000)
|
||||
#define IPC_DHCP_MIN_LEASE 5
|
||||
#define IPC_DHCP_DEFAULT_LEASE 3600
|
||||
|
||||
#define IPC_MAX_PACKET_QUEUE_LEN 10000
|
||||
|
||||
#define IPC_DHCP_VENDOR_ID "MSFT 5.0"
|
||||
|
||||
#define IPC_PASSWORD_MSCHAPV2_TAG "xH7DiNlurDhcYV4a:"
|
||||
|
||||
// ARP table entry
|
||||
struct IPC_ARP
|
||||
{
|
||||
IP Ip; // IP address
|
||||
bool Resolved; // Whether the MAC address have been resolved
|
||||
UCHAR MacAddress[6]; // MAC address
|
||||
UINT64 GiveupTime; // Time to give up (in the case of unresolved)
|
||||
UINT64 ExpireTime; // Expiration date (If resolved)
|
||||
QUEUE *PacketQueue; // Transmission packet queue
|
||||
};
|
||||
|
||||
// DHCP release queue
|
||||
struct IPC_DHCP_RELESAE_QUEUE
|
||||
{
|
||||
DHCP_OPTION_LIST Req;
|
||||
UINT TranId;
|
||||
UCHAR MacAddress[6];
|
||||
};
|
||||
|
||||
// IPC_PARAM
|
||||
struct IPC_PARAM
|
||||
{
|
||||
char ClientName[MAX_SIZE];
|
||||
char Postfix[MAX_SIZE];
|
||||
char HubName[MAX_HUBNAME_LEN + 1];
|
||||
char UserName[MAX_USERNAME_LEN + 1];
|
||||
char Password[MAX_PASSWORD_LEN + 1];
|
||||
IP ClientIp;
|
||||
UINT ClientPort;
|
||||
IP ServerIp;
|
||||
UINT ServerPort;
|
||||
char ClientHostname[MAX_SIZE];
|
||||
char CryptName[MAX_SIZE];
|
||||
bool BridgeMode;
|
||||
UINT Mss;
|
||||
bool IsL3Mode;
|
||||
bool IsOpenVPN;
|
||||
};
|
||||
|
||||
// IPC_ASYNC object
|
||||
struct IPC_ASYNC
|
||||
{
|
||||
CEDAR *Cedar; // Cedar
|
||||
IPC_PARAM Param; // Parameters for creating IPC
|
||||
THREAD *Thread; // Thread
|
||||
SOCK_EVENT *SockEvent; // Socket events that is set when the connection is completed
|
||||
bool Done; // Processing completion flag
|
||||
IPC *Ipc; // IPC object (if it fails to connect, the value is NULL)
|
||||
TUBE *TubeForDisconnect; // Tube for disconnection notification
|
||||
UINT ErrorCode; // Error code in the case of failing to connect
|
||||
DHCP_OPTION_LIST L3ClientAddressOption; // Client IP address option (Only in the case of L3 mode)
|
||||
UINT64 L3DhcpRenewInterval; // DHCP update interval
|
||||
UINT64 L3NextDhcpRenewTick; // DHCP renewal time of the next
|
||||
bool DhcpAllocFailed; // Failed to get IP address from the DHCP server
|
||||
};
|
||||
|
||||
// IPC object
|
||||
struct IPC
|
||||
{
|
||||
CEDAR *Cedar;
|
||||
char HubName[MAX_HUBNAME_LEN + 1];
|
||||
char UserName[MAX_USERNAME_LEN + 1];
|
||||
char Password[MAX_PASSWORD_LEN + 1];
|
||||
char ClientHostname[MAX_SIZE];
|
||||
UCHAR random[SHA1_SIZE];
|
||||
char SessionName[MAX_SESSION_NAME_LEN + 1];
|
||||
char ConnectionName[MAX_CONNECTION_NAME_LEN + 1];
|
||||
POLICY *Policy;
|
||||
SOCK *Sock;
|
||||
INTERRUPT_MANAGER *Interrupt; // Interrupt manager
|
||||
IP ClientIPAddress; // IP address of the client
|
||||
IP SubnetMask; // Subnet mask of the client
|
||||
IP DefaultGateway; // Default gateway address
|
||||
IP BroadcastAddress; // Broadcast address
|
||||
UCHAR MacAddress[6]; // MAC address
|
||||
UCHAR Padding[2];
|
||||
LIST *ArpTable; // ARP table
|
||||
QUEUE *IPv4RecviedQueue; // IPv4 reception queue
|
||||
TUBE_FLUSH_LIST *FlushList; // Tube Flush List
|
||||
UCHAR MsChapV2_ServerResponse[20]; // Server response
|
||||
DHCP_CLASSLESS_ROUTE_TABLE ClasslessRoute; // Classless routing table
|
||||
};
|
||||
|
||||
// MS-CHAPv2 authentication information
|
||||
struct IPC_MSCHAP_V2_AUTHINFO
|
||||
{
|
||||
char MsChapV2_PPPUsername[MAX_SIZE]; // MS-CHAPv2 Username
|
||||
UCHAR MsChapV2_ServerChallenge[16]; // MS-CHAPv2 Server Challenge
|
||||
UCHAR MsChapV2_ClientChallenge[16]; // MS-CHAPv2 Client Challenge
|
||||
UCHAR MsChapV2_ClientResponse[24]; // MS-CHAPv2 Client Response
|
||||
EAP_CLIENT *MsChapV2_EapClient; // EAP client
|
||||
};
|
||||
|
||||
IPC *NewIPC(CEDAR *cedar, char *client_name, char *postfix, char *hubname, char *username, char *password,
|
||||
UINT *error_code, IP *client_ip, UINT client_port, IP *server_ip, UINT server_port,
|
||||
char *client_hostname, char *crypt_name,
|
||||
bool bridge_mode, UINT mss, EAP_CLIENT *eap_client);
|
||||
IPC *NewIPCByParam(CEDAR *cedar, IPC_PARAM *param, UINT *error_code);
|
||||
IPC *NewIPCBySock(CEDAR *cedar, SOCK *s, void *mac_address);
|
||||
void FreeIPC(IPC *ipc);
|
||||
bool IsIPCConnected(IPC *ipc);
|
||||
void IPCSetSockEventWhenRecvL2Packet(IPC *ipc, SOCK_EVENT *e);
|
||||
void IPCSendL2(IPC *ipc, void *data, UINT size);
|
||||
void IPCSendIPv4(IPC *ipc, void *data, UINT size);
|
||||
BLOCK *IPCRecvL2(IPC *ipc);
|
||||
BLOCK *IPCRecvIPv4(IPC *ipc);
|
||||
void IPCProcessInterrupts(IPC *ipc);
|
||||
void IPCProcessL3Events(IPC *ipc);
|
||||
void IPCProcessL3EventsEx(IPC *ipc, UINT64 now);
|
||||
bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw, DHCP_CLASSLESS_ROUTE_TABLE *rt);
|
||||
IPC_ARP *IPCNewARP(IP *ip, UCHAR *mac_address);
|
||||
void IPCFreeARP(IPC_ARP *a);
|
||||
int IPCCmpArpTable(void *p1, void *p2);
|
||||
void IPCSendIPv4Unicast(IPC *ipc, void *data, UINT size, IP *next_ip);
|
||||
IPC_ARP *IPCSearchArpTable(IPC *ipc, IP *ip);
|
||||
void IPCSendIPv4WithDestMacAddr(IPC *ipc, void *data, UINT size, UCHAR *dest_mac_addr);
|
||||
void IPCFlushArpTable(IPC *ipc);
|
||||
void IPCFlushArpTableEx(IPC *ipc, UINT64 now);
|
||||
void IPCProcessArp(IPC *ipc, BLOCK *b);
|
||||
void IPCAssociateOnArpTable(IPC *ipc, IP *ip, UCHAR *mac_address);
|
||||
bool IsValidUnicastMacAddress(UCHAR *mac);
|
||||
bool IsValidUnicastIPAddress4(IP *ip);
|
||||
bool IsValidUnicastIPAddressUINT4(UINT ip);
|
||||
DHCPV4_DATA *IPCSendDhcpRequest(IPC *ipc, IP *dest_ip, UINT tran_id, DHCP_OPTION_LIST *opt, UINT expecting_code, UINT timeout, TUBE *discon_poll_tube);
|
||||
BUF *IPCBuildDhcpRequest(IPC *ipc, IP *dest_ip, UINT tran_id, DHCP_OPTION_LIST *opt);
|
||||
BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt);
|
||||
bool IPCDhcpAllocateIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube);
|
||||
bool IPCDhcpAllocateIPEx(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube, bool openvpn_compatible);
|
||||
bool IPCDhcpRequestInformIP(IPC *ipc, DHCP_OPTION_LIST *opt, TUBE *discon_poll_tube, IP *client_ip);
|
||||
void IPCDhcpRenewIP(IPC *ipc, IP *dhcp_server);
|
||||
void IPCDhcpFreeIP(IPC *ipc, IP *dhcp_server);
|
||||
IPC_ASYNC *NewIPCAsync(CEDAR *cedar, IPC_PARAM *param, SOCK_EVENT *sock_event);
|
||||
void IPCAsyncThreadProc(THREAD *thread, void *param);
|
||||
void FreeIPCAsync(IPC_ASYNC *a);
|
||||
|
||||
bool ParseAndExtractMsChapV2InfoFromPassword(IPC_MSCHAP_V2_AUTHINFO *d, char *password);
|
||||
|
||||
#endif // IPSEC_IPC
|
||||
|
||||
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_Win7.h
|
||||
// Header of IPsec_Win7.c
|
||||
|
||||
#ifndef IPSEC_WIN7_H
|
||||
#define IPSEC_WIN7_H
|
||||
|
||||
// Constants
|
||||
#define IPSEC_WIN7_SRC_SYS_X86 "|pxwfp_x86.sys"
|
||||
#define IPSEC_WIN7_SRC_SYS_X64 "|pxwfp_x64.sys"
|
||||
#define IPSEC_WIN7_DST_SYS "%s\\drivers\\pxwfp.sys"
|
||||
|
||||
#define IPSEC_WIN7_DRIVER_NAME "pxwfp"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE L"SoftEther PacketiX VPN IPsec WFP Callout Driver"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE_V4 L"SoftEther PacketiX VPN IPsec WFP Callout for IPv4"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE_V6 L"SoftEther PacketiX VPN IPsec WFP Callout for IPv6"
|
||||
#define IPSEC_WIN7_FILTER_TITLE_V4 CEDAR_PRODUCT_STR_W L" VPN IPsec Filter for IPv4"
|
||||
#define IPSEC_WIN7_FILTER_TITLE_V6 CEDAR_PRODUCT_STR_W L" VPN IPsec Filter for IPv6"
|
||||
#define IPSEC_WIN7_DRIVER_REGKEY "SYSTEM\\CurrentControlSet\\services\\pxwfp"
|
||||
#define IPSEC_WIN7_DRIVER_BUILDNUMBER "CurrentInstalledBuild"
|
||||
#define IPSEC_WIN7_DRIVER_BUILDNUMBER_WIN10 "CurrentInstalledBuild_Win10"
|
||||
|
||||
|
||||
// Function prototype
|
||||
IPSEC_WIN7 *IPsecWin7Init();
|
||||
void IPsecWin7Free(IPSEC_WIN7 *w);
|
||||
void IPsecWin7UpdateHostIPAddressList(IPSEC_WIN7 *w);
|
||||
|
||||
bool IPsecWin7InitDriver();
|
||||
bool IPsecWin7InitDriverInner();
|
||||
UINT GetCurrentIPsecWin7DriverBuild();
|
||||
void SetCurrentIPsecWin7DriverBuild();
|
||||
bool IPsecWin7InitApi();
|
||||
|
||||
|
||||
#endif // IPSEC_WIN7_H
|
||||
|
||||
|
||||
|
||||
@@ -1,186 +0,0 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_Win7.h
|
||||
// Internal header of IPsec_Win7.c
|
||||
|
||||
#ifndef IPSEC_WIN7_INNER_H
|
||||
#define IPSEC_WIN7_INNER_H
|
||||
|
||||
// API function
|
||||
typedef struct IPSEC_WIN7_FUNCTIONS
|
||||
{
|
||||
DWORD (WINAPI *FwpmEngineOpen0)(
|
||||
IN OPTIONAL const wchar_t* serverName,
|
||||
IN UINT32 authnService,
|
||||
IN OPTIONAL SEC_WINNT_AUTH_IDENTITY_W* authIdentity,
|
||||
IN OPTIONAL const FWPM_SESSION0* session,
|
||||
OUT HANDLE* engineHandle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *FwpmEngineClose0)(IN HANDLE engineHandle);
|
||||
|
||||
void (WINAPI *FwpmFreeMemory0)(IN OUT void** p);
|
||||
|
||||
DWORD (WINAPI *FwpmFilterAdd0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const FWPM_FILTER0* filter,
|
||||
IN OPTIONAL PSECURITY_DESCRIPTOR sd,
|
||||
OUT OPTIONAL UINT64* id
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextCreate0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const IPSEC_TRAFFIC0* outboundTraffic,
|
||||
OUT OPTIONAL UINT64* inboundFilterId,
|
||||
OUT UINT64* id
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextGetSpi0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_GETSPI0* getSpi,
|
||||
OUT IPSEC_SA_SPI* inboundSpi
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextAddInbound0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_SA_BUNDLE0* inboundBundle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextAddOutbound0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_SA_BUNDLE0* outboundBundle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *FwpmCalloutAdd0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const FWPM_CALLOUT0* callout,
|
||||
IN OPTIONAL PSECURITY_DESCRIPTOR sd,
|
||||
OUT OPTIONAL UINT32* id
|
||||
);
|
||||
|
||||
} IPSEC_WIN7_FUNCTIONS;
|
||||
|
||||
// Instance
|
||||
struct IPSEC_WIN7
|
||||
{
|
||||
HANDLE hEngine;
|
||||
HANDLE hDriverFile;
|
||||
UINT64 FilterIPv4Id, FilterIPv6Id;
|
||||
};
|
||||
|
||||
|
||||
#endif // IPSEC_WIN7_INNER_H
|
||||
|
||||
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Layer3.c
|
||||
@@ -302,7 +196,7 @@ void L3RecvIp(L3IF *f, PKT *p, bool self)
|
||||
ip->TimeToLive = 0xff;
|
||||
|
||||
// Recalculates the checksum
|
||||
ip->FlagsAndFlagmentOffset[0] = ip->FlagsAndFlagmentOffset[1] = 0;
|
||||
ip->FlagsAndFragmentOffset[0] = ip->FlagsAndFragmentOffset[1] = 0;
|
||||
icmp->Checksum = 0;
|
||||
icmp->Type = ICMP_TYPE_ECHO_RESPONSE;
|
||||
icmp->Checksum = IpChecksum(icmp, p->PacketSize - sizeof(MAC_HEADER) - header_size);
|
||||
@@ -356,7 +250,7 @@ void L3RecvL2(L3IF *f, PKT *p)
|
||||
return;
|
||||
}
|
||||
|
||||
// Ignore any packets except a unicast packet which is destinated other
|
||||
// Ignore any packets except a unicast packet which is at destination
|
||||
// or a packet which I sent
|
||||
if (Cmp(p->MacAddressSrc, f->MacAddress, 6) == 0 ||
|
||||
(p->BroadcastPacket == false && Cmp(p->MacAddressDest, f->MacAddress, 6) != 0))
|
||||
@@ -823,7 +717,7 @@ void L3GenerateMacAddress(L3IF *f)
|
||||
WriteBuf(b, &f->IpAddress, sizeof(f->IpAddress));
|
||||
|
||||
GenMacAddress(f->MacAddress);
|
||||
Hash(hash, b->Buf, b->Size, true);
|
||||
Sha0(hash, b->Buf, b->Size);
|
||||
Copy(f->MacAddress + 2, hash, 4);
|
||||
f->MacAddress[1] = 0xA3;
|
||||
FreeBuf(b);
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Layer3.h
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Link.c
|
||||
@@ -266,7 +160,7 @@ bool LinkPaPutPacket(SESSION *s, void *data, UINT size)
|
||||
k->Flag1++;
|
||||
if ((k->Flag1 % 32) == 0)
|
||||
{
|
||||
// Ommit for performance
|
||||
// Omit for performance
|
||||
UINT current_num;
|
||||
int diff;
|
||||
|
||||
@@ -313,7 +207,7 @@ bool LinkPaPutPacket(SESSION *s, void *data, UINT size)
|
||||
}
|
||||
else
|
||||
{
|
||||
InsertReveicedBlockToQueue(server_connection, block, true);
|
||||
InsertReceivedBlockToQueue(server_connection, block, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -612,7 +506,7 @@ void StartLink(LINK *k)
|
||||
pa->Param = (void *)k;
|
||||
LockLink(k);
|
||||
{
|
||||
k->ClientSession = NewClientSession(k->Cedar, k->Option, k->Auth, pa);
|
||||
k->ClientSession = NewClientSession(k->Cedar, k->Option, k->Auth, pa, NULL);
|
||||
}
|
||||
UnlockLink(k);
|
||||
}
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Link.h
|
||||
|
||||
+9
-110
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Listener.c
|
||||
@@ -256,6 +150,9 @@ void TCPAcceptedThread(THREAD *t, void *param)
|
||||
// Create a connection
|
||||
c = NewServerConnection(r->Cedar, s, t);
|
||||
|
||||
AddRef(r->ref);
|
||||
c->Listener = r;
|
||||
|
||||
// Register to Cedar as a transient connection
|
||||
AddConnection(c->Cedar, c);
|
||||
|
||||
@@ -275,6 +172,8 @@ void TCPAcceptedThread(THREAD *t, void *param)
|
||||
|
||||
// Release
|
||||
SLog(r->Cedar, "LS_CONNECTION_END_1", c->Name);
|
||||
ReleaseListener(c->Listener);
|
||||
c->Listener = NULL;
|
||||
ReleaseConnection(c);
|
||||
|
||||
// Release
|
||||
@@ -489,12 +388,12 @@ void ListenerTCPMainLoop(LISTENER *r)
|
||||
}
|
||||
else if (r->Protocol == LISTENER_ICMP)
|
||||
{
|
||||
s = ListenRUDP(VPN_RUDP_SVC_NAME, NULL, ListenerRUDPRpcRecvProc, NULL, MAKE_SPECIAL_PORT(IP_PROTO_ICMPV4),
|
||||
true, false);
|
||||
s = ListenRUDPEx(VPN_RUDP_SVC_NAME, NULL, ListenerRUDPRpcRecvProc, NULL, MAKE_SPECIAL_PORT(IP_PROTO_ICMPV4),
|
||||
true, false, NULL, 0, &r->Cedar->Server->ListenIP);
|
||||
}
|
||||
else if (r->Protocol == LISTENER_DNS)
|
||||
{
|
||||
s = ListenRUDP(VPN_RUDP_SVC_NAME, NULL, ListenerRUDPRpcRecvProc, NULL, 53, true, true);
|
||||
s = ListenRUDPEx(VPN_RUDP_SVC_NAME, NULL, ListenerRUDPRpcRecvProc, NULL, 53, true, true, NULL, 0, &r->Cedar->Server->ListenIP);
|
||||
}
|
||||
else if (r->Protocol == LISTENER_REVERSE)
|
||||
{
|
||||
@@ -562,7 +461,7 @@ void ListenerTCPMainLoop(LISTENER *r)
|
||||
goto STOP;
|
||||
}
|
||||
|
||||
// Accpet loop
|
||||
// Accept loop
|
||||
while (true)
|
||||
{
|
||||
// Accept
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Listener.h
|
||||
|
||||
+324
-547
File diff suppressed because it is too large
Load Diff
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Logging.h
|
||||
@@ -223,8 +117,6 @@ char *StringRecordParseProc(RECORD *rec);
|
||||
bool MakeLogFileName(LOG *g, char *name, UINT size, char *dir, char *prefix, UINT64 tick, UINT switch_type, UINT num, char *old_datestr);
|
||||
void MakeLogFileNameStringFromTick(LOG *g, char *str, UINT size, UINT64 tick, UINT switch_type);
|
||||
void WriteRecordToBuffer(BUF *b, RECORD *r);
|
||||
void SetLogDirName(LOG *g, char *dir);
|
||||
void SetLogPrefix(LOG *g, char *prefix);
|
||||
void SetLogSwitchType(LOG *g, UINT switch_type);
|
||||
bool PacketLog(HUB *hub, SESSION *src_session, SESSION *dest_session, PKT *packet, UINT64 now);
|
||||
char *PacketLogParseProc(RECORD *rec);
|
||||
@@ -234,17 +126,12 @@ char *GenCsvLine(TOKEN_LIST *t);
|
||||
void ReplaceForCsv(char *str);
|
||||
char *PortStr(CEDAR *cedar, UINT port, bool udp);
|
||||
char *TcpFlagStr(UCHAR flag);
|
||||
void WriteSecurityLog(HUB *h, char *str);
|
||||
void SecLog(HUB *h, char *fmt, ...);
|
||||
void SiSetDefaultLogSetting(HUB_LOG *g);
|
||||
void DebugLog(CEDAR *c, char *fmt, ...);
|
||||
void HubLog(HUB *h, wchar_t *fmt, ...);
|
||||
void ServerLog(CEDAR *c, wchar_t *fmt, ...);
|
||||
void SLog(CEDAR *c, char *name, ...);
|
||||
void WriteHubLog(HUB *h, wchar_t *str);
|
||||
void HLog(HUB *h, char *name, ...);
|
||||
void NLog(VH *v, char *name, ...);
|
||||
void IPCLog(IPC *ipc, char *name, ...);
|
||||
void PPPLog(PPP_SESSION *p, char *name, ...);
|
||||
void IPsecLog(IKE_SERVER *ike, IKE_CLIENT *c, IKE_SA *ike_sa, IPSECSA *ipsec_sa, char *name, ...);
|
||||
void EtherIPLog(ETHERIP_SERVER *s, char *name, ...);
|
||||
@@ -261,13 +148,11 @@ bool CheckEraserDiskFreeSpace(ERASER *e);
|
||||
int CompareEraseFile(void *p1, void *p2);
|
||||
LIST *GenerateEraseFileList(ERASER *e);
|
||||
void FreeEraseFileList(LIST *o);
|
||||
void PrintEraseFileList(LIST *o);
|
||||
void EnumEraseFile(LIST *o, char *dirname);
|
||||
SLOG *NewSysLog(char *hostname, UINT port, IP *ip);
|
||||
void SetSysLog(SLOG *g, char *hostname, UINT port);
|
||||
void FreeSysLog(SLOG *g);
|
||||
void SendSysLog(SLOG *g, wchar_t *str);
|
||||
void WriteMultiLineLog(LOG *g, BUF *b);
|
||||
char *BuildHttpLogStr(HTTPLOG *h);
|
||||
void MakeSafeLogStr(char *str);
|
||||
void AddLogBufToStr(BUF *b, char *name, char *value);
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NM.c
|
||||
@@ -263,7 +157,7 @@ UINT NmChangePasswordProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, voi
|
||||
{
|
||||
case IDOK:
|
||||
Zero(&t, sizeof(t));
|
||||
Hash(t.HashedPassword, tmp1, StrLen(tmp1), true);
|
||||
Sha0(t.HashedPassword, tmp1, StrLen(tmp1));
|
||||
|
||||
if (CALL(hWnd, NcSetPassword(r, &t)))
|
||||
{
|
||||
@@ -1411,7 +1305,7 @@ UINT NmLogin(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
|
||||
{
|
||||
case IDOK:
|
||||
GetTxtA(hWnd, E_PASSWORD, tmp, sizeof(tmp));
|
||||
Hash(login->hashed_password, tmp, StrLen(tmp), true);
|
||||
Sha0(login->hashed_password, tmp, StrLen(tmp));
|
||||
EndDialog(hWnd, true);
|
||||
break;
|
||||
|
||||
@@ -1463,7 +1357,7 @@ RETRY_PASSWORD:
|
||||
Zero(&login, sizeof(login));
|
||||
login.Hostname = t->Hostname;
|
||||
login.Port = t->Port;
|
||||
Hash(login.hashed_password, "", 0, true);
|
||||
Sha0(login.hashed_password, "", 0);
|
||||
|
||||
if (flag)
|
||||
{
|
||||
|
||||
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NM.h
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NMInner.h
|
||||
|
||||
+13
-113
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Nat.c
|
||||
@@ -299,7 +193,7 @@ RPC *NatAdminConnect(CEDAR *cedar, char *hostname, UINT port, void *hashed_passw
|
||||
// RPC server function
|
||||
PACK *NiRpcServer(RPC *r, char *name, PACK *p)
|
||||
{
|
||||
NAT *n = (NAT *)r->Param;
|
||||
NAT *n;
|
||||
PACK *ret;
|
||||
UINT err;
|
||||
bool ok;
|
||||
@@ -309,6 +203,7 @@ PACK *NiRpcServer(RPC *r, char *name, PACK *p)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
n = (NAT *)r->Param;
|
||||
ret = NewPack();
|
||||
err = ERR_NO_ERROR;
|
||||
ok = false;
|
||||
@@ -902,18 +797,20 @@ void OutRpcEnumDhcp(PACK *p, RPC_ENUM_DHCP *t)
|
||||
PackAddInt(p, "NumItem", t->NumItem);
|
||||
PackAddStr(p, "HubName", t->HubName);
|
||||
|
||||
PackSetCurrentJsonGroupName(p, "DhcpTable");
|
||||
for (i = 0;i < t->NumItem;i++)
|
||||
{
|
||||
RPC_ENUM_DHCP_ITEM *e = &t->Items[i];
|
||||
|
||||
PackAddIntEx(p, "Id", e->Id, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "LeasedTime", e->LeasedTime, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "ExpireTime", e->ExpireTime, i, t->NumItem);
|
||||
PackAddTime64Ex(p, "LeasedTime", e->LeasedTime, i, t->NumItem);
|
||||
PackAddTime64Ex(p, "ExpireTime", e->ExpireTime, i, t->NumItem);
|
||||
PackAddDataEx(p, "MacAddress", e->MacAddress, 6, i, t->NumItem);
|
||||
PackAddIp32Ex(p, "IpAddress", e->IpAddress, i, t->NumItem);
|
||||
PackAddIntEx(p, "Mask", e->Mask, i, t->NumItem);
|
||||
PackAddStrEx(p, "Hostname", e->Hostname, i, t->NumItem);
|
||||
}
|
||||
PackSetCurrentJsonGroupName(p, NULL);
|
||||
}
|
||||
void FreeRpcEnumDhcp(RPC_ENUM_DHCP *t)
|
||||
{
|
||||
@@ -970,6 +867,8 @@ void OutRpcEnumNat(PACK *p, RPC_ENUM_NAT *t)
|
||||
|
||||
PackAddInt(p, "NumItem", t->NumItem);
|
||||
PackAddStr(p, "HubName", t->HubName);
|
||||
|
||||
PackSetCurrentJsonGroupName(p, "NatTable");
|
||||
for (i = 0;i < t->NumItem;i++)
|
||||
{
|
||||
RPC_ENUM_NAT_ITEM *e = &t->Items[i];
|
||||
@@ -982,12 +881,13 @@ void OutRpcEnumNat(PACK *p, RPC_ENUM_NAT *t)
|
||||
PackAddIp32Ex(p, "DestIp", e->DestIp, i, t->NumItem);
|
||||
PackAddStrEx(p, "DestHost", e->DestHost, i, t->NumItem);
|
||||
PackAddIntEx(p, "DestPort", e->DestPort, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "CreatedTime", e->CreatedTime, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "LastCommTime", e->LastCommTime, i, t->NumItem);
|
||||
PackAddTime64Ex(p, "CreatedTime", e->CreatedTime, i, t->NumItem);
|
||||
PackAddTime64Ex(p, "LastCommTime", e->LastCommTime, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "SendSize", e->SendSize, i, t->NumItem);
|
||||
PackAddInt64Ex(p, "RecvSize", e->RecvSize, i, t->NumItem);
|
||||
PackAddIntEx(p, "TcpStatus", e->TcpStatus, i, t->NumItem);
|
||||
}
|
||||
PackSetCurrentJsonGroupName(p, NULL);
|
||||
}
|
||||
void FreeRpcEnumNat(RPC_ENUM_NAT *t)
|
||||
{
|
||||
@@ -1192,7 +1092,7 @@ void NiAdminThread(THREAD *thread, void *param)
|
||||
{
|
||||
UCHAR test[SHA1_SIZE];
|
||||
// Password match
|
||||
Hash(test, "", 0, true);
|
||||
Sha0(test, "", 0);
|
||||
SecurePassword(test, test, random);
|
||||
|
||||
#if 0
|
||||
@@ -1792,7 +1692,7 @@ NAT *NiNewNatEx(SNAT *snat, VH_OPTION *o)
|
||||
NAT *n = ZeroMalloc(sizeof(NAT));
|
||||
|
||||
n->lock = NewLock();
|
||||
Hash(n->HashedPassword, "", 0, true);
|
||||
Sha0(n->HashedPassword, "", 0);
|
||||
n->HaltEvent = NewEvent();
|
||||
|
||||
//n->Cedar = NewCedar(NULL, NULL);
|
||||
|
||||
+2
-108
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Nat.h
|
||||
@@ -115,7 +9,7 @@
|
||||
#define NAT_H
|
||||
|
||||
// Constants
|
||||
#define NAT_CONFIG_FILE_NAME "@vpn_router.config" // NAT configuration file
|
||||
#define NAT_CONFIG_FILE_NAME "$vpn_router.config" // NAT configuration file
|
||||
#define DEFAULT_NAT_ADMIN_PORT 2828 // Default port number for management
|
||||
#define NAT_ADMIN_PORT_LISTEN_INTERVAL 1000 // Interval for trying to open a port for management
|
||||
#define NAT_FILE_SAVE_INTERVAL (30 * 1000) // Interval to save
|
||||
@@ -164,7 +58,7 @@ struct RPC_NAT_STATUS
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // HUB name
|
||||
UINT NumTcpSessions; // Number of TCP sessions
|
||||
UINT NumUdpSessions; // Ntmber of UDP sessions
|
||||
UINT NumIcmpSessions; // Nymber of ICMP sessions
|
||||
UINT NumIcmpSessions; // Number of ICMP sessions
|
||||
UINT NumDnsSessions; // Number of DNS sessions
|
||||
UINT NumDhcpClients; // Number of DHCP clients
|
||||
bool IsKernelMode; // Whether kernel mode
|
||||
|
||||
+3
-109
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NativeStack.c
|
||||
@@ -509,7 +403,7 @@ void NsGenMacAddressSignatureForMachine(UCHAR *dst_last_2, UCHAR *src_mac_addr_4
|
||||
WriteBuf(b, src_mac_addr_4, 4);
|
||||
WriteBufStr(b, machine_name);
|
||||
|
||||
HashSha1(hash, b->Buf, b->Size);
|
||||
Sha1(hash, b->Buf, b->Size);
|
||||
|
||||
FreeBuf(b);
|
||||
|
||||
@@ -533,7 +427,7 @@ void NsGenMacAddress(void *dest, char *mac_address_seed, char *device_name)
|
||||
|
||||
StrLower(tmp);
|
||||
|
||||
HashSha1(hash, tmp, StrLen(tmp));
|
||||
Sha1(hash, tmp, StrLen(tmp));
|
||||
|
||||
mac[0] = NS_MAC_ADDRESS_BYTE_1;
|
||||
mac[1] = hash[1];
|
||||
@@ -562,7 +456,7 @@ IPTABLES_STATE *StartAddIpTablesEntryForNativeStack(void *seed, UINT seed_size)
|
||||
|
||||
ret->EntryList = NewListFast(NULL);
|
||||
|
||||
HashSha1(ret->SeedHash, seed, seed_size);
|
||||
Sha1(ret->SeedHash, seed, seed_size);
|
||||
|
||||
// Create a pair of entry
|
||||
e = ZeroMalloc(sizeof(IPTABLES_ENTRY));
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NativeStack.h
|
||||
|
||||
+1
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NullLan.c
|
||||
@@ -145,7 +39,7 @@ void NullGenerateMacAddress(UCHAR *mac, UINT id, UINT seq)
|
||||
#endif // OS_WIN32
|
||||
WriteBufStr(b, name);
|
||||
|
||||
HashSha1(hash, b->Buf, b->Size);
|
||||
Sha1(hash, b->Buf, b->Size);
|
||||
|
||||
FreeBuf(b);
|
||||
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// NullLan.h
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
#include "CedarPch.h"
|
||||
|
||||
#include "Proto_OpenVPN.h"
|
||||
|
||||
static LIST *protocols = NULL;
|
||||
|
||||
int ProtoCompare(void *p1, void *p2)
|
||||
{
|
||||
PROTO *proto_1, *proto_2;
|
||||
|
||||
if (p1 == NULL || p2 == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
proto_1 = (PROTO *)p1;
|
||||
proto_2 = (PROTO *)p2;
|
||||
|
||||
if (StrCmp(proto_1->impl->Name(), proto_2->impl->Name()) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ProtoInit()
|
||||
{
|
||||
if (protocols != NULL)
|
||||
{
|
||||
ProtoFree();
|
||||
}
|
||||
|
||||
protocols = NewList(ProtoCompare);
|
||||
|
||||
// OpenVPN
|
||||
ProtoAdd(OvsGetProtoImpl());
|
||||
}
|
||||
|
||||
void ProtoFree()
|
||||
{
|
||||
UINT i;
|
||||
PROTO_IMPL *impl;
|
||||
|
||||
for (i = 0; i < ProtoNum(); ++i)
|
||||
{
|
||||
PROTO *proto = ProtoGet(i);
|
||||
impl = proto->impl;
|
||||
Free(proto);
|
||||
}
|
||||
|
||||
ReleaseList(protocols);
|
||||
protocols = NULL;
|
||||
}
|
||||
|
||||
bool ProtoAdd(PROTO_IMPL *impl)
|
||||
{
|
||||
PROTO *proto;
|
||||
|
||||
if (protocols == NULL || impl == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
proto = Malloc(sizeof(PROTO));
|
||||
proto->impl = impl;
|
||||
|
||||
Add(protocols, proto);
|
||||
|
||||
Debug("ProtoAdd(): added %s\n", proto->impl->Name());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
UINT ProtoNum()
|
||||
{
|
||||
return LIST_NUM(protocols);
|
||||
}
|
||||
|
||||
PROTO *ProtoGet(const UINT index)
|
||||
{
|
||||
return LIST_DATA(protocols, index);
|
||||
}
|
||||
|
||||
PROTO *ProtoDetect(SOCK *sock)
|
||||
{
|
||||
UCHAR buf[PROTO_CHECK_BUFFER_SIZE];
|
||||
UINT i;
|
||||
|
||||
if (sock == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (Peek(sock, buf, sizeof(buf)) == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < ProtoNum(); ++i)
|
||||
{
|
||||
PROTO *p = ProtoGet(i);
|
||||
if (p->impl->IsPacketForMe(buf, sizeof(buf)))
|
||||
{
|
||||
Debug("ProtoDetect(): %s detected\n", p->impl->Name());
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool ProtoHandleConnection(CEDAR *cedar, SOCK *sock)
|
||||
{
|
||||
void *impl_data;
|
||||
const PROTO_IMPL *impl;
|
||||
const PROTO *proto;
|
||||
|
||||
UCHAR *buf;
|
||||
TCP_RAW_DATA *recv_raw_data;
|
||||
FIFO *send_fifo;
|
||||
INTERRUPT_MANAGER *im;
|
||||
SOCK_EVENT *se;
|
||||
|
||||
const UINT64 giveup = Tick64() + (UINT64)OPENVPN_NEW_SESSION_DEADLINE_TIMEOUT;
|
||||
|
||||
if (cedar == NULL || sock == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
proto = ProtoDetect(sock);
|
||||
|
||||
if (proto == NULL)
|
||||
{
|
||||
Debug("ProtoHandleConnection(): unrecognized protocol\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
impl = proto->impl;
|
||||
|
||||
if (StrCmp(impl->Name(), "OpenVPN") == 0 && cedar->Server->DisableOpenVPNServer == true)
|
||||
{
|
||||
Debug("ProtoHandleConnection(): OpenVPN detected, but it's disabled\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((impl->SupportedModes() & PROTO_MODE_TCP) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
im = NewInterruptManager();
|
||||
se = NewSockEvent();
|
||||
|
||||
if (impl->Init != NULL && impl->Init(&impl_data, cedar, im, se) == false)
|
||||
{
|
||||
Debug("ProtoHandleConnection(): failed to initialize %s\n", impl->Name());
|
||||
FreeInterruptManager(im);
|
||||
ReleaseSockEvent(se);
|
||||
return false;
|
||||
}
|
||||
|
||||
SetTimeout(sock, TIMEOUT_INFINITE);
|
||||
JoinSockToSockEvent(sock, se);
|
||||
|
||||
recv_raw_data = NewTcpRawData(&sock->RemoteIP, sock->RemotePort, &sock->LocalIP, sock->LocalPort);
|
||||
send_fifo = NewFifoFast();
|
||||
|
||||
buf = Malloc(PROTO_TCP_BUFFER_SIZE);
|
||||
|
||||
Debug("ProtoHandleConnection(): entering main loop\n");
|
||||
|
||||
// Receive data from the TCP socket
|
||||
while (true)
|
||||
{
|
||||
UINT next_interval;
|
||||
bool stop = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
const UINT ret = Recv(sock, buf, PROTO_TCP_BUFFER_SIZE, false);
|
||||
|
||||
if (ret == SOCK_LATER)
|
||||
{
|
||||
// No more data to read
|
||||
break;
|
||||
}
|
||||
else if (ret == 0)
|
||||
{
|
||||
// Disconnected
|
||||
stop = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Write the received data into the FIFO
|
||||
WriteFifo(recv_raw_data->Data, buf, ret);
|
||||
}
|
||||
}
|
||||
|
||||
if (impl->ProcessData(impl_data, recv_raw_data, send_fifo) == false)
|
||||
{
|
||||
stop = true;
|
||||
}
|
||||
|
||||
// Send data to the TCP socket
|
||||
while (FifoSize(send_fifo) >= 1)
|
||||
{
|
||||
const UINT ret = Send(sock, FifoPtr(send_fifo), FifoSize(send_fifo), false);
|
||||
|
||||
if (ret == SOCK_LATER)
|
||||
{
|
||||
// Can not write anymore
|
||||
break;
|
||||
}
|
||||
else if (ret == 0)
|
||||
{
|
||||
// Disconnected
|
||||
stop = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove data that has been sent from the FIFO
|
||||
ReadFifo(send_fifo, NULL, ret);
|
||||
}
|
||||
}
|
||||
|
||||
impl->BufferLimit(impl_data, FifoSize(send_fifo) > MAX_BUFFERING_PACKET_SIZE);
|
||||
|
||||
if (impl->IsOk(impl_data) == false)
|
||||
{
|
||||
if (impl->EstablishedSessions(impl_data) == 0)
|
||||
{
|
||||
if (Tick64() >= giveup)
|
||||
{
|
||||
Debug("ProtoHandleConnection(): I waited too much for the session to start, I give up!\n");
|
||||
stop = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug("ProtoHandleConnection(): implementation not OK, stopping the server\n");
|
||||
stop = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (stop)
|
||||
{
|
||||
// Error or disconnection occurs
|
||||
Debug("ProtoHandleConnection(): breaking main loop\n");
|
||||
break;
|
||||
}
|
||||
|
||||
// Wait until the next event occurs
|
||||
next_interval = GetNextIntervalForInterrupt(im);
|
||||
next_interval = MIN(next_interval, UDPLISTENER_WAIT_INTERVAL);
|
||||
WaitSockEvent(se, next_interval);
|
||||
}
|
||||
|
||||
impl->Free(impl_data);
|
||||
|
||||
FreeInterruptManager(im);
|
||||
ReleaseSockEvent(se);
|
||||
FreeTcpRawData(recv_raw_data);
|
||||
ReleaseFifo(send_fifo);
|
||||
Free(buf);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef PROTO_H
|
||||
#define PROTO_H
|
||||
|
||||
// OpenVPN sends 2 bytes, thus this is the buffer size.
|
||||
// If another protocol requires more bytes to be detected, the buffer size must be increased.
|
||||
#define PROTO_CHECK_BUFFER_SIZE 2
|
||||
|
||||
#define PROTO_TCP_BUFFER_SIZE (128 * 1024)
|
||||
|
||||
#define PROTO_MODE_TCP 1
|
||||
#define PROTO_MODE_UDP 2
|
||||
|
||||
typedef struct PROTO_IMPL
|
||||
{
|
||||
bool (*Init)(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se);
|
||||
void (*Free)(void *param);
|
||||
char *(*Name)();
|
||||
UINT (*SupportedModes)();
|
||||
bool (*IsPacketForMe)(const UCHAR *data, const UINT size);
|
||||
bool (*ProcessData)(void *param, TCP_RAW_DATA *received_data, FIFO *data_to_send);
|
||||
void (*BufferLimit)(void *param, const bool reached);
|
||||
bool (*IsOk)(void *param);
|
||||
UINT (*EstablishedSessions)(void *param);
|
||||
} PROTO_IMPL;
|
||||
|
||||
typedef struct PROTO
|
||||
{
|
||||
PROTO_IMPL *impl;
|
||||
} PROTO;
|
||||
|
||||
int ProtoCompare(void *p1, void *p2);
|
||||
|
||||
void ProtoInit();
|
||||
void ProtoFree();
|
||||
|
||||
bool ProtoAdd(PROTO_IMPL *impl);
|
||||
|
||||
UINT ProtoNum();
|
||||
PROTO *ProtoGet(const UINT index);
|
||||
PROTO *ProtoDetect(SOCK *sock);
|
||||
|
||||
bool ProtoHandleConnection(CEDAR *cedar, SOCK *sock);
|
||||
|
||||
#endif
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_EtherIP.c
|
||||
// Proto_EtherIP.c
|
||||
// EtherIP protocol stack
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -170,7 +64,7 @@ void EtherIPIpcConnectThread(THREAD *t, void *p)
|
||||
&s->ClientIP, s->ClientPort,
|
||||
&s->ServerIP, s->ServerPort,
|
||||
tmp,
|
||||
s->CryptName, true, mss, NULL);
|
||||
s->CryptName, true, mss, NULL, NULL, IPC_LAYER_2);
|
||||
|
||||
if (ipc != NULL)
|
||||
{
|
||||
@@ -541,16 +435,8 @@ UINT CalcEtherIPTcpMss(ETHERIP_SERVER *s)
|
||||
}
|
||||
}
|
||||
|
||||
if (s->L2TPv3 == false)
|
||||
{
|
||||
// EtherIP
|
||||
ret -= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
// L2TPv3
|
||||
ret -= 2;
|
||||
}
|
||||
// EtherIP, L2TPv3
|
||||
ret -= 2;
|
||||
|
||||
// Ethernet
|
||||
ret -= 14;
|
||||
@@ -0,0 +1,68 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
|
||||
|
||||
// Proto_EtherIP.h
|
||||
// Header of Proto_EtherIP.c
|
||||
|
||||
#ifndef PROTO_ETHERIP_H
|
||||
#define PROTO_ETHERIP_H
|
||||
|
||||
//// Macro
|
||||
|
||||
|
||||
//// Constants
|
||||
#define ETHERIP_VPN_CONNECT_RETRY_INTERVAL (15 * 1000) // VPN connection retry interval
|
||||
#define ETHERIP_CLIENT_NAME "EtherIP Client"
|
||||
#define ETHERIP_POSTFIX "ETHERIP"
|
||||
#define ETHERIP_L2TPV3_CLIENT_NAME "L2TPv3 Client"
|
||||
#define ETHERIP_L2TPV3_CLIENT_NAME_EX "L2TPv3 Client - %s"
|
||||
#define ETHERIP_L2TPV3_POSTFIX "L2TPV3"
|
||||
|
||||
//// Type
|
||||
|
||||
// EtherIP server
|
||||
struct ETHERIP_SERVER
|
||||
{
|
||||
REF *Ref;
|
||||
CEDAR *Cedar;
|
||||
IPSEC_SERVER *IPsec;
|
||||
LOCK *Lock;
|
||||
UINT Id;
|
||||
IKE_SERVER *Ike;
|
||||
UINT64 Now; // Current time
|
||||
INTERRUPT_MANAGER *Interrupts; // Interrupt manager
|
||||
SOCK_EVENT *SockEvent; // SockEvent
|
||||
char CryptName[MAX_SIZE]; // Cipher algorithm name
|
||||
LIST *SendPacketList; // Transmission packet list
|
||||
UINT64 LastConnectFailedTick; // Time that it fails to connect at the last
|
||||
IPC *Ipc; // IPC
|
||||
THREAD *IpcConnectThread; // IPC connection thread
|
||||
IPSEC_SERVICES CurrentIPSecServiceSetting; // Copy of the current IPsec service settings
|
||||
IP ClientIP, ServerIP;
|
||||
UINT ClientPort, ServerPort;
|
||||
bool IsTunnelMode; // Whether the IPsec is in the tunnel mode
|
||||
UINT CryptBlockSize; // Encryption block size of IPsec
|
||||
char ClientId[MAX_SIZE]; // Client ID has been presented by the IPsec connection
|
||||
UINT LastEtherIPSettingVerNo; // Version number of EtherIP settings last checked
|
||||
ETHERIP_ID CurrentEtherIPIdSetting; // Current EtherIP ID settings
|
||||
bool L2TPv3; // L2TPv3 mode
|
||||
char VendorName[MAX_SIZE]; // Vendor name
|
||||
};
|
||||
|
||||
|
||||
//// Function prototype
|
||||
ETHERIP_SERVER *NewEtherIPServer(CEDAR *cedar, IPSEC_SERVER *ipsec, IKE_SERVER *ike,
|
||||
IP *client_ip, UINT client_port, IP *server_ip, UINT server_port, char *crypt_name,
|
||||
bool is_tunnel_mode, UINT crypt_block_size,
|
||||
char *client_id, UINT id);
|
||||
void ReleaseEtherIPServer(ETHERIP_SERVER *s);
|
||||
void CleanupEtherIPServer(ETHERIP_SERVER *s);
|
||||
void SetEtherIPServerSockEvent(ETHERIP_SERVER *s, SOCK_EVENT *e);
|
||||
void EtherIPProcInterrupts(ETHERIP_SERVER *s);
|
||||
void EtherIPProcRecvPackets(ETHERIP_SERVER *s, BLOCK *b);
|
||||
void EtherIPIpcConnectThread(THREAD *t, void *p);
|
||||
UINT CalcEtherIPTcpMss(ETHERIP_SERVER *s);
|
||||
|
||||
|
||||
#endif // PROTO_ETHERIP_H
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IKE.c
|
||||
// Proto_IKE.c
|
||||
// IKE (ISAKMP) and ESP protocol stack
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -144,7 +38,10 @@ void ProcIKEPacketRecv(IKE_SERVER *ike, UDPPACKET *p)
|
||||
break;
|
||||
|
||||
case IKE_EXCHANGE_TYPE_AGGRESSIVE: // Aggressive mode
|
||||
ProcIkeAggressiveModePacketRecv(ike, p, header);
|
||||
if (ike->Cedar->Server->DisableIPsecAggressiveMode == false)
|
||||
{
|
||||
ProcIkeAggressiveModePacketRecv(ike, p, header);
|
||||
}
|
||||
break;
|
||||
|
||||
case IKE_EXCHANGE_TYPE_QUICK: // Quick mode
|
||||
@@ -206,7 +103,7 @@ void IPsecSendPacketByIPsecSa(IKE_SERVER *ike, IPSECSA *sa, UCHAR *data, UINT da
|
||||
IPV4_SET_HEADER_LEN(&h, sizeof(IPV4_HEADER) / 4);
|
||||
h.TotalLength = Endian16((USHORT)(data_size + sizeof(IPV4_HEADER)));
|
||||
h.Identification = Endian16(c->TunnelSendIpId++);
|
||||
h.FlagsAndFlagmentOffset[0] = h.FlagsAndFlagmentOffset[1] = 0;
|
||||
h.FlagsAndFragmentOffset[0] = h.FlagsAndFragmentOffset[1] = 0;
|
||||
h.TimeToLive = DEFAULT_IP_TTL;
|
||||
h.Protocol = protocol_id;
|
||||
h.SrcIP = IPToUINT(&c->TunnelModeServerIP);
|
||||
@@ -1662,7 +1559,6 @@ void StartQuickMode(IKE_SERVER *ike, IKE_CLIENT *c)
|
||||
UINT spi;
|
||||
UINT spi_be;
|
||||
UCHAR hash1[IKE_MAX_HASH_SIZE];
|
||||
UCHAR zero = 0;
|
||||
DH_CTX *dh = NULL;
|
||||
UCHAR dummy_hash_data[IKE_MAX_HASH_SIZE];
|
||||
|
||||
@@ -2792,7 +2688,7 @@ IPSECSA *NewIPsecSa(IKE_SERVER *ike, IKE_CLIENT *c, IKE_SA *ike_sa, bool initiat
|
||||
// Set the expiration time
|
||||
if (setting->LifeSeconds != 0)
|
||||
{
|
||||
UINT64 span = (UINT64)(setting->LifeSeconds * 1000) + (UINT64)IKE_SOFT_EXPIRES_MARGIN;
|
||||
const UINT64 span = (UINT64)((UINT64)setting->LifeSeconds * (UINT64)1000) + (UINT64)IKE_SOFT_EXPIRES_MARGIN;
|
||||
sa->ExpiresHardTick = ike->Now + span;
|
||||
sa->ExpiresSoftTick = ike->Now + span;
|
||||
//sa->ExpiresSoftTick = ike->Now + (UINT64)5000;
|
||||
@@ -2839,7 +2735,7 @@ void ProcIkeAggressiveModePacketRecv(IKE_SERVER *ike, UDPPACKET *p, IKE_PACKET *
|
||||
|
||||
if ((caps.NatTraversalDraftIetf || caps.NatTraversalRfc3947) || (IsUdpPortOpened(ike->IPsec->UdpListener, &p->DstIP, IPSEC_PORT_IPSEC_ESP_RAW)))
|
||||
{
|
||||
sa = FindIkeSaByEndPointAndInitiatorCookie(ike, &p->DstIP, p->DestPort, &p->SrcIP, p->SrcPort, header->InitiatorCookie, IKE_SA_AGRESSIVE_MODE);
|
||||
sa = FindIkeSaByEndPointAndInitiatorCookie(ike, &p->DstIP, p->DestPort, &p->SrcIP, p->SrcPort, header->InitiatorCookie, IKE_SA_AGGRESSIVE_MODE);
|
||||
|
||||
if (sa == NULL)
|
||||
{
|
||||
@@ -2894,7 +2790,7 @@ void ProcIkeAggressiveModePacketRecv(IKE_SERVER *ike, UDPPACKET *p, IKE_PACKET *
|
||||
IKE_PACKET_PAYLOAD *your_nat_d_2 = NULL;
|
||||
|
||||
// Create an IKE SA
|
||||
sa = NewIkeSa(ike, c, header->InitiatorCookie, IKE_SA_AGRESSIVE_MODE, &setting);
|
||||
sa = NewIkeSa(ike, c, header->InitiatorCookie, IKE_SA_AGGRESSIVE_MODE, &setting);
|
||||
Copy(&sa->Caps, &caps, sizeof(IKE_CAPS));
|
||||
sa->State= IKE_SA_AM_STATE_1_SA;
|
||||
Insert(ike->IkeSaList, sa);
|
||||
@@ -3118,7 +3014,7 @@ void ProcIkeAggressiveModePacketRecv(IKE_SERVER *ike, UDPPACKET *p, IKE_PACKET *
|
||||
header->ResponderCookie), true, header->InitiatorCookie, header->ResponderCookie);
|
||||
}
|
||||
|
||||
if (sa != NULL && sa->Mode == IKE_SA_AGRESSIVE_MODE)
|
||||
if (sa != NULL && sa->Mode == IKE_SA_AGGRESSIVE_MODE)
|
||||
{
|
||||
IKE_PACKET *pr = NULL;
|
||||
|
||||
@@ -3842,6 +3738,10 @@ bool IkeIsVendorIdExists(IKE_PACKET *p, char *str)
|
||||
for (i = 0;i < num;i++)
|
||||
{
|
||||
IKE_PACKET_PAYLOAD *payload = IkeGetPayload(p->PayloadList, IKE_PAYLOAD_VENDOR_ID, i);
|
||||
if (payload == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (CompareBuf(payload->Payload.VendorId.Data, buf))
|
||||
{
|
||||
@@ -3934,7 +3834,7 @@ BUF *IkeStrToVendorId(char *str)
|
||||
BUF *buf;
|
||||
UCHAR hash[MD5_SIZE];
|
||||
|
||||
Hash(hash, str, StrLen(str), false);
|
||||
Md5(hash, str, StrLen(str));
|
||||
|
||||
buf = MemToBuf(hash, sizeof(hash));
|
||||
|
||||
@@ -4325,7 +4225,7 @@ IKE_CLIENT *SearchOrCreateNewIkeClientForIkePacket(IKE_SERVER *ike, IP *client_i
|
||||
{
|
||||
IKE_CLIENT *c;
|
||||
// Validate arguments
|
||||
if (ike == NULL || pr == NULL || client_ip == NULL || server_ip == NULL || client_port == 0 || server_port == 0 || pr == NULL)
|
||||
if (ike == NULL || pr == NULL || client_ip == NULL || server_ip == NULL || client_port == 0 || server_port == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -5757,7 +5657,7 @@ void ProcessIKEInterrupts(IKE_SERVER *ike)
|
||||
while (ike->StateHasChanged);
|
||||
|
||||
// Maintenance of the thread list
|
||||
MainteThreadList(ike->ThreadList);
|
||||
MaintainThreadList(ike->ThreadList);
|
||||
/*Debug("ike->ThreadList: %u\n", LIST_NUM(ike->ThreadList));
|
||||
{
|
||||
UINT i;
|
||||
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IKE.h
|
||||
// Header of IPsec_IKE.c
|
||||
// Proto_IKE.h
|
||||
// Header of Proto_IKE.c
|
||||
|
||||
#ifndef IPSEC_IKE_H
|
||||
#define IPSEC_IKE_H
|
||||
#ifndef PROTO_IKE_H
|
||||
#define PROTO_IKE_H
|
||||
|
||||
//// Macro
|
||||
|
||||
@@ -120,7 +14,7 @@
|
||||
|
||||
// State
|
||||
#define IKE_SA_MAIN_MODE 0 // Main mode
|
||||
#define IKE_SA_AGRESSIVE_MODE 1 // Aggressive mode
|
||||
#define IKE_SA_AGGRESSIVE_MODE 1 // Aggressive mode
|
||||
|
||||
#define IKE_SA_MM_STATE_1_SA 0 // Main mode state 1 (SA exchange is complete. Wait for key exchange)
|
||||
#define IKE_SA_MM_STATE_2_KEY 1 // Main mode state 2 (Key exchange is complete. Wait for exchange ID)
|
||||
@@ -472,5 +366,5 @@ void ProcL2TPv3PacketRecv(IKE_SERVER *ike, IKE_CLIENT *c, UCHAR *data, UINT data
|
||||
|
||||
IKE_SA *SearchIkeSaByCookie(IKE_SERVER *ike, UINT64 init_cookie, UINT64 resp_cookie);
|
||||
|
||||
#endif // IPSEC_IKE_H
|
||||
#endif // PROTO_IKE_H
|
||||
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec.c
|
||||
// Proto_IPsec.c
|
||||
// IPsec module
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -116,13 +10,6 @@
|
||||
|
||||
static bool ipsec_disable = false;
|
||||
|
||||
// Disabling whole IPsec
|
||||
void IPSecSetDisable(bool b)
|
||||
{
|
||||
ipsec_disable = b;
|
||||
}
|
||||
|
||||
|
||||
// Monitor the IPsec service of the OS, and stop it if it will conflict
|
||||
void IPsecOsServiceCheckThread(THREAD *t, void *p)
|
||||
{
|
||||
@@ -0,0 +1,98 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
|
||||
|
||||
// Proto_IPsec.h
|
||||
// Header of Proto_IPsec.c
|
||||
|
||||
#ifndef PROTO_IPSEC_H
|
||||
#define PROTO_IPSEC_H
|
||||
|
||||
//// Constants
|
||||
|
||||
// UDP port number
|
||||
#define IPSEC_PORT_L2TP 1701 // L2TP
|
||||
#define IPSEC_PORT_IPSEC_ISAKMP 500 // ISAKMP
|
||||
#define IPSEC_PORT_IPSEC_ESP_UDP 4500 // IPsec ESP over UDP
|
||||
#define IPSEC_PORT_IPSEC_ESP_RAW MAKE_SPECIAL_PORT(50) // Raw mode ESP Protocol No: 50
|
||||
#define IPSEC_PORT_IPSEC_ESP_RAW_WPF MAKE_SPECIAL_PORT(52) // Raw mode ESP Protocol No: 52 (WPF)
|
||||
#define IPSEC_PORT_L2TPV3_VIRTUAL 1000001 // L2TPv3 virtual port
|
||||
|
||||
// IP protocol number
|
||||
#define IPSEC_IP_PROTO_ETHERIP IP_PROTO_ETHERIP // EtherIP
|
||||
#define IPSEC_IP_PROTO_L2TPV3 IP_PROTO_L2TPV3 // L2TPv3
|
||||
|
||||
// WFP tag
|
||||
#define WFP_ESP_PACKET_TAG_1 0x19841117
|
||||
#define WFP_ESP_PACKET_TAG_2 0x1accafe1
|
||||
|
||||
// Monitoring interval of OS service
|
||||
#define IPSEC_CHECK_OS_SERVICE_INTERVAL_INITIAL 1024
|
||||
#define IPSEC_CHECK_OS_SERVICE_INTERVAL_MAX (5 * 60 * 1000)
|
||||
|
||||
// Default IPsec pre-shared key
|
||||
#define IPSEC_DEFAULT_SECRET "vpn"
|
||||
|
||||
|
||||
//// Type
|
||||
|
||||
// List of services provided by IPsec server
|
||||
struct IPSEC_SERVICES
|
||||
{
|
||||
bool L2TP_Raw; // Raw L2TP
|
||||
bool L2TP_IPsec; // L2TP over IPsec
|
||||
bool EtherIP_IPsec; // EtherIP over IPsec
|
||||
|
||||
char IPsec_Secret[MAX_SIZE]; // IPsec pre-shared key
|
||||
char L2TP_DefaultHub[MAX_SIZE]; // Default Virtual HUB name for L2TP connection
|
||||
};
|
||||
|
||||
// EtherIP key list entry
|
||||
struct ETHERIP_ID
|
||||
{
|
||||
char Id[MAX_SIZE]; // ID
|
||||
char HubName[MAX_HUBNAME_LEN + 1]; // Virtual HUB name
|
||||
char UserName[MAX_USERNAME_LEN + 1]; // User name
|
||||
char Password[MAX_USERNAME_LEN + 1]; // Password
|
||||
};
|
||||
|
||||
// IPsec server
|
||||
struct IPSEC_SERVER
|
||||
{
|
||||
CEDAR *Cedar;
|
||||
UDPLISTENER *UdpListener;
|
||||
bool Halt;
|
||||
bool NoMoreChangeSettings;
|
||||
LOCK *LockSettings;
|
||||
IPSEC_SERVICES Services;
|
||||
L2TP_SERVER *L2TP; // L2TP server
|
||||
IKE_SERVER *Ike; // IKE server
|
||||
LIST *EtherIPIdList; // EtherIP setting list
|
||||
UINT EtherIPIdListSettingVerNo; // EtherIP setting list version number
|
||||
THREAD *OsServiceCheckThread; // OS Service monitoring thread
|
||||
EVENT *OsServiceCheckThreadEvent; // Event for OS Service monitoring thread
|
||||
IPSEC_WIN7 *Win7; // Helper module for Windows Vista / 7
|
||||
bool Check_LastEnabledStatus;
|
||||
bool HostIPAddressListChanged;
|
||||
bool OsServiceStoped;
|
||||
};
|
||||
|
||||
|
||||
//// Function prototype
|
||||
IPSEC_SERVER *NewIPsecServer(CEDAR *cedar);
|
||||
void FreeIPsecServer(IPSEC_SERVER *s);
|
||||
void IPsecServerUdpPacketRecvProc(UDPLISTENER *u, LIST *packet_list);
|
||||
void IPsecServerSetServices(IPSEC_SERVER *s, IPSEC_SERVICES *sl);
|
||||
void IPsecNormalizeServiceSetting(IPSEC_SERVER *s);
|
||||
void IPsecServerGetServices(IPSEC_SERVER *s, IPSEC_SERVICES *sl);
|
||||
void IPsecProcPacket(IPSEC_SERVER *s, UDPPACKET *p);
|
||||
int CmpEtherIPId(void *p1, void *p2);
|
||||
bool SearchEtherIPId(IPSEC_SERVER *s, ETHERIP_ID *id, char *id_str);
|
||||
void AddEtherIPId(IPSEC_SERVER *s, ETHERIP_ID *id);
|
||||
bool DeleteEtherIPId(IPSEC_SERVER *s, char *id_str);
|
||||
void IPsecOsServiceCheckThread(THREAD *t, void *p);
|
||||
bool IPsecCheckOsService(IPSEC_SERVER *s);
|
||||
|
||||
|
||||
#endif // PROTO_IPSEC_H
|
||||
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IkePacket.c
|
||||
// Proto_IkePacket.c
|
||||
// IKE (ISAKMP) packet processing
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -138,86 +32,6 @@ BUF *IkeStrToPassword(char *str)
|
||||
return b;
|
||||
}
|
||||
|
||||
// Phase 1: Convert the encryption algorithm name to key size
|
||||
UINT IkePhase1CryptIdToKeySize(UCHAR id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case IKE_P1_CRYPTO_3DES_CBC:
|
||||
return DES3_KEY_SIZE;
|
||||
|
||||
case IKE_P1_CRYPTO_DES_CBC:
|
||||
return DES_KEY_SIZE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Phase 2: Convert the encryption algorithm name to key size
|
||||
UINT IkePhase2CryptIdToKeySize(UCHAR id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case IKE_TRANSFORM_ID_P2_ESP_3DES:
|
||||
return DES3_KEY_SIZE;
|
||||
|
||||
case IKE_TRANSFORM_ID_P2_ESP_DES:
|
||||
return DES_KEY_SIZE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Convert a string to an algorithm name
|
||||
UCHAR IkeStrToPhase1CryptId(char *name)
|
||||
{
|
||||
if (StartWith(name, "3DES") || StartWith("3DES", name))
|
||||
{
|
||||
return IKE_P1_CRYPTO_3DES_CBC;
|
||||
}
|
||||
else if (StartWith(name, "DES") || StartWith("DES", name))
|
||||
{
|
||||
return IKE_P1_CRYPTO_DES_CBC;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
UCHAR IkeStrToPhase1HashId(char *name)
|
||||
{
|
||||
if (StartWith(name, "SHA-1") || StartWith("SHA-1", name))
|
||||
{
|
||||
return IKE_P1_HASH_SHA1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
UCHAR IkeStrToPhase2CryptId(char *name)
|
||||
{
|
||||
if (StartWith(name, "3DES") || StartWith("3DES", name))
|
||||
{
|
||||
return IKE_TRANSFORM_ID_P2_ESP_3DES;
|
||||
}
|
||||
else if (StartWith(name, "DES") || StartWith("DES", name))
|
||||
{
|
||||
return IKE_TRANSFORM_ID_P2_ESP_DES;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
UCHAR IkeStrToPhase2HashId(char *name)
|
||||
{
|
||||
if (StartWith(name, "SHA-1") || StartWith("SHA-1", name))
|
||||
{
|
||||
return IKE_P2_HMAC_SHA1_96;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Build a data payload
|
||||
BUF *IkeBuildDataPayload(IKE_PACKET_DATA_PAYLOAD *t)
|
||||
{
|
||||
@@ -871,23 +685,6 @@ IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidCookiePayload(UINT64 init_cookie, UI
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Create an Invalid Exchange Type Payload
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidExchangeTypePayload(UINT64 init_cookie, UINT64 resp_cookie, UCHAR exchange_type)
|
||||
{
|
||||
IKE_PACKET_PAYLOAD *ret;
|
||||
BUF *b = NewBuf();
|
||||
|
||||
WriteBufInt64(b, init_cookie);
|
||||
WriteBufInt64(b, resp_cookie);
|
||||
|
||||
ret = IkeNewNoticePayload(IKE_PROTOCOL_ID_IKE, IKE_NOTICE_ERROR_INVALID_EXCHANGE_TYPE, b->Buf, b->Size,
|
||||
&exchange_type, 1);
|
||||
|
||||
FreeBuf(b);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Create an Invalid SPI payload
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidSpiPayload(UINT spi)
|
||||
{
|
||||
@@ -938,38 +735,6 @@ IKE_PACKET_PAYLOAD *IkeNewNoticeDpdPayload(bool ack, UINT64 init_cookie, UINT64
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Create a Certificate Request Payload
|
||||
IKE_PACKET_PAYLOAD *IkeNewCertRequestPayload(UCHAR cert_type, void *data, UINT size)
|
||||
{
|
||||
IKE_PACKET_PAYLOAD *p;
|
||||
if (data == NULL && size != 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p = IkeNewPayload(IKE_PAYLOAD_CERT_REQUEST);
|
||||
p->Payload.CertRequest.CertType = cert_type;
|
||||
p->Payload.CertRequest.Data = MemToBuf(data, size);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
// Create a Certificate payload
|
||||
IKE_PACKET_PAYLOAD *IkeNewCertPayload(UCHAR cert_type, void *cert_data, UINT cert_size)
|
||||
{
|
||||
IKE_PACKET_PAYLOAD *p;
|
||||
if (cert_data == NULL && cert_size != 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p = IkeNewPayload(IKE_PAYLOAD_CERT);
|
||||
p->Payload.Cert.CertType = cert_type;
|
||||
p->Payload.Cert.CertData = MemToBuf(cert_data, cert_size);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
// Create an ID payload
|
||||
IKE_PACKET_PAYLOAD *IkeNewIdPayload(UCHAR id_type, UCHAR protocol_id, USHORT port, void *id_data, UINT id_size)
|
||||
{
|
||||
@@ -2292,12 +2057,7 @@ void IkeDebugUdpSendRawPacket(IKE_PACKET *p)
|
||||
|
||||
p->FlagEncrypted = false;
|
||||
|
||||
b = NULL;
|
||||
|
||||
if (b == NULL)
|
||||
{
|
||||
b = IkeBuildEx(p, NULL, true);
|
||||
}
|
||||
b = IkeBuildEx(p, NULL, true);
|
||||
|
||||
if (b == NULL)
|
||||
{
|
||||
@@ -2538,21 +2298,6 @@ IKE_PACKET *IkeNew(UINT64 init_cookie, UINT64 resp_cookie, UCHAR exchange_type,
|
||||
return p;
|
||||
}
|
||||
|
||||
// Create a new SPI value
|
||||
UINT IkeNewSpi()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
UINT i = Rand32();
|
||||
|
||||
if (i >= 4096)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Create an encryption engine for IKE
|
||||
IKE_ENGINE *NewIkeEngine()
|
||||
{
|
||||
@@ -2963,108 +2708,48 @@ void IkeHash(IKE_HASH *h, void *dst, void *src, UINT size)
|
||||
// Calculation of HMAC
|
||||
void IkeHMac(IKE_HASH *h, void *dst, void *key, UINT key_size, void *data, UINT data_size)
|
||||
{
|
||||
UINT hmac_block_size = HMAC_BLOCK_SIZE;
|
||||
UCHAR k[HMAC_BLOCK_SIZE_MAX];
|
||||
UCHAR *data1;
|
||||
UCHAR hash1[IKE_MAX_HASH_SIZE];
|
||||
UINT data1_size;
|
||||
UCHAR data2[IKE_MAX_HASH_SIZE + HMAC_BLOCK_SIZE_MAX];
|
||||
UINT data2_size;
|
||||
UCHAR tmp1600[1600];
|
||||
bool no_free = false;
|
||||
UINT i;
|
||||
// Validate arguments
|
||||
if (h == NULL || dst == NULL || (key == NULL && key_size != 0) || (data == NULL && data_size != 0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
MD *md = NULL;
|
||||
|
||||
switch (h->HashId)
|
||||
{
|
||||
case IKE_HASH_SHA1_ID:
|
||||
case IKE_HASH_SHA2_256_ID:
|
||||
hmac_block_size = HMAC_BLOCK_SIZE;
|
||||
break;
|
||||
|
||||
case IKE_HASH_SHA2_384_ID:
|
||||
case IKE_HASH_SHA2_512_ID:
|
||||
hmac_block_size = HMAC_BLOCK_SIZE_1024;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
case IKE_HASH_MD5_ID:
|
||||
md = NewMd("MD5");
|
||||
break;
|
||||
case IKE_HASH_SHA1_ID:
|
||||
md = NewMd("SHA1");
|
||||
break;
|
||||
case IKE_HASH_SHA2_256_ID:
|
||||
md = NewMd("SHA256");
|
||||
break;
|
||||
case IKE_HASH_SHA2_384_ID:
|
||||
md = NewMd("SHA384");
|
||||
break;
|
||||
case IKE_HASH_SHA2_512_ID:
|
||||
md = NewMd("SHA512");
|
||||
break;
|
||||
}
|
||||
|
||||
if (hmac_block_size > HMAC_BLOCK_SIZE_MAX)
|
||||
if (md == NULL)
|
||||
{
|
||||
Debug("IkeHMac(): The MD object is NULL! Either NewMd() failed or the current algorithm is not handled by the switch-case block.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (h->HashId == IKE_HASH_SHA1_ID)
|
||||
if (SetMdKey(md, key, key_size) == false)
|
||||
{
|
||||
// Use special function (fast) in the case of SHA-1
|
||||
HMacSha1(dst, key, key_size, data, data_size);
|
||||
return;
|
||||
}
|
||||
else if (h->HashId == IKE_HASH_MD5_ID)
|
||||
{
|
||||
// Use the special function (fast) in the case of MD5
|
||||
HMacMd5(dst, key, key_size, data, data_size);
|
||||
return;
|
||||
Debug("IkeHMac(): SetMdKey() failed!\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// Creating a K
|
||||
Zero(k, sizeof(k));
|
||||
if (key_size <= hmac_block_size)
|
||||
if (MdProcess(md, dst, data, data_size) == 0)
|
||||
{
|
||||
Copy(k, key, key_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
IkeHash(h, k, key, key_size);
|
||||
Debug("IkeHMac(): MdProcess() returned 0!\n");
|
||||
}
|
||||
|
||||
// Generation of data 1
|
||||
data1_size = data_size + hmac_block_size;
|
||||
|
||||
if (data1_size > sizeof(tmp1600))
|
||||
{
|
||||
data1 = Malloc(data1_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
data1 = tmp1600;
|
||||
no_free = true;
|
||||
}
|
||||
|
||||
for (i = 0;i < hmac_block_size;i++)
|
||||
{
|
||||
data1[i] = k[i] ^ 0x36;
|
||||
}
|
||||
|
||||
Copy(data1 + hmac_block_size, data, data_size);
|
||||
|
||||
// Calculate the hash value
|
||||
IkeHash(h, hash1, data1, data1_size);
|
||||
|
||||
if (no_free == false)
|
||||
{
|
||||
Free(data1);
|
||||
}
|
||||
|
||||
// Generation of data 2
|
||||
data2_size = h->HashSize + hmac_block_size;
|
||||
|
||||
for (i = 0;i < hmac_block_size;i++)
|
||||
{
|
||||
data2[i] = k[i] ^ 0x5c;
|
||||
}
|
||||
|
||||
Copy(data2 + hmac_block_size, hash1, h->HashSize);
|
||||
|
||||
// Calculate the hash value
|
||||
IkeHash(h, dst, data2, data2_size);
|
||||
cleanup:
|
||||
FreeMd(md);
|
||||
}
|
||||
|
||||
void IkeHMacBuf(IKE_HASH *h, void *dst, BUF *key, BUF *data)
|
||||
{
|
||||
// Validate arguments
|
||||
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_IkePacket.h
|
||||
// Header of IPsec_IkePacket.c
|
||||
// Proto_IkePacket.h
|
||||
// Header of Proto_IkePacket.c
|
||||
|
||||
#ifndef IPSEC_PACKET_H
|
||||
#define IPSEC_PACKET_H
|
||||
#ifndef PROTO_IKEPACKET_H
|
||||
#define PROTO_IKEPACKET_H
|
||||
|
||||
// Constants
|
||||
#ifdef OS_WIN32
|
||||
@@ -698,15 +592,12 @@ IKE_PACKET_PAYLOAD *IkeNewProposalPayload(UCHAR number, UCHAR protocol_id, void
|
||||
IKE_PACKET_PAYLOAD *IkeNewTransformPayload(UCHAR number, UCHAR transform_id, LIST *value_list);
|
||||
IKE_PACKET_TRANSFORM_VALUE *IkeNewTransformValue(UCHAR type, UINT value);
|
||||
IKE_PACKET_PAYLOAD *IkeNewIdPayload(UCHAR id_type, UCHAR protocol_id, USHORT port, void *id_data, UINT id_size);
|
||||
IKE_PACKET_PAYLOAD *IkeNewCertPayload(UCHAR cert_type, void *cert_data, UINT cert_size);
|
||||
IKE_PACKET_PAYLOAD *IkeNewCertRequestPayload(UCHAR cert_type, void *data, UINT size);
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticePayload(UCHAR protocol_id, USHORT message_type,
|
||||
void *spi, UINT spi_size,
|
||||
void *message, UINT message_size);
|
||||
IKE_PACKET_PAYLOAD *IkeNewDeletePayload(UCHAR protocol_id, LIST *spi_list);
|
||||
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidCookiePayload(UINT64 init_cookie, UINT64 resp_cookie);
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidExchangeTypePayload(UINT64 init_cookie, UINT64 resp_cookie, UCHAR exchange_type);
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorInvalidSpiPayload(UINT spi);
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeErrorNoProposalChosenPayload(bool quick_mode, UINT64 init_cookie, UINT64 resp_cookie);
|
||||
IKE_PACKET_PAYLOAD *IkeNewNoticeDpdPayload(bool ack, UINT64 init_cookie, UINT64 resp_cookie, UINT seq_no);
|
||||
@@ -732,15 +623,7 @@ BUF *IkeBuildTransformPayload(IKE_PACKET_TRANSFORM_PAYLOAD *t);
|
||||
UINT IkeGetTransformValue(IKE_PACKET_TRANSFORM_PAYLOAD *t, UINT type, UINT index);
|
||||
UINT IkeGetTransformValueNum(IKE_PACKET_TRANSFORM_PAYLOAD *t, UINT type);
|
||||
|
||||
UCHAR IkeStrToPhase1CryptId(char *name);
|
||||
UCHAR IkeStrToPhase1HashId(char *name);
|
||||
UCHAR IkeStrToPhase2CryptId(char *name);
|
||||
UCHAR IkeStrToPhase2HashId(char *name);
|
||||
BUF *IkeStrToPassword(char *str);
|
||||
UINT IkePhase1CryptIdToKeySize(UCHAR id);
|
||||
UINT IkePhase2CryptIdToKeySize(UCHAR id);
|
||||
|
||||
UINT IkeNewSpi();
|
||||
|
||||
IKE_ENGINE *NewIkeEngine();
|
||||
IKE_CRYPTO *NewIkeCrypto(IKE_ENGINE *e, UINT crypto_id, char *name, UINT *key_sizes, UINT num_key_sizes, UINT block_size);
|
||||
@@ -768,6 +651,4 @@ DH_CTX *IkeDhNewCtx(IKE_DH *d);
|
||||
void IkeDhFreeCtx(DH_CTX *dh);
|
||||
|
||||
|
||||
#endif // IPSEC_PACKET_H
|
||||
|
||||
|
||||
#endif // PROTO_IKEPACKET_H
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_L2TP.c
|
||||
// Proto_L2TP.c
|
||||
// L2TP protocol stack
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -2562,7 +2456,7 @@ void L2TPProcessInterrupts(L2TP_SERVER *l2tp)
|
||||
// Maintenance the thread list
|
||||
if (l2tp->IkeServer == NULL)
|
||||
{
|
||||
MainteThreadList(l2tp->ThreadList);
|
||||
MaintainThreadList(l2tp->ThreadList);
|
||||
//Debug("l2tp->ThreadList: %u\n", LIST_NUM(l2tp->ThreadList));
|
||||
}
|
||||
}
|
||||
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_L2TP.h
|
||||
// Header of IPsec_L2TP.c
|
||||
// Proto_L2TP.h
|
||||
// Header of Proto_L2TP.c
|
||||
|
||||
#ifndef IPSEC_L2TP_H
|
||||
#define IPSEC_L2TP_H
|
||||
#ifndef PROTO_L2TP_H
|
||||
#define PROTO_L2TP_H
|
||||
|
||||
//// Macro
|
||||
|
||||
@@ -378,6 +272,4 @@ UINT GenerateNewSessionIdForL2TPv3(L2TP_SERVER *l2tp);
|
||||
L2TP_SESSION *SearchL2TPSessionById(L2TP_SERVER *l2tp, bool is_v3, UINT id);
|
||||
void L2TPSessionManageEtherIPServer(L2TP_SERVER *l2tp, L2TP_SESSION *s);
|
||||
|
||||
#endif // IPSEC_L2TP_H
|
||||
|
||||
|
||||
#endif // PROTO_L2TP_H
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Interop_OpenVPN.h
|
||||
// Header of Interop_OpenVPN.c
|
||||
// Proto_OpenVPN.h
|
||||
// Header of Proto_OpenVPN.c
|
||||
|
||||
#ifndef INTEROP_OPENVPN_H
|
||||
#define INTEROP_OPENVPN_H
|
||||
#ifndef PROTO_OPENVPN_H
|
||||
#define PROTO_OPENVPN_H
|
||||
|
||||
|
||||
//// Constants
|
||||
@@ -127,6 +21,7 @@
|
||||
#define OPENVPN_MAX_SSL_RECV_BUF_SIZE (256 * 1024) // SSL receive buffer maximum length
|
||||
|
||||
#define OPENVPN_MAX_KEY_SIZE 64 // Maximum key size
|
||||
#define OPENVPN_TAG_SIZE 16 // Tag size (for packet authentication in AEAD mode)
|
||||
|
||||
#define OPENVPN_TMP_BUFFER_SIZE (65536 + 256) // Temporary buffer size
|
||||
|
||||
@@ -151,12 +46,6 @@
|
||||
#define OPENVPN_IPC_POSTFIX_L2 "OPENVPN_L2"
|
||||
#define OPENVPN_IPC_POSTFIX_L3 "OPENVPN_L3"
|
||||
|
||||
// List of supported encryption algorithms
|
||||
#define OPENVPN_CIPHER_LIST "[NULL-CIPHER] NULL AES-128-CBC AES-192-CBC AES-256-CBC BF-CBC CAST-CBC CAST5-CBC DES-CBC DES-EDE-CBC DES-EDE3-CBC DESX-CBC RC2-40-CBC RC2-64-CBC RC2-CBC CAMELLIA-128-CBC CAMELLIA-192-CBC CAMELLIA-256-CBC"
|
||||
|
||||
// List of the supported hash algorithm
|
||||
#define OPENVPN_MD_LIST "SHA SHA1 SHA256 SHA384 SHA512 MD5 MD4 RMD160"
|
||||
|
||||
// MTU
|
||||
#define OPENVPN_MTU_LINK 1514 // Ethernet MTU
|
||||
#define OPENVPN_MTU_TUN 1500 // Tun MTU
|
||||
@@ -190,6 +79,12 @@
|
||||
#define OPENVPN_MODE_L2 1 // TAP (Ethernet)
|
||||
#define OPENVPN_MODE_L3 2 // TUN (IP)
|
||||
|
||||
// Scramble mode
|
||||
#define OPENVPN_SCRAMBLE_MODE_DISABLED 0 // No scramble
|
||||
#define OPENVPN_SCRAMBLE_MODE_XORMASK 1 // XOR the bytes with the specified string
|
||||
#define OPENVPN_SCRAMBLE_MODE_XORPTRPOS 2 // XOR each byte with its position in the buffer
|
||||
#define OPENVPN_SCRAMBLE_MODE_REVERSE 3 // Reverses bytes order, keeping the first byte unchanged
|
||||
#define OPENVPN_SCRAMBLE_MODE_OBFUSCATE 4 // Performs the above steps using the specified string for xormask
|
||||
|
||||
//// Type
|
||||
|
||||
@@ -213,6 +108,8 @@ struct OPENVPN_CONTROL_PACKET
|
||||
UINT DataSize; // Data size
|
||||
UCHAR *Data; // Data body
|
||||
UINT64 NextSendTime; // Scheduled next transmission time
|
||||
bool NoResend; // Disable re-sending
|
||||
UINT NumSent; // How many times we have sent this packet
|
||||
};
|
||||
|
||||
// OpenVPN packet
|
||||
@@ -247,9 +144,10 @@ struct OPENVPN_CHANNEL
|
||||
CIPHER *CipherDecrypt; // Decryption algorithm
|
||||
MD *MdSend; // Transmission MD algorithm
|
||||
MD *MdRecv; // Reception MD algorithm
|
||||
UCHAR IvSend[64]; // Transmission IV
|
||||
UCHAR IvRecv[64]; // Reception IV
|
||||
UCHAR MasterSecret[48]; // Master Secret
|
||||
UCHAR ExpansionKey[256]; // Expansion Key
|
||||
UCHAR NextIv[64]; // Next IV
|
||||
UINT LastDataPacketId; // Previous Data Packet ID
|
||||
UINT64 EstablishedTick; // Established time
|
||||
UCHAR KeyId; // KEY ID
|
||||
@@ -257,6 +155,7 @@ struct OPENVPN_CHANNEL
|
||||
bool IsInitiatorServer; // Whether the channel was started from the server side
|
||||
bool RekeyInitiated; // Whether re-keying has already started
|
||||
UINT64 NextRekey;
|
||||
struct SslClientCertInfo ClientCert; // Client certificate and verification data
|
||||
};
|
||||
|
||||
// OpenVPN session
|
||||
@@ -274,6 +173,7 @@ struct OPENVPN_SESSION
|
||||
OPENVPN_CHANNEL *Channels[OPENVPN_NUM_CHANNELS]; // Channels (up to 8)
|
||||
UINT LastCreatedChannelIndex; // Channel number that is created in the last
|
||||
UINT Mode; // Mode (L3 or L2)
|
||||
UINT ObfuscationMode; // Packet obfuscation/scrambling mode
|
||||
UINT LinkMtu; // link-mtu
|
||||
UINT TunMtu; // tun-mtu
|
||||
IPC_ASYNC *IpcAsync; // Asynchronous IPC connection
|
||||
@@ -290,6 +190,7 @@ struct OPENVPN_SERVER
|
||||
{
|
||||
CEDAR *Cedar;
|
||||
INTERRUPT_MANAGER *Interrupt; // Interrupt manager
|
||||
LIST *RecvPacketList; // Received packets list
|
||||
LIST *SendPacketList; // Transmission packet list
|
||||
LIST *SessionList; // Session list
|
||||
UINT64 Now; // Current time
|
||||
@@ -314,8 +215,18 @@ struct OPENVPN_SERVER_UDP
|
||||
// OpenVPN Default Client Option String
|
||||
#define OVPN_DEF_CLIENT_OPTION_STRING "dev-type tun,link-mtu 1500,tun-mtu 1500,cipher AES-128-CBC,auth SHA1,keysize 128,key-method 2,tls-client"
|
||||
|
||||
|
||||
//// Function prototype
|
||||
PROTO_IMPL *OvsGetProtoImpl();
|
||||
bool OvsInit(void **param, CEDAR *cedar, INTERRUPT_MANAGER *im, SOCK_EVENT *se);
|
||||
void OvsFree(void *param);
|
||||
char *OvsName();
|
||||
UINT OvsSupportedModes();
|
||||
bool OvsIsPacketForMe(const UCHAR *buf, const UINT size);
|
||||
bool OvsProcessData(void *param, TCP_RAW_DATA *received_data, FIFO *data_to_send);
|
||||
void OvsBufferLimit(void *param, const bool reached);
|
||||
bool OvsIsOk(void *param);
|
||||
UINT OvsEstablishedSessions(void *param);
|
||||
|
||||
OPENVPN_SERVER_UDP *NewOpenVpnServerUdp(CEDAR *cedar);
|
||||
void FreeOpenVpnServerUdp(OPENVPN_SERVER_UDP *u);
|
||||
void OpenVpnServerUdpListenerProc(UDPLISTENER *u, LIST *packet_list);
|
||||
@@ -323,8 +234,8 @@ void OvsApplyUdpPortList(OPENVPN_SERVER_UDP *u, char *port_list, IP *listen_ip);
|
||||
|
||||
OPENVPN_SERVER *NewOpenVpnServer(CEDAR *cedar, INTERRUPT_MANAGER *interrupt, SOCK_EVENT *sock_event);
|
||||
void FreeOpenVpnServer(OPENVPN_SERVER *s);
|
||||
void OvsRecvPacket(OPENVPN_SERVER *s, LIST *recv_packet_list, UINT protocol);
|
||||
void OvsProceccRecvPacket(OPENVPN_SERVER *s, UDPPACKET *p, UINT protocol);
|
||||
void OvsRecvPacket(OPENVPN_SERVER *s, LIST *recv_packet_list);
|
||||
void OvsProceccRecvPacket(OPENVPN_SERVER *s, UDPPACKET *p);
|
||||
int OvsCompareSessionList(void *p1, void *p2);
|
||||
OPENVPN_SESSION *OvsSearchSession(OPENVPN_SERVER *s, IP *server_ip, UINT server_port, IP *client_ip, UINT client_port, UINT protocol);
|
||||
OPENVPN_SESSION *OvsNewSession(OPENVPN_SERVER *s, IP *server_ip, UINT server_port, IP *client_ip, UINT client_port, UINT protocol);
|
||||
@@ -351,6 +262,7 @@ void OvsSendPacketRawNow(OPENVPN_SERVER *s, OPENVPN_SESSION *se, void *data, UIN
|
||||
|
||||
void OvsProcessRecvControlPacket(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_CHANNEL *c, OPENVPN_PACKET *p);
|
||||
void OvsSendControlPacket(OPENVPN_CHANNEL *c, UCHAR opcode, UCHAR *data, UINT data_size);
|
||||
void OvsSendControlPacketEx(OPENVPN_CHANNEL *c, UCHAR opcode, UCHAR *data, UINT data_size, bool no_resend);
|
||||
void OvsSendControlPacketWithAutoSplit(OPENVPN_CHANNEL *c, UCHAR opcode, UCHAR *data, UINT data_size);
|
||||
void OvsFreeControlPacket(OPENVPN_CONTROL_PACKET *p);
|
||||
void OvsDeleteFromSendingControlPacketList(OPENVPN_CHANNEL *c, UINT num_acks, UINT *acks);
|
||||
@@ -360,34 +272,13 @@ void OvsSetupSessionParameters(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_C
|
||||
BUF *OvsBuildKeyMethod2(OPENVPN_KEY_METHOD_2 *d);
|
||||
void OvsWriteStringToBuf(BUF *b, char *str, UINT max_size);
|
||||
|
||||
LIST *OvsParseOptions(char *str);
|
||||
void OvsFreeOptions(LIST *o);
|
||||
LIST *OvsNewOptions();
|
||||
void OvsAddOption(LIST *o, char *key, char *value);
|
||||
bool OvsHasOption(LIST *o, char *key);
|
||||
UINT OvsPeekStringFromFifo(FIFO *f, char *str, UINT str_size);
|
||||
void OvsBeginIPCAsyncConnectionIfEmpty(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_CHANNEL *c);
|
||||
bool OvsIsCompatibleL3IP(UINT ip);
|
||||
UINT OvsGetCompatibleL3IPNext(UINT ip);
|
||||
UINT OvsCalcTcpMss(OPENVPN_SERVER *s, OPENVPN_SESSION *se, OPENVPN_CHANNEL *c);
|
||||
|
||||
CIPHER *OvsGetCipher(char *name);
|
||||
MD *OvsGetMd(char *name);
|
||||
bool OvsCheckTcpRecvBufIfOpenVPNProtocol(UCHAR *buf, UINT size);
|
||||
|
||||
bool OvsPerformTcpServer(CEDAR *cedar, SOCK *sock);
|
||||
|
||||
void OvsSetReplyForVgsPollEnable(bool b);
|
||||
|
||||
void OvsSetNoOpenVpnTcp(bool b);
|
||||
bool OvsGetNoOpenVpnTcp();
|
||||
|
||||
void OvsSetNoOpenVpnUdp(bool b);
|
||||
|
||||
void OpenVpnServerUdpSetDhParam(OPENVPN_SERVER_UDP *u, DH_CTX *dh);
|
||||
|
||||
|
||||
|
||||
#endif // INTEROP_OPENVPN_H
|
||||
|
||||
|
||||
#endif // PROTO_OPENVPN_H
|
||||
@@ -1,109 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// http://www.softether.org/ and ask your question on the users forum.
|
||||
//
|
||||
// Thank you for your cooperation.
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
// IPsec_PPP.c
|
||||
// Proto_PPP.c
|
||||
// PPP protocol stack
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -1125,17 +1024,17 @@ bool PPPProcessIPCPResponsePacket(PPP_SESSION *p, PPP_PACKET* pp, PPP_PACKET* re
|
||||
|
||||
Debug("Denied server IP address %s, proposed %s\n", prevAddrStr, addrStr);
|
||||
|
||||
// Fallback mechanism - just request 1.0.0.1
|
||||
if (prevAddr == Endian32(0x01000001))
|
||||
// Fallback mechanism - just request 192.0.0.8
|
||||
if (prevAddr == Endian32(0xc0000008))
|
||||
{
|
||||
Debug("We already tried the fallback IP of 1.0.0.1, giving up\n");
|
||||
Debug("We already tried the fallback IP of 192.0.0.8, giving up\n");
|
||||
p->IPv4_State = PPP_PROTO_STATUS_REJECTED;
|
||||
PPPRejectUnsupportedPacketEx(p, pp, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
c = NewPPPLCP(PPP_LCP_CODE_REQ, 0);
|
||||
ui = Endian32(0x01000001); // 1.0.0.1
|
||||
ui = Endian32(0xc0000008); // We always push 192.0.0.8, which is defined in RFC7600 as dummy IPv4 address.
|
||||
Add(c->OptionList, NewPPPOption(PPP_IPCP_OPTION_IP, &ui, sizeof(UINT)));
|
||||
if (!PPPSendAndRetransmitRequest(p, PPP_PROTOCOL_IPCP, c))
|
||||
{
|
||||
@@ -1384,7 +1283,8 @@ bool PPPProcessPAPRequestPacket(PPP_SESSION *p, PPP_PACKET* pp)
|
||||
|
||||
ipc = NewIPC(p->Cedar, p->ClientSoftwareName, p->Postfix, hub, id, password,
|
||||
&error_code, &p->ClientIP, p->ClientPort, &p->ServerIP, p->ServerPort,
|
||||
p->ClientHostname, p->CryptName, false, p->AdjustMss, NULL);
|
||||
p->ClientHostname, p->CryptName, false, p->AdjustMss, NULL, NULL,
|
||||
IPC_LAYER_3);
|
||||
|
||||
if (ipc != NULL)
|
||||
{
|
||||
@@ -1604,8 +1504,8 @@ bool PPPProcessIPCPRequestPacket(PPP_SESSION *p, PPP_PACKET* pp)
|
||||
t = 1;
|
||||
}
|
||||
|
||||
p->DhcpRenewInterval = (UINT64)(t * 1000);
|
||||
p->DhcpNextRenewTime = Tick64() + p->DhcpRenewInterval;
|
||||
p->DhcpRenewInterval = (UINT64)t * (UINT64)1000;
|
||||
p->DhcpNextRenewTime = Tick64() + p->DhcpRenewInterval;
|
||||
|
||||
if (true)
|
||||
{
|
||||
@@ -2555,7 +2455,7 @@ bool PPPParseMSCHAP2ResponsePacket(PPP_SESSION* p, PPP_PACKET* pp)
|
||||
if (p->MsChapV2_UseDoubleMsChapV2 && p->EapClient == NULL)
|
||||
{
|
||||
Debug("Double MSCHAPv2 creating EAP client\n");
|
||||
eap = HubNewEapClient(p->Cedar, hub, client_ip_tmp, id);
|
||||
eap = HubNewEapClient(p->Cedar, hub, client_ip_tmp, id, "L3:PPP");
|
||||
|
||||
if (eap)
|
||||
{
|
||||
@@ -2574,7 +2474,8 @@ bool PPPParseMSCHAP2ResponsePacket(PPP_SESSION* p, PPP_PACKET* pp)
|
||||
Debug("MSCHAPv2 creating IPC\n");
|
||||
ipc = NewIPC(p->Cedar, p->ClientSoftwareName, p->Postfix, hub, id, password,
|
||||
&error_code, &p->ClientIP, p->ClientPort, &p->ServerIP, p->ServerPort,
|
||||
p->ClientHostname, p->CryptName, false, p->AdjustMss, p->EapClient);
|
||||
p->ClientHostname, p->CryptName, false, p->AdjustMss, p->EapClient, NULL,
|
||||
+ IPC_LAYER_3);
|
||||
|
||||
if (ipc != NULL)
|
||||
{
|
||||
@@ -3142,14 +3043,14 @@ bool PPPParseUsername(CEDAR *cedar, char *src_username, ETHERIP_ID *dst)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Search for the last "@" in the string
|
||||
// Search for the separator character's last position in the string
|
||||
len = StrLen(src);
|
||||
last_at = INFINITE;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
char c = src[i];
|
||||
|
||||
if (c == '@')
|
||||
if (c == cedar->UsernameHubSeparator)
|
||||
{
|
||||
last_at = i;
|
||||
}
|
||||
@@ -3160,12 +3061,11 @@ bool PPPParseUsername(CEDAR *cedar, char *src_username, ETHERIP_ID *dst)
|
||||
|
||||
if (last_at == INFINITE)
|
||||
{
|
||||
// "@" is not specified
|
||||
// The separator character is not specifiedd
|
||||
StrCpy(token1, sizeof(token1), src);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Split with last "@"
|
||||
StrCpy(token1, sizeof(token1), src);
|
||||
token1[last_at] = 0;
|
||||
|
||||
@@ -3287,7 +3187,7 @@ void MsChapV2_GenerateChallenge8(UCHAR *dst, UCHAR *client_challenge, UCHAR *ser
|
||||
WriteBuf(b, username2, StrLen(username2));
|
||||
}
|
||||
|
||||
HashSha1(hash, b->Buf, b->Size);
|
||||
Sha1(hash, b->Buf, b->Size);
|
||||
|
||||
FreeBuf(b);
|
||||
|
||||
@@ -3350,14 +3250,14 @@ void MsChapV2Server_GenerateResponse(UCHAR *dst, UCHAR *nt_password_hash_hash, U
|
||||
WriteBuf(b, nt_password_hash_hash, 16);
|
||||
WriteBuf(b, client_response, 24);
|
||||
WriteBuf(b, magic1, StrLen(magic1));
|
||||
HashSha1(digest, b->Buf, b->Size);
|
||||
Sha1(digest, b->Buf, b->Size);
|
||||
FreeBuf(b);
|
||||
|
||||
b = NewBuf();
|
||||
WriteBuf(b, digest, sizeof(digest));
|
||||
WriteBuf(b, challenge8, 8);
|
||||
WriteBuf(b, magic2, StrLen(magic2));
|
||||
HashSha1(dst, b->Buf, b->Size);
|
||||
Sha1(dst, b->Buf, b->Size);
|
||||
FreeBuf(b);
|
||||
}
|
||||
|
||||
@@ -3422,3 +3322,4 @@ char *MsChapV2DoBruteForce(IPC_MSCHAP_V2_AUTHINFO *d, LIST *password_list)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_PPP.h
|
||||
// Header of IPsec_PPP.c
|
||||
// Proto_PPP.h
|
||||
// Header of Proto_PPP.c
|
||||
|
||||
#ifndef IPSEC_PPP_H
|
||||
#define IPSEC_PPP_H
|
||||
#ifndef PROTO_PPP_H
|
||||
#define PROTO_PPP_H
|
||||
|
||||
|
||||
//// Macro
|
||||
@@ -428,13 +322,10 @@ bool PPPParseUsername(CEDAR *cedar, char *src, ETHERIP_ID *dst);
|
||||
void GenerateNtPasswordHash(UCHAR *dst, char *password);
|
||||
void GenerateNtPasswordHashHash(UCHAR *dst_hash, UCHAR *src_hash);
|
||||
void MsChapV2Server_GenerateChallenge(UCHAR *dst);
|
||||
void MsChapV2Client_GenerateChallenge(UCHAR *dst);
|
||||
void MsChapV2_GenerateChallenge8(UCHAR *dst, UCHAR *client_challenge, UCHAR *server_challenge, char *username);
|
||||
void MsChapV2Client_GenerateResponse(UCHAR *dst, UCHAR *challenge8, UCHAR *nt_password_hash);
|
||||
void MsChapV2Server_GenerateResponse(UCHAR *dst, UCHAR *nt_password_hash_hash, UCHAR *client_response, UCHAR *challenge8);
|
||||
bool MsChapV2VerityPassword(IPC_MSCHAP_V2_AUTHINFO *d, char *password);
|
||||
char *MsChapV2DoBruteForce(IPC_MSCHAP_V2_AUTHINFO *d, LIST *password_list);
|
||||
|
||||
#endif // IPSEC_PPP_H
|
||||
|
||||
|
||||
#endif // PROTO_PPP_H
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Interop_SSTP.c
|
||||
// Proto_SSTP.c
|
||||
// SSTP (Microsoft Secure Socket Tunneling Protocol) protocol stack
|
||||
|
||||
#include "CedarPch.h"
|
||||
@@ -122,12 +16,6 @@ bool GetNoSstp()
|
||||
return g_no_sstp;
|
||||
}
|
||||
|
||||
// Set the SSTP disabling flag
|
||||
void SetNoSstp(bool b)
|
||||
{
|
||||
g_no_sstp = b;
|
||||
}
|
||||
|
||||
// Process the SSTP control packet reception
|
||||
void SstpProcessControlPacket(SSTP_SERVER *s, SSTP_PACKET *p)
|
||||
{
|
||||
@@ -137,7 +25,7 @@ void SstpProcessControlPacket(SSTP_SERVER *s, SSTP_PACKET *p)
|
||||
return;
|
||||
}
|
||||
|
||||
Debug("SSTP Control Packet Recv: Msg = %u, Num = %u\n", p->MessageType, LIST_NUM(p->AttibuteList));
|
||||
Debug("SSTP Control Packet Recv: Msg = %u, Num = %u\n", p->MessageType, LIST_NUM(p->AttributeList));
|
||||
|
||||
switch (p->MessageType)
|
||||
{
|
||||
@@ -266,7 +154,7 @@ void SstpSendPacket(SSTP_SERVER *s, SSTP_PACKET *p)
|
||||
|
||||
if (p->IsControl)
|
||||
{
|
||||
Debug("SSTP Control Packet Send: Msg = %u, Num = %u\n", p->MessageType, LIST_NUM(p->AttibuteList));
|
||||
Debug("SSTP Control Packet Send: Msg = %u, Num = %u\n", p->MessageType, LIST_NUM(p->AttributeList));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -438,7 +326,7 @@ SSTP_PACKET *SstpNewControlPacketWithAnAttribute(USHORT message_type, SSTP_ATTRI
|
||||
|
||||
if (a != NULL)
|
||||
{
|
||||
Add(p->AttibuteList, a);
|
||||
Add(p->AttributeList, a);
|
||||
}
|
||||
|
||||
return p;
|
||||
@@ -452,7 +340,7 @@ SSTP_PACKET *SstpNewControlPacket(USHORT message_type)
|
||||
p->IsControl = true;
|
||||
p->MessageType = message_type;
|
||||
p->Version = SSTP_VERSION_1;
|
||||
p->AttibuteList = NewListFast(NULL);
|
||||
p->AttributeList = NewListFast(NULL);
|
||||
|
||||
return p;
|
||||
}
|
||||
@@ -469,7 +357,7 @@ SSTP_PACKET *SstpNewDataPacket(UCHAR *data, UINT size)
|
||||
return p;
|
||||
}
|
||||
|
||||
// Get the Attibute with the specified ID from SSTP packet
|
||||
// Get the Attribute with the specified ID from SSTP packet
|
||||
SSTP_ATTRIBUTE *SstpFindAttribute(SSTP_PACKET *p, UCHAR attribute_id)
|
||||
{
|
||||
UINT i;
|
||||
@@ -479,9 +367,9 @@ SSTP_ATTRIBUTE *SstpFindAttribute(SSTP_PACKET *p, UCHAR attribute_id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0;i < LIST_NUM(p->AttibuteList);i++)
|
||||
for (i = 0;i < LIST_NUM(p->AttributeList);i++)
|
||||
{
|
||||
SSTP_ATTRIBUTE *a = LIST_DATA(p->AttibuteList, i);
|
||||
SSTP_ATTRIBUTE *a = LIST_DATA(p->AttributeList, i);
|
||||
|
||||
if (a->AttributeId == attribute_id)
|
||||
{
|
||||
@@ -665,7 +553,7 @@ BUF *SstpBuildPacket(SSTP_PACKET *p)
|
||||
Free(p->Data);
|
||||
}
|
||||
|
||||
ab = SstpBuildAttributeList(p->AttibuteList, p->MessageType);
|
||||
ab = SstpBuildAttributeList(p->AttributeList, p->MessageType);
|
||||
p->Data = ab->Buf;
|
||||
p->DataSize = ab->Size;
|
||||
Free(ab);
|
||||
@@ -753,9 +641,9 @@ SSTP_PACKET *SstpParsePacket(UCHAR *data, UINT size)
|
||||
if (p->IsControl)
|
||||
{
|
||||
// Parse the Attribute list
|
||||
p->AttibuteList = SstpParseAttributeList(p->Data, p->DataSize, p);
|
||||
p->AttributeList = SstpParseAttributeList(p->Data, p->DataSize, p);
|
||||
|
||||
if (p->AttibuteList == NULL)
|
||||
if (p->AttributeList == NULL)
|
||||
{
|
||||
// Failure of parsing list
|
||||
SstpFreePacket(p);
|
||||
@@ -794,7 +682,7 @@ LIST *SstpParseAttributeList(UCHAR *data, UINT size, SSTP_PACKET *p)
|
||||
data += sizeof(USHORT);
|
||||
size -= sizeof(USHORT);
|
||||
|
||||
// Attibutes List
|
||||
// Attributes List
|
||||
o = NewListFast(NULL);
|
||||
|
||||
while (LIST_NUM(o) < num)
|
||||
@@ -874,7 +762,7 @@ SSTP_ATTRIBUTE *SstpParseAttribute(UCHAR *data, UINT size)
|
||||
return a;
|
||||
}
|
||||
|
||||
// Release the Attibute
|
||||
// Release the Attribute
|
||||
void SstpFreeAttribute(SSTP_ATTRIBUTE *a)
|
||||
{
|
||||
// Validate arguments
|
||||
@@ -917,9 +805,9 @@ void SstpFreePacket(SSTP_PACKET *p)
|
||||
return;
|
||||
}
|
||||
|
||||
if (p->AttibuteList != NULL)
|
||||
if (p->AttributeList != NULL)
|
||||
{
|
||||
SstpFreeAttributeList(p->AttibuteList);
|
||||
SstpFreeAttributeList(p->AttributeList);
|
||||
}
|
||||
|
||||
if (p->Data != NULL)
|
||||
@@ -1,118 +1,12 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Interop_SSTP.h
|
||||
// Header of Interop_SSTP.c
|
||||
// Proto_SSTP.h
|
||||
// Header of Proto_SSTP.c
|
||||
|
||||
#ifndef INTEROP_SSTP_H
|
||||
#define INTEROP_SSTP_H
|
||||
#ifndef PROTO_SSTP_H
|
||||
#define PROTO_SSTP_H
|
||||
|
||||
//// Constants
|
||||
#define SSTP_URI "/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/" // SSTP HTTPS URI
|
||||
@@ -174,7 +68,7 @@
|
||||
|
||||
//// Type
|
||||
|
||||
// SSTP Attibute
|
||||
// SSTP Attribute
|
||||
struct SSTP_ATTRIBUTE
|
||||
{
|
||||
UCHAR AttributeId;
|
||||
@@ -191,7 +85,7 @@ struct SSTP_PACKET
|
||||
UCHAR *Data;
|
||||
UINT DataSize;
|
||||
USHORT MessageType;
|
||||
LIST *AttibuteList;
|
||||
LIST *AttributeList;
|
||||
};
|
||||
|
||||
// SSTP Server
|
||||
@@ -257,8 +151,5 @@ SSTP_PACKET *SstpNewControlPacket(USHORT message_type);
|
||||
SSTP_PACKET *SstpNewControlPacketWithAnAttribute(USHORT message_type, SSTP_ATTRIBUTE *a);
|
||||
void SstpSendPacket(SSTP_SERVER *s, SSTP_PACKET *p);
|
||||
bool GetNoSstp();
|
||||
void SetNoSstp(bool b);
|
||||
|
||||
#endif // INTEROP_SSTP_H
|
||||
|
||||
|
||||
#endif // PROTO_SSTP_H
|
||||
@@ -1,114 +1,8 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// IPsec_Win7.c
|
||||
// Proto_Win7.c
|
||||
// Initialize the helper module for Windows 7 / Windows 8 / Windows Vista / Windows Server 2008 / Windows Server 2008 R2 / Windows Server 2012 / Windows 10
|
||||
|
||||
#include <GlobalConst.h>
|
||||
@@ -137,7 +31,7 @@
|
||||
#include <errno.h>
|
||||
#include <Mayaqua/Mayaqua.h>
|
||||
#include <Cedar/Cedar.h>
|
||||
#include "IPsec_Win7Inner.h"
|
||||
#include "Proto_Win7Inner.h"
|
||||
#include <Wfp/Wfp.h>
|
||||
|
||||
static IPSEC_WIN7_FUNCTIONS *api = NULL;
|
||||
@@ -358,7 +252,7 @@ bool IPsecWin7InitDriverInner()
|
||||
|
||||
if (IsFileExists(sys_filename) && MsIsServiceInstalled(IPSEC_WIN7_DRIVER_NAME))
|
||||
{
|
||||
if (GetCurrentIPsecWin7DriverBuild() >= CEDAR_BUILD)
|
||||
if (GetCurrentIPsecWin7DriverBuild() >= CEDAR_VERSION_BUILD)
|
||||
{
|
||||
// Not to install since the latest version has been already installed
|
||||
install_driver = false;
|
||||
@@ -485,7 +379,7 @@ void SetCurrentIPsecWin7DriverBuild()
|
||||
{
|
||||
MsRegWriteInt(REG_LOCAL_MACHINE, IPSEC_WIN7_DRIVER_REGKEY,
|
||||
(MsIsWindows10() ? IPSEC_WIN7_DRIVER_BUILDNUMBER_WIN10 : IPSEC_WIN7_DRIVER_BUILDNUMBER),
|
||||
CEDAR_BUILD);
|
||||
CEDAR_VERSION_BUILD);
|
||||
}
|
||||
|
||||
// Get the build number of the current driver
|
||||
@@ -0,0 +1,39 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
|
||||
|
||||
// Proto_Win7.h
|
||||
// Header of Proto_Win7.c
|
||||
|
||||
#ifndef PROTO_WIN7_H
|
||||
#define PROTO_WIN7_H
|
||||
|
||||
// Constants
|
||||
#define IPSEC_WIN7_SRC_SYS_X86 "|pxwfp_x86.sys"
|
||||
#define IPSEC_WIN7_SRC_SYS_X64 "|pxwfp_x64.sys"
|
||||
#define IPSEC_WIN7_DST_SYS "%s\\drivers\\pxwfp.sys"
|
||||
|
||||
#define IPSEC_WIN7_DRIVER_NAME "pxwfp"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE L"SoftEther PacketiX VPN IPsec WFP Callout Driver"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE_V4 L"SoftEther PacketiX VPN IPsec WFP Callout for IPv4"
|
||||
#define IPSEC_WIN7_DRIVER_TITLE_V6 L"SoftEther PacketiX VPN IPsec WFP Callout for IPv6"
|
||||
#define IPSEC_WIN7_FILTER_TITLE_V4 CEDAR_PRODUCT_STR_W L" VPN IPsec Filter for IPv4"
|
||||
#define IPSEC_WIN7_FILTER_TITLE_V6 CEDAR_PRODUCT_STR_W L" VPN IPsec Filter for IPv6"
|
||||
#define IPSEC_WIN7_DRIVER_REGKEY "SYSTEM\\CurrentControlSet\\services\\pxwfp"
|
||||
#define IPSEC_WIN7_DRIVER_BUILDNUMBER "CurrentInstalledBuild"
|
||||
#define IPSEC_WIN7_DRIVER_BUILDNUMBER_WIN10 "CurrentInstalledBuild_Win10"
|
||||
|
||||
|
||||
// Function prototype
|
||||
IPSEC_WIN7 *IPsecWin7Init();
|
||||
void IPsecWin7Free(IPSEC_WIN7 *w);
|
||||
void IPsecWin7UpdateHostIPAddressList(IPSEC_WIN7 *w);
|
||||
|
||||
bool IPsecWin7InitDriver();
|
||||
bool IPsecWin7InitDriverInner();
|
||||
UINT GetCurrentIPsecWin7DriverBuild();
|
||||
void SetCurrentIPsecWin7DriverBuild();
|
||||
bool IPsecWin7InitApi();
|
||||
|
||||
|
||||
#endif // PROTO_WIN7_H
|
||||
@@ -0,0 +1,77 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
|
||||
|
||||
// Proto_Win7Inner.h
|
||||
// Internal header of Proto_Win7.c
|
||||
|
||||
#ifndef PROTO_WIN7_INNER_H
|
||||
#define PROTO_WIN7_INNER_H
|
||||
|
||||
// API function
|
||||
typedef struct IPSEC_WIN7_FUNCTIONS
|
||||
{
|
||||
DWORD (WINAPI *FwpmEngineOpen0)(
|
||||
IN OPTIONAL const wchar_t* serverName,
|
||||
IN UINT32 authnService,
|
||||
IN OPTIONAL SEC_WINNT_AUTH_IDENTITY_W* authIdentity,
|
||||
IN OPTIONAL const FWPM_SESSION0* session,
|
||||
OUT HANDLE* engineHandle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *FwpmEngineClose0)(IN HANDLE engineHandle);
|
||||
|
||||
void (WINAPI *FwpmFreeMemory0)(IN OUT void** p);
|
||||
|
||||
DWORD (WINAPI *FwpmFilterAdd0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const FWPM_FILTER0* filter,
|
||||
IN OPTIONAL PSECURITY_DESCRIPTOR sd,
|
||||
OUT OPTIONAL UINT64* id
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextCreate0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const IPSEC_TRAFFIC0* outboundTraffic,
|
||||
OUT OPTIONAL UINT64* inboundFilterId,
|
||||
OUT UINT64* id
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextGetSpi0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_GETSPI0* getSpi,
|
||||
OUT IPSEC_SA_SPI* inboundSpi
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextAddInbound0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_SA_BUNDLE0* inboundBundle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *IPsecSaContextAddOutbound0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN UINT64 id,
|
||||
IN const IPSEC_SA_BUNDLE0* outboundBundle
|
||||
);
|
||||
|
||||
DWORD (WINAPI *FwpmCalloutAdd0)(
|
||||
IN HANDLE engineHandle,
|
||||
IN const FWPM_CALLOUT0* callout,
|
||||
IN OPTIONAL PSECURITY_DESCRIPTOR sd,
|
||||
OUT OPTIONAL UINT32* id
|
||||
);
|
||||
|
||||
} IPSEC_WIN7_FUNCTIONS;
|
||||
|
||||
// Instance
|
||||
struct IPSEC_WIN7
|
||||
{
|
||||
HANDLE hEngine;
|
||||
HANDLE hDriverFile;
|
||||
UINT64 FilterIPv4Id, FilterIPv6Id;
|
||||
};
|
||||
|
||||
|
||||
#endif // PROTO_WIN7_INNER_H
|
||||
+638
-1277
File diff suppressed because it is too large
Load Diff
+7
-143
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Protocol.h
|
||||
@@ -121,7 +15,7 @@ struct CHECK_CERT_THREAD_PROC
|
||||
X *ServerX;
|
||||
CHECK_CERT_PROC *CheckCertProc;
|
||||
bool UserSelected;
|
||||
bool Exipred;
|
||||
bool Expired;
|
||||
bool Ok;
|
||||
};
|
||||
|
||||
@@ -217,22 +111,20 @@ UINT64 ShortStrToDate64(char *str);
|
||||
bool ServerAccept(CONNECTION *c);
|
||||
bool ClientConnect(CONNECTION *c);
|
||||
SOCK *ClientConnectToServer(CONNECTION *c);
|
||||
SOCK *TcpIpConnect(char *hostname, UINT port, bool try_start_ssl, bool ssl_no_tls);
|
||||
SOCK *TcpIpConnectEx(char *hostname, UINT port, bool *cancel_flag, void *hWnd, UINT *nat_t_error_code, bool no_nat_t, bool try_start_ssl, bool ssl_no_tls, IP *ret_ip);
|
||||
SOCK *TcpIpConnectEx(char *hostname, UINT port, bool *cancel_flag, void *hWnd, UINT *nat_t_error_code, bool no_nat_t, bool try_start_ssl, IP *ret_ip);
|
||||
bool ClientUploadSignature(SOCK *s);
|
||||
bool ClientDownloadHello(CONNECTION *c, SOCK *s);
|
||||
bool ServerDownloadSignature(CONNECTION *c, char **error_detail_str);
|
||||
bool ServerUploadHello(CONNECTION *c);
|
||||
bool ClientUploadAuth(CONNECTION *c);
|
||||
SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect, bool no_tls);
|
||||
SOCK *TcpConnectEx2(char *hostname, UINT port, UINT timeout, bool *cancel_flag, void *hWnd, bool try_start_ssl, bool ssl_no_tls);
|
||||
SOCK *TcpConnectEx3(char *hostname, UINT port, UINT timeout, bool *cancel_flag, void *hWnd, bool no_nat_t, UINT *nat_t_error_code, bool try_start_ssl, bool ssl_no_tls, IP *ret_ip);
|
||||
SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect);
|
||||
SOCK *TcpConnectEx3(char *hostname, UINT port, UINT timeout, bool *cancel_flag, void *hWnd, bool no_nat_t, UINT *nat_t_error_code, bool try_start_ssl, IP *ret_ip);
|
||||
|
||||
UINT ProxyCodeToCedar(UINT code);
|
||||
|
||||
void InitProtocol();
|
||||
void FreeProtocol();
|
||||
|
||||
|
||||
|
||||
POLICY *PackGetPolicy(PACK *p);
|
||||
void PackAddPolicy(PACK *p, POLICY *y);
|
||||
PACK *PackWelcome(SESSION *s);
|
||||
@@ -242,6 +134,7 @@ PACK *PackLoginWithAnonymous(char *hubname, char *username);
|
||||
PACK *PackLoginWithPassword(char *hubname, char *username, void *secure_password);
|
||||
PACK *PackLoginWithPlainPassword(char *hubname, char *username, void *plain_password);
|
||||
PACK *PackLoginWithCert(char *hubname, char *username, X *x, void *sign, UINT sign_size);
|
||||
PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x);
|
||||
bool GetMethodFromPack(PACK *p, char *method, UINT size);
|
||||
bool GetHubnameAndUsernameFromPack(PACK *p, char *username, UINT username_size,
|
||||
char *hubname, UINT hubname_size);
|
||||
@@ -257,32 +150,7 @@ bool ClientAdditionalConnect(CONNECTION *c, THREAD *t);
|
||||
SOCK *ClientAdditionalConnectToServer(CONNECTION *c);
|
||||
bool ClientUploadAuth2(CONNECTION *c, SOCK *s);
|
||||
bool GetSessionKeyFromPack(PACK *p, UCHAR *session_key, UINT *session_key_32);
|
||||
void GenerateRC4KeyPair(RC4_KEY_PAIR *k);
|
||||
|
||||
SOCK *ProxyConnect(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, char *password, bool additional_connect);
|
||||
SOCK *ProxyConnectEx(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, char *password, bool additional_connect,
|
||||
bool *cancel_flag, void *hWnd);
|
||||
SOCK *ProxyConnectEx2(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, char *password, bool additional_connect,
|
||||
bool *cancel_flag, void *hWnd, UINT timeout);
|
||||
SOCK *SocksConnect(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, bool additional_connect);
|
||||
SOCK *SocksConnectEx(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, bool additional_connect,
|
||||
bool *cancel_flag, void *hWnd);
|
||||
SOCK *SocksConnectEx2(CONNECTION *c, char *proxy_host_name, UINT proxy_port,
|
||||
char *server_host_name, UINT server_port,
|
||||
char *username, bool additional_connect,
|
||||
bool *cancel_flag, void *hWnd, UINT timeout, IP *ret_ip);
|
||||
bool SocksSendRequestPacket(CONNECTION *c, SOCK *s, UINT dest_port, IP *dest_ip, char *userid);
|
||||
bool SocksRecvResponsePacket(CONNECTION *c, SOCK *s);
|
||||
void CreateNodeInfo(NODE_INFO *info, CONNECTION *c);
|
||||
UINT SecureSign(SECURE_SIGN *sign, UINT device_id, char *pin);
|
||||
void ClientUploadNoop(CONNECTION *c);
|
||||
@@ -290,9 +158,6 @@ bool ClientCheckServerCert(CONNECTION *c, bool *expired);
|
||||
void ClientCheckServerCertThread(THREAD *thread, void *param);
|
||||
bool ClientSecureSign(CONNECTION *c, UCHAR *sign, UCHAR *random, X **x);
|
||||
void ClientSecureSignThread(THREAD *thread, void *param);
|
||||
UINT SecureWrite(UINT device_id, char *cert_name, X *x, char *key_name, K *k, char *pin);
|
||||
UINT SecureEnum(UINT device_id, char *pin, TOKEN_LIST **cert_list, TOKEN_LIST **key_list);
|
||||
UINT SecureDelete(UINT device_id, char *pin, char *cert_name, char *key_name);
|
||||
TOKEN_LIST *EnumHub(SESSION *s);
|
||||
UINT ChangePasswordAccept(CONNECTION *c, PACK *p);
|
||||
UINT ChangePassword(CEDAR *cedar, CLIENT_OPTION *o, char *hubname, char *username, char *old_pass, char *new_pass);
|
||||
@@ -312,5 +177,4 @@ bool TryGetRootCertChain(LIST *o, X *x, bool auto_save, X **found_root_x);
|
||||
bool TryGetParentCertFromCertList(LIST *o, X *x, LIST *found_chain);
|
||||
bool DownloadAndSaveIntermediateCertificatesIfNecessary(X *x);
|
||||
|
||||
|
||||
#endif // PROTOCOL_H
|
||||
|
||||
+88
-149
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Radius.c
|
||||
@@ -137,7 +31,7 @@ bool PeapClientSendMsChapv2AuthClientResponse(EAP_CLIENT *e, UCHAR *client_respo
|
||||
msg1.Chap_Id = e->MsChapV2Challenge.Chap_Id;
|
||||
msg1.Chap_Len = Endian16(54 + StrLen(e->Username));
|
||||
msg1.Chap_ValueSize = 49;
|
||||
Copy(msg1.Chap_PeerChallange, client_challenge, 16);
|
||||
Copy(msg1.Chap_PeerChallenge, client_challenge, 16);
|
||||
Copy(msg1.Chap_NtResponse, client_response, 24);
|
||||
Copy(msg1.Chap_Name, e->Username, MIN(StrLen(e->Username), 255));
|
||||
|
||||
@@ -323,11 +217,11 @@ bool SendPeapRawPacket(EAP_CLIENT *e, UCHAR *peap_data, UINT peap_size)
|
||||
fragments = NewListFast(NULL);
|
||||
for (num = 0;;num++)
|
||||
{
|
||||
UCHAR tmp[1024];
|
||||
UCHAR tmp[200];
|
||||
EAP_PEAP *send_peap_message;
|
||||
UINT sz;
|
||||
|
||||
sz = ReadBuf(buf, tmp, 1024);
|
||||
sz = ReadBuf(buf, tmp, sizeof(tmp));
|
||||
|
||||
if (sz == 0)
|
||||
{
|
||||
@@ -699,6 +593,11 @@ void EapSetRadiusGeneralAttributes(RADIUS_PACKET *r, EAP_CLIENT *e)
|
||||
|
||||
Add(r->AvpList, NewRadiusAvp(RADIUS_ATTRIBUTE_NAS_ID, 0, 0, CEDAR_SERVER_STR, StrLen(CEDAR_SERVER_STR)));
|
||||
|
||||
if (IsEmptyStr(e->In_VpnProtocolState) == false)
|
||||
{
|
||||
Add(r->AvpList, NewRadiusAvp(RADIUS_ATTRIBUTE_PROXY_STATE, 0, 0, e->In_VpnProtocolState, StrLen(e->In_VpnProtocolState)));
|
||||
}
|
||||
|
||||
ui = Endian32(2);
|
||||
Add(r->AvpList, NewRadiusAvp(RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT,
|
||||
RADIUS_MS_NETWORK_ACCESS_SERVER_TYPE, &ui, sizeof(UINT)));
|
||||
@@ -757,7 +656,7 @@ bool EapClientSendMsChapv2AuthClientResponse(EAP_CLIENT *e, UCHAR *client_respon
|
||||
eap1->Chap_Id = e->MsChapV2Challenge.Chap_Id;
|
||||
eap1->Chap_Len = Endian16(54 + StrLen(e->Username));
|
||||
eap1->Chap_ValueSize = 49;
|
||||
Copy(eap1->Chap_PeerChallange, client_challenge, 16);
|
||||
Copy(eap1->Chap_PeerChallenge, client_challenge, 16);
|
||||
Copy(eap1->Chap_NtResponse, client_response, 24);
|
||||
Copy(eap1->Chap_Name, e->Username, MIN(StrLen(e->Username), 255));
|
||||
|
||||
@@ -1020,11 +919,27 @@ RADIUS_PACKET *EapSendPacketAndRecvResponse(EAP_CLIENT *e, RADIUS_PACKET *r)
|
||||
{
|
||||
RADIUS_AVP *eap_msg = GetRadiusAvp(rp, RADIUS_ATTRIBUTE_EAP_MESSAGE);
|
||||
RADIUS_AVP *vlan_avp = GetRadiusAvp(rp, RADIUS_ATTRIBUTE_VLAN_ID);
|
||||
RADIUS_AVP *framed_interface_id_avp = GetRadiusAvp(rp, RADIUS_ATTRIBUTE_FRAMED_INTERFACE_ID);
|
||||
if (eap_msg != NULL)
|
||||
{
|
||||
e->LastRecvEapId = ((EAP_MESSAGE *)(eap_msg->Data))->Id;
|
||||
}
|
||||
|
||||
if (framed_interface_id_avp != NULL)
|
||||
{
|
||||
// FRAMED_INTERFACE_ID
|
||||
char tmp_str[64];
|
||||
UCHAR mac_address[6];
|
||||
|
||||
Zero(tmp_str, sizeof(tmp_str));
|
||||
Copy(tmp_str, framed_interface_id_avp->Data, MIN(framed_interface_id_avp->DataSize, sizeof(tmp_str) - 1));
|
||||
|
||||
if (StrToMac(mac_address, tmp_str))
|
||||
{
|
||||
Copy(e->LastRecvVirtualMacAddress, mac_address, 6);
|
||||
}
|
||||
}
|
||||
|
||||
if (vlan_avp != NULL)
|
||||
{
|
||||
// VLAN ID
|
||||
@@ -1577,7 +1492,7 @@ RADIUS_PACKET *ParseRadiusPacket(void *data, UINT size)
|
||||
goto LABEL_ERROR;
|
||||
}
|
||||
|
||||
if (a.Type == RADIUS_ATTRIBUTE_EAP_MESSAGE && a.DataSize >= 5 && a.DataSize <= 1500)
|
||||
if (a.Type == RADIUS_ATTRIBUTE_EAP_MESSAGE && a.DataSize >= 5)
|
||||
{
|
||||
UINT sz_tmp = Endian16(((EAP_MESSAGE *)a.Data)->Len);
|
||||
|
||||
@@ -1691,15 +1606,8 @@ RADIUS_PACKET *ParseRadiusPacket(void *data, UINT size)
|
||||
|
||||
LABEL_ERROR:
|
||||
|
||||
if (p != NULL)
|
||||
{
|
||||
FreeRadiusPacket(p);
|
||||
}
|
||||
|
||||
if (buf != NULL)
|
||||
{
|
||||
FreeBuf(buf);
|
||||
}
|
||||
FreeRadiusPacket(p);
|
||||
FreeBuf(buf);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -1755,6 +1663,11 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
||||
// Try the EAP authentication for RADIUS first
|
||||
EAP_CLIENT *eap = mschap.MsChapV2_EapClient;
|
||||
|
||||
if (IsEmptyStr(opt->In_VpnProtocolState) == false)
|
||||
{
|
||||
StrCpy(eap->In_VpnProtocolState, sizeof(eap->In_VpnProtocolState), opt->In_VpnProtocolState);
|
||||
}
|
||||
|
||||
if (eap->PeapMode == false)
|
||||
{
|
||||
ret = EapClientSendMsChapv2AuthClientResponse(eap, mschap.MsChapV2_ClientResponse,
|
||||
@@ -1775,6 +1688,8 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
||||
opt->Out_VLanId = eap->LastRecvVLanId;
|
||||
}
|
||||
|
||||
Copy(opt->Out_VirtualMacAddress, eap->LastRecvVirtualMacAddress, 6);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -1889,31 +1804,31 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
||||
|
||||
// Service-Type
|
||||
ui = Endian32(2);
|
||||
RadiusAddValue(p, 6, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_SERVICE_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// NAS-Port-Type
|
||||
ui = Endian32(5);
|
||||
RadiusAddValue(p, 61, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_NAS_PORT_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Tunnel-Type
|
||||
ui = Endian32(1);
|
||||
RadiusAddValue(p, 64, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Tunnel-Medium-Type
|
||||
ui = Endian32(1);
|
||||
RadiusAddValue(p, 65, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_MEDIUM_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Called-Station-ID - VPN Hub Name
|
||||
if (IsEmptyStr(hubname) == false)
|
||||
{
|
||||
RadiusAddValue(p, 30, 0, 0, hubname, StrLen(hubname));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_CALLED_STATION_ID, 0, 0, hubname, StrLen(hubname));
|
||||
}
|
||||
|
||||
// Calling-Station-Id
|
||||
RadiusAddValue(p, 31, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_CALLING_STATION_ID, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
|
||||
// Tunnel-Client-Endpoint
|
||||
RadiusAddValue(p, 66, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_CLIENT_ENDPOINT, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1927,69 +1842,75 @@ bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT sec
|
||||
// Acct-Session-Id
|
||||
us = Endian16(session_id % 254 + 1);
|
||||
session_id++;
|
||||
RadiusAddValue(p, 44, 0, 0, &us, sizeof(us));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_ACCT_SESSION_ID, 0, 0, &us, sizeof(us));
|
||||
|
||||
// NAS-IP-Address
|
||||
if (c != NULL && c->FirstSock != NULL && c->FirstSock->IPv6 == false)
|
||||
{
|
||||
ui = IPToUINT(&c->FirstSock->LocalIP);
|
||||
RadiusAddValue(p, 4, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_NAS_IP, 0, 0, &ui, sizeof(ui));
|
||||
}
|
||||
|
||||
// Service-Type
|
||||
ui = Endian32(2);
|
||||
RadiusAddValue(p, 6, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_SERVICE_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// MS-RAS-Vendor
|
||||
ui = Endian32(311);
|
||||
RadiusAddValue(p, 26, 311, 9, &ui, sizeof(ui));
|
||||
ui = Endian32(RADIUS_VENDOR_MICROSOFT);
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_RAS_VENDOR, &ui, sizeof(ui));
|
||||
|
||||
// MS-RAS-Version
|
||||
RadiusAddValue(p, 26, 311, 18, ms_ras_version, StrLen(ms_ras_version));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_VERSION, ms_ras_version, StrLen(ms_ras_version));
|
||||
|
||||
// NAS-Port-Type
|
||||
ui = Endian32(5);
|
||||
RadiusAddValue(p, 61, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_NAS_PORT_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Tunnel-Type
|
||||
ui = Endian32(1);
|
||||
RadiusAddValue(p, 64, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Tunnel-Medium-Type
|
||||
ui = Endian32(1);
|
||||
RadiusAddValue(p, 65, 0, 0, &ui, sizeof(ui));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_MEDIUM_TYPE, 0, 0, &ui, sizeof(ui));
|
||||
|
||||
// Called-Station-ID - VPN Hub Name
|
||||
if (IsEmptyStr(hubname) == false)
|
||||
{
|
||||
RadiusAddValue(p, 30, 0, 0, hubname, StrLen(hubname));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_CALLED_STATION_ID, 0, 0, hubname, StrLen(hubname));
|
||||
}
|
||||
|
||||
// Calling-Station-Id
|
||||
RadiusAddValue(p, 31, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_CALLING_STATION_ID, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
|
||||
// Tunnel-Client-Endpoint
|
||||
RadiusAddValue(p, 66, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_TUNNEL_CLIENT_ENDPOINT, 0, 0, client_ip_str, StrLen(client_ip_str));
|
||||
|
||||
// MS-RAS-Client-Version
|
||||
RadiusAddValue(p, 26, 311, 35, ms_ras_version, StrLen(ms_ras_version));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_RAS_CLIENT_VERSION, ms_ras_version, StrLen(ms_ras_version));
|
||||
|
||||
// MS-RAS-Client-Name
|
||||
RadiusAddValue(p, 26, 311, 34, client_ip_str, StrLen(client_ip_str));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_RAS_CLIENT_NAME, client_ip_str, StrLen(client_ip_str));
|
||||
|
||||
// MS-CHAP-Challenge
|
||||
RadiusAddValue(p, 26, 311, 11, mschap.MsChapV2_ServerChallenge, sizeof(mschap.MsChapV2_ServerChallenge));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_CHAP_CHALLENGE, mschap.MsChapV2_ServerChallenge, sizeof(mschap.MsChapV2_ServerChallenge));
|
||||
|
||||
// MS-CHAP2-Response
|
||||
Zero(ms_chapv2_response, sizeof(ms_chapv2_response));
|
||||
Copy(ms_chapv2_response + 2, mschap.MsChapV2_ClientChallenge, 16);
|
||||
Copy(ms_chapv2_response + 2 + 16 + 8, mschap.MsChapV2_ClientResponse, 24);
|
||||
RadiusAddValue(p, 26, 311, 25, ms_chapv2_response, sizeof(ms_chapv2_response));
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_VENDOR_MICROSOFT, RADIUS_MS_CHAP2_RESPONSE, ms_chapv2_response, sizeof(ms_chapv2_response));
|
||||
|
||||
// NAS-ID
|
||||
WriteBuf(p, nas_id->Buf, nas_id->Size);
|
||||
}
|
||||
|
||||
if (IsEmptyStr(opt->In_VpnProtocolState) == false)
|
||||
{
|
||||
// Proxy state as protocol details
|
||||
RadiusAddValue(p, RADIUS_ATTRIBUTE_PROXY_STATE, 0, 0, opt->In_VpnProtocolState, StrLen(opt->In_VpnProtocolState));
|
||||
}
|
||||
|
||||
SeekBuf(p, 0, 0);
|
||||
|
||||
WRITE_USHORT(((UCHAR *)p->Buf) + 2, (USHORT)p->Size);
|
||||
@@ -2080,6 +2001,9 @@ RECV_RETRY:
|
||||
// Success
|
||||
if (recv_buf[0] == 2)
|
||||
{
|
||||
LIST *o;
|
||||
BUF *buf = NewBufFromMemory(recv_buf, recv_size);
|
||||
|
||||
ret = true;
|
||||
|
||||
if (is_mschap && mschap_v2_server_response_20 != NULL)
|
||||
@@ -2117,12 +2041,26 @@ RECV_RETRY:
|
||||
}
|
||||
}
|
||||
|
||||
if (opt->In_CheckVLanId)
|
||||
o = RadiusParseOptions(buf);
|
||||
if (o != NULL)
|
||||
{
|
||||
BUF *buf = NewBufFromMemory(recv_buf, recv_size);
|
||||
LIST *o = RadiusParseOptions(buf);
|
||||
DHCP_OPTION *framed_interface_id_option = GetDhcpOption(o, RADIUS_ATTRIBUTE_FRAMED_INTERFACE_ID);
|
||||
|
||||
if (o != NULL)
|
||||
if (framed_interface_id_option != NULL)
|
||||
{
|
||||
char tmp_str[64];
|
||||
UCHAR mac_address[6];
|
||||
|
||||
Zero(tmp_str, sizeof(tmp_str));
|
||||
Copy(tmp_str, framed_interface_id_option->Data, MIN(framed_interface_id_option->Size, sizeof(tmp_str) - 1));
|
||||
|
||||
if (StrToMac(mac_address, tmp_str))
|
||||
{
|
||||
Copy(opt->Out_VirtualMacAddress, mac_address, 6);
|
||||
}
|
||||
}
|
||||
|
||||
if (opt->In_CheckVLanId)
|
||||
{
|
||||
DHCP_OPTION *vlan_option = GetDhcpOption(o, RADIUS_ATTRIBUTE_VLAN_ID);
|
||||
|
||||
@@ -2141,9 +2079,10 @@ RECV_RETRY:
|
||||
}
|
||||
}
|
||||
|
||||
FreeBuf(buf);
|
||||
FreeDhcpOptions(o);
|
||||
}
|
||||
|
||||
FreeBuf(buf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2403,7 +2342,7 @@ BUF *RadiusEncryptPassword(char *password, UCHAR *random, UCHAR *secret, UINT se
|
||||
{
|
||||
WriteBuf(tmp, c[i - 1], 16);
|
||||
}
|
||||
Hash(b[i], tmp->Buf, tmp->Size, false);
|
||||
Md5(b[i], tmp->Buf, tmp->Size);
|
||||
FreeBuf(tmp);
|
||||
|
||||
// Calculation of c[i]
|
||||
|
||||
+7
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Radius.h
|
||||
@@ -142,6 +36,7 @@
|
||||
#define RADIUS_ATTRIBUTE_EAP_MESSAGE 79
|
||||
#define RADIUS_ATTRIBUTE_EAP_AUTHENTICATOR 80
|
||||
#define RADIUS_ATTRIBUTE_VLAN_ID 81
|
||||
#define RADIUS_ATTRIBUTE_FRAMED_INTERFACE_ID 96
|
||||
#define RADIUS_MAX_NAS_ID_LEN 253
|
||||
|
||||
// RADIUS codes
|
||||
@@ -234,7 +129,7 @@ struct EAP_MSCHAPV2_RESPONSE
|
||||
UCHAR Chap_Id;
|
||||
USHORT Chap_Len;
|
||||
UCHAR Chap_ValueSize; // = 49
|
||||
UCHAR Chap_PeerChallange[16];
|
||||
UCHAR Chap_PeerChallenge[16];
|
||||
UCHAR Chap_Reserved[8];
|
||||
UCHAR Chap_NtResponse[24];
|
||||
UCHAR Chap_Flags;
|
||||
@@ -336,6 +231,9 @@ struct EAP_CLIENT
|
||||
UCHAR RecvLastCode;
|
||||
|
||||
UINT LastRecvVLanId;
|
||||
UCHAR LastRecvVirtualMacAddress[6];
|
||||
|
||||
char In_VpnProtocolState[64];
|
||||
};
|
||||
|
||||
void FreeRadiusPacket(RADIUS_PACKET *p);
|
||||
@@ -374,6 +272,8 @@ struct RADIUS_LOGIN_OPTION
|
||||
UINT Out_VLanId;
|
||||
bool Out_IsRadiusLogin;
|
||||
char NasId[RADIUS_MAX_NAS_ID_LEN + 1]; // NAS-Identifier
|
||||
char Out_VirtualMacAddress[6];
|
||||
char In_VpnProtocolState[64];
|
||||
};
|
||||
|
||||
// Function prototype
|
||||
|
||||
+9
-107
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Remote.c
|
||||
@@ -121,6 +15,10 @@ void EndRpc(RPC *rpc)
|
||||
|
||||
// Release the RPC
|
||||
void RpcFree(RPC *rpc)
|
||||
{
|
||||
RpcFreeEx(rpc, false);
|
||||
}
|
||||
void RpcFreeEx(RPC *rpc, bool no_disconnect)
|
||||
{
|
||||
// Validate arguments
|
||||
if (rpc == NULL)
|
||||
@@ -128,7 +26,11 @@ void RpcFree(RPC *rpc)
|
||||
return;
|
||||
}
|
||||
|
||||
Disconnect(rpc->Sock);
|
||||
if (no_disconnect == false)
|
||||
{
|
||||
Disconnect(rpc->Sock);
|
||||
}
|
||||
|
||||
ReleaseSock(rpc->Sock);
|
||||
|
||||
DeleteLock(rpc->Lock);
|
||||
|
||||
+1
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// Remote.h
|
||||
@@ -148,6 +42,7 @@ bool RpcIsOk(PACK *p);
|
||||
UINT RpcGetError(PACK *p);
|
||||
void EndRpc(RPC *rpc);
|
||||
void RpcFree(RPC *rpc);
|
||||
void RpcFreeEx(RPC *rpc, bool no_disconnect);
|
||||
|
||||
#endif // REMOTE_H
|
||||
|
||||
|
||||
+73
-163
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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
|
||||
@@ -160,6 +54,7 @@ void SmProxyDlgInit(HWND hWnd, INTERNET_SETTING *t)
|
||||
Check(hWnd, R_DIRECT_TCP, t->ProxyType == PROXY_DIRECT);
|
||||
Check(hWnd, R_HTTPS, t->ProxyType == PROXY_HTTP);
|
||||
Check(hWnd, R_SOCKS, t->ProxyType == PROXY_SOCKS);
|
||||
Check(hWnd, R_SOCKS5, t->ProxyType == PROXY_SOCKS5);
|
||||
|
||||
SmProxyDlgUpdate(hWnd, t);
|
||||
}
|
||||
@@ -226,6 +121,10 @@ UINT SmProxyDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
|
||||
{
|
||||
t->ProxyType = PROXY_SOCKS;
|
||||
}
|
||||
else if (IsChecked(hWnd, R_SOCKS5))
|
||||
{
|
||||
t->ProxyType = PROXY_SOCKS5;
|
||||
}
|
||||
else
|
||||
{
|
||||
t->ProxyType = PROXY_DIRECT;
|
||||
@@ -242,6 +141,7 @@ UINT SmProxyDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
|
||||
a.ProxyPort = t->ProxyPort;
|
||||
StrCpy(a.ProxyUsername, sizeof(a.ProxyUsername), t->ProxyUsername);
|
||||
StrCpy(a.ProxyPassword, sizeof(a.ProxyPassword), t->ProxyPassword);
|
||||
StrCpy(a.CustomHttpHeader, sizeof(a.CustomHttpHeader), t->CustomHttpHeader);
|
||||
|
||||
if (CmProxyDlg(hWnd, &a))
|
||||
{
|
||||
@@ -250,6 +150,7 @@ UINT SmProxyDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param)
|
||||
t->ProxyPort = a.ProxyPort;
|
||||
StrCpy(t->ProxyUsername, sizeof(t->ProxyUsername), a.ProxyUsername);
|
||||
StrCpy(t->ProxyPassword, sizeof(t->ProxyPassword), a.ProxyPassword);
|
||||
StrCpy(t->CustomHttpHeader, sizeof(t->CustomHttpHeader), a.CustomHttpHeader);
|
||||
}
|
||||
|
||||
SmProxyDlgUpdate(hWnd, t);
|
||||
@@ -3152,7 +3053,7 @@ bool SmSetupInit(HWND hWnd, SM_SETUP *s)
|
||||
char *password = "";
|
||||
|
||||
Zero(&t, sizeof(t));
|
||||
Hash(t.HashedPassword, password, StrLen(password), true);
|
||||
Sha0(t.HashedPassword, password, StrLen(password));
|
||||
HashPassword(t.SecurePassword, ADMINISTRATOR_USERNAME, password);
|
||||
StrCpy(t.HubName, sizeof(t.HubName), s->HubName);
|
||||
t.HubType = HUB_TYPE_STANDALONE;
|
||||
@@ -3470,7 +3371,7 @@ void SmSetupDlgOnOk(HWND hWnd, SM_SETUP *s)
|
||||
s->s->IPsecMessageDisplayed = true;
|
||||
}
|
||||
|
||||
// Confgure the VPN Azure if VPN Azure feature is available
|
||||
// Configure the VPN Azure if VPN Azure feature is available
|
||||
if (GetCapsBool(s->s->CapsList, "b_support_azure"))
|
||||
{
|
||||
SmAzure(hWnd, s->s, true);
|
||||
@@ -9465,7 +9366,7 @@ void SmSessionDlgUpdate(HWND hWnd, SM_HUB *s)
|
||||
|
||||
if (s->p->ServerInfo.ServerBuildInt < 2844)
|
||||
{
|
||||
// Old version doen't support for remote management of the sessions
|
||||
// Old version doesn't support for remote management of the sessions
|
||||
ok2 = ok;
|
||||
}
|
||||
|
||||
@@ -13776,7 +13677,7 @@ void SmEditUserDlgOk(HWND hWnd, SM_EDIT_USER *s)
|
||||
}
|
||||
FreeRpcSetUser(&t);
|
||||
|
||||
MsgBoxEx(hWnd, MB_ICONINFORMATION, _UU("SM_USER_CREEATE_OK"), u->Name);
|
||||
MsgBoxEx(hWnd, MB_ICONINFORMATION, _UU("SM_USER_CREATE_OK"), u->Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -15243,7 +15144,7 @@ UINT SmChangeServerPasswordDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
}
|
||||
Zero(&t, sizeof(t));
|
||||
Hash(t.HashedPassword, tmp1, StrLen(tmp1), true);
|
||||
Sha0(t.HashedPassword, tmp1, StrLen(tmp1));
|
||||
Copy(hash, t.HashedPassword, sizeof(hash));
|
||||
if (CALL(hWnd, ScSetServerPassword(p->Rpc, &t)) == false)
|
||||
{
|
||||
@@ -15905,7 +15806,7 @@ void SmFarmDlgOnOk(HWND hWnd, SM_SERVER *p)
|
||||
GetTxtA(hWnd, E_PASSWORD, pass, sizeof(pass));
|
||||
if (StrCmp(pass, HIDDEN_PASSWORD) != 0)
|
||||
{
|
||||
Hash(t.MemberPassword, pass, StrLen(pass), true);
|
||||
Sha0(t.MemberPassword, pass, StrLen(pass));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16120,7 +16021,7 @@ void SmConnectionDlgRefresh(HWND hWnd, SM_SERVER *p)
|
||||
|
||||
LvInsertEnd(b, hWnd, L_LIST);
|
||||
|
||||
FreeRpcEnumConnetion(&t);
|
||||
FreeRpcEnumConnection(&t);
|
||||
}
|
||||
|
||||
// Update the control
|
||||
@@ -17011,23 +16912,34 @@ void SmSslDlgInit(HWND hWnd, SM_SSL *s)
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the encryption algorithm list
|
||||
cipher_list = GetCipherList();
|
||||
SetFont(hWnd, C_CIPHER, GetFont("Tahoma", 8, false, false, false, false));
|
||||
CbSetHeight(hWnd, C_CIPHER, 18);
|
||||
for (i = 0;i < cipher_list->NumTokens;i++)
|
||||
{
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
char *name = cipher_list->Token[i];
|
||||
StrToUni(tmp, sizeof(tmp), name);
|
||||
CbAddStr(hWnd, C_CIPHER, tmp, 0);
|
||||
}
|
||||
|
||||
if (s->p != NULL)
|
||||
{
|
||||
// Get the encryption algorithm name from the server
|
||||
RPC_STR t;
|
||||
Zero(&t, sizeof(t));
|
||||
|
||||
SetFont(hWnd, C_CIPHER, GetFont("Tahoma", 8, false, false, false, false));
|
||||
CbSetHeight(hWnd, C_CIPHER, 18);
|
||||
|
||||
// Get the list of available encryption algorithms from the server
|
||||
if (ScGetServerCipherList(s->p->Rpc, &t) == ERR_NO_ERROR)
|
||||
{
|
||||
cipher_list = ParseToken(t.String, ";");
|
||||
|
||||
FreeRpcStr(&t);
|
||||
Zero(&t, sizeof(t));
|
||||
|
||||
for (i = 0; i < cipher_list->NumTokens; i++)
|
||||
{
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
char *name = cipher_list->Token[i];
|
||||
StrToUni(tmp, sizeof(tmp), name);
|
||||
CbAddStr(hWnd, C_CIPHER, tmp, 0);
|
||||
}
|
||||
|
||||
FreeToken(cipher_list);
|
||||
}
|
||||
|
||||
// Get the current encryption algorithm's name from the server
|
||||
if (CALL(hWnd, ScGetServerCipher(s->p->Rpc, &t)))
|
||||
{
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
@@ -17545,7 +17457,7 @@ void SmEditHubOnOk(HWND hWnd, SM_EDIT_HUB *s)
|
||||
|
||||
if (s->EditMode == false || StrCmp(pass1, HIDDEN_PASSWORD) != 0)
|
||||
{
|
||||
Hash(t.HashedPassword, pass1, StrLen(pass1), true);
|
||||
Sha0(t.HashedPassword, pass1, StrLen(pass1));
|
||||
HashPassword(t.SecurePassword, ADMINISTRATOR_USERNAME, pass1);
|
||||
}
|
||||
|
||||
@@ -17571,7 +17483,7 @@ void SmEditHubOnOk(HWND hWnd, SM_EDIT_HUB *s)
|
||||
{
|
||||
if (CALL(hWnd, ScCreateHub(s->p->Rpc, &t)))
|
||||
{
|
||||
MsgBoxEx(hWnd, MB_ICONINFORMATION, _UU("CM_EDIT_HUB_CREATER"), hubname);
|
||||
MsgBoxEx(hWnd, MB_ICONINFORMATION, _UU("CM_EDIT_HUB_CREATED"), hubname);
|
||||
EndDialog(hWnd, true);
|
||||
}
|
||||
}
|
||||
@@ -18365,6 +18277,7 @@ void SmServerDlgInit(HWND hWnd, SM_SERVER *p)
|
||||
void SmServerDlgRefresh(HWND hWnd, SM_SERVER *p)
|
||||
{
|
||||
RPC_ENUM_HUB t;
|
||||
RPC_LISTENER_LIST t2;
|
||||
DDNS_CLIENT_STATUS st;
|
||||
RPC_AZURE_STATUS sta;
|
||||
UINT i;
|
||||
@@ -18452,38 +18365,34 @@ void SmServerDlgRefresh(HWND hWnd, SM_SERVER *p)
|
||||
}
|
||||
|
||||
// Listener list update
|
||||
if (p != NULL)
|
||||
Zero(&t2, sizeof(RPC_LISTENER_LIST));
|
||||
if (CALL(hWnd, ScEnumListener(p->Rpc, &t2)))
|
||||
{
|
||||
RPC_LISTENER_LIST t;
|
||||
Zero(&t, sizeof(RPC_LISTENER_LIST));
|
||||
if (CALL(hWnd, ScEnumListener(p->Rpc, &t)))
|
||||
LVB *b = LvInsertStart();
|
||||
for (i = 0;i < t2.NumPort;i++)
|
||||
{
|
||||
LVB *b = LvInsertStart();
|
||||
for (i = 0;i < t.NumPort;i++)
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
wchar_t *status;
|
||||
UINT icon;
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CM_LISTENER_TCP_PORT"), t2.Ports[i]);
|
||||
|
||||
status = _UU("CM_LISTENER_ONLINE");
|
||||
icon = ICO_PROTOCOL;
|
||||
if (t2.Errors[i])
|
||||
{
|
||||
wchar_t tmp[MAX_SIZE];
|
||||
wchar_t *status;
|
||||
UINT icon;
|
||||
UniFormat(tmp, sizeof(tmp), _UU("CM_LISTENER_TCP_PORT"), t.Ports[i]);
|
||||
|
||||
status = _UU("CM_LISTENER_ONLINE");
|
||||
icon = ICO_PROTOCOL;
|
||||
if (t.Errors[i])
|
||||
{
|
||||
status = _UU("CM_LISTENER_ERROR");
|
||||
icon = ICO_PROTOCOL_X;
|
||||
}
|
||||
else if (t.Enables[i] == false)
|
||||
{
|
||||
status = _UU("CM_LISTENER_OFFLINE");
|
||||
icon = ICO_PROTOCOL_OFFLINE;
|
||||
}
|
||||
|
||||
LvInsertAdd(b, icon, (void *)t.Ports[i], 2, tmp, status);
|
||||
status = _UU("CM_LISTENER_ERROR");
|
||||
icon = ICO_PROTOCOL_X;
|
||||
}
|
||||
LvInsertEnd(b, hWnd, L_LISTENER);
|
||||
FreeRpcListenerList(&t);
|
||||
else if (t2.Enables[i] == false)
|
||||
{
|
||||
status = _UU("CM_LISTENER_OFFLINE");
|
||||
icon = ICO_PROTOCOL_OFFLINE;
|
||||
}
|
||||
|
||||
LvInsertAdd(b, icon, (void *)t2.Ports[i], 2, tmp, status);
|
||||
}
|
||||
LvInsertEnd(b, hWnd, L_LISTENER);
|
||||
FreeRpcListenerList(&t2);
|
||||
}
|
||||
|
||||
// Get the DDNS client state
|
||||
@@ -19131,7 +19040,7 @@ ENTER_PASSWORD:
|
||||
pass = SmPassword(hWnd, s->ClientOption.Hostname);
|
||||
if (pass != NULL)
|
||||
{
|
||||
Hash(s->HashedPassword, pass, StrLen(pass), true);
|
||||
Sha0(s->HashedPassword, pass, StrLen(pass));
|
||||
Free(pass);
|
||||
ok = true;
|
||||
}
|
||||
@@ -19176,7 +19085,7 @@ ENTER_PASSWORD:
|
||||
RPC_TEST flag;
|
||||
bool cancel = false;
|
||||
|
||||
Hash(test, "", 0, true);
|
||||
Sha0(test, "", 0);
|
||||
|
||||
if (Cmp(test, s->HashedPassword, SHA1_SIZE) == 0 || Cmp(test, rpc->VpnServerHashedPassword, SHA1_SIZE) == 0)
|
||||
{
|
||||
@@ -19437,6 +19346,7 @@ void SmEditSettingDlgInit(HWND hWnd, SM_EDIT_SETTING *p)
|
||||
Check(hWnd, R_DIRECT_TCP, s->ClientOption.ProxyType == PROXY_DIRECT);
|
||||
Check(hWnd, R_HTTPS, s->ClientOption.ProxyType == PROXY_HTTP);
|
||||
Check(hWnd, R_SOCKS, s->ClientOption.ProxyType == PROXY_SOCKS);
|
||||
Check(hWnd, R_SOCKS5, s->ClientOption.ProxyType == PROXY_SOCKS5);
|
||||
|
||||
// Management mode setting
|
||||
Check(hWnd, R_SERVER_ADMIN, s->ServerAdminMode);
|
||||
@@ -19453,7 +19363,7 @@ void SmEditSettingDlgInit(HWND hWnd, SM_EDIT_SETTING *p)
|
||||
{
|
||||
UCHAR test[SHA1_SIZE];
|
||||
|
||||
Hash(test, "", 0, true);
|
||||
Sha0(test, "", 0);
|
||||
if (Cmp(test, s->HashedPassword, SHA1_SIZE) != 0)
|
||||
{
|
||||
SetTextA(hWnd, E_PASSWORD, HIDDEN_PASSWORD);
|
||||
@@ -19588,7 +19498,7 @@ void SmEditSettingDlgUpdate(HWND hWnd, SM_EDIT_SETTING *p)
|
||||
GetTxtA(hWnd, E_PASSWORD, tmp, sizeof(tmp));
|
||||
if (StrCmp(tmp, HIDDEN_PASSWORD) != 0)
|
||||
{
|
||||
Hash(s->HashedPassword, tmp, StrLen(tmp), true);
|
||||
Sha0(s->HashedPassword, tmp, StrLen(tmp));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19790,7 +19700,7 @@ bool SmAddSettingDlg(HWND hWnd, wchar_t *new_name, UINT new_name_size)
|
||||
if (SmGetSetting(tmp) == NULL)
|
||||
{
|
||||
UniStrCpy(s.Title, sizeof(s.Title), tmp);
|
||||
Hash(s.HashedPassword, "", 0, true);
|
||||
Sha0(s.HashedPassword, "", 0);
|
||||
s.ServerAdminMode = true;
|
||||
break;
|
||||
}
|
||||
@@ -20114,7 +20024,7 @@ void SmInitDefaultSettingList()
|
||||
|
||||
UniStrCpy(s->Title, sizeof(s->Title), _UU("SM_LOCALHOST"));
|
||||
s->ServerAdminMode = true;
|
||||
Hash(s->HashedPassword, "", 0, true);
|
||||
Sha0(s->HashedPassword, "", 0);
|
||||
UniStrCpy(s->ClientOption.AccountName, sizeof(s->ClientOption.AccountName), s->Title);
|
||||
StrCpy(s->ClientOption.Hostname, sizeof(s->ClientOption.Hostname), "localhost");
|
||||
s->ClientOption.Port = GC_DEFAULT_PORT;
|
||||
@@ -20273,7 +20183,7 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
|
||||
|
||||
// Updater start
|
||||
sm->Update = InitUpdateUi(_UU("PRODUCT_NAME_VPN_SMGR"), NAME_OF_VPN_SERVER_MANAGER, NULL, GetCurrentBuildDate(),
|
||||
CEDAR_BUILD, CEDAR_VER, NULL, false);
|
||||
CEDAR_VERSION_BUILD, GetCedarVersionNumber(), NULL, false);
|
||||
break;
|
||||
|
||||
case WM_TIMER:
|
||||
@@ -20613,7 +20523,7 @@ void SmParseCommandLine()
|
||||
b = StrToBin(password);
|
||||
if (b == NULL || b->Size != SHA1_SIZE)
|
||||
{
|
||||
Hash(s->HashedPassword, password, StrLen(password), true);
|
||||
Sha0(s->HashedPassword, password, StrLen(password));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.h
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// SMInner.h
|
||||
|
||||
+29
-125
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// SW.c
|
||||
@@ -665,7 +559,7 @@ bool SwSfxCopyVgFiles(HWND hWnd, wchar_t *src, wchar_t *dst)
|
||||
}
|
||||
|
||||
msg = L"The file \"%s\" was not found on the directory which the installer \"%s\" is located on.\r\n\r\n"
|
||||
L"To continue the installation, the file \"%s\" is required on the same direcotry.\r\n"
|
||||
L"To continue the installation, the file \"%s\" is required on the same directory.\r\n"
|
||||
L"If you have extracted the installer from a ZIP archive, you have to also extract the file \"%s\" from the ZIP archive together.";
|
||||
|
||||
MsgBoxEx(hWnd, MB_ICONINFORMATION, msg, srcfilename, exefilename, srcfilename, srcfilename);
|
||||
@@ -783,7 +677,14 @@ UINT SWExec()
|
||||
MayaquaMinimalMode();
|
||||
}
|
||||
|
||||
#if defined(_DEBUG) || defined(DEBUG) // In VC++ compilers, the macro is "_DEBUG", not "DEBUG".
|
||||
// If set memcheck = true, the program will be vitally slow since it will log all malloc() / realloc() / free() calls to find the cause of memory leak.
|
||||
// For normal debug we set memcheck = false.
|
||||
// Please set memcheck = true if you want to test the cause of memory leaks.
|
||||
InitMayaqua(false, true, 0, NULL);
|
||||
#else
|
||||
InitMayaqua(false, false, 0, NULL);
|
||||
#endif
|
||||
InitCedar();
|
||||
|
||||
if (is_datafile_exists == false)
|
||||
@@ -896,9 +797,7 @@ void SwGenerateDefaultSfxFileName(wchar_t *name, UINT size)
|
||||
}
|
||||
|
||||
UniFormat(name, size, L"easy-" GC_SW_SOFTETHER_PREFIX_W L"vpnclient-v%u.%02u-%u-%04u-%02u-%02u-windows.exe",
|
||||
CEDAR_VER / 100,
|
||||
CEDAR_VER % 100,
|
||||
CEDAR_BUILD,
|
||||
CEDAR_VERSION_MAJOR, CEDAR_VERSION_MINOR, CEDAR_VERSION_BUILD,
|
||||
BUILD_DATE_Y, BUILD_DATE_M, BUILD_DATE_D);
|
||||
}
|
||||
|
||||
@@ -912,9 +811,7 @@ void SwGenerateDefaultZipFileName(wchar_t *name, UINT size)
|
||||
}
|
||||
|
||||
UniFormat(name, size, L"web-" GC_SW_SOFTETHER_PREFIX_W L"vpnclient-v%u.%02u-%u-%04u-%02u-%02u-windows.zip",
|
||||
CEDAR_VER / 100,
|
||||
CEDAR_VER % 100,
|
||||
CEDAR_BUILD,
|
||||
CEDAR_VERSION_MAJOR, CEDAR_VERSION_MINOR, CEDAR_VERSION_BUILD,
|
||||
BUILD_DATE_Y, BUILD_DATE_M, BUILD_DATE_D);
|
||||
}
|
||||
|
||||
@@ -1759,7 +1656,7 @@ UINT SwFinish(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, WIZARD *wizard,
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Error occuring screen
|
||||
// Error occurring screen
|
||||
UINT SwError(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, WIZARD *wizard, WIZARD_PAGE *wizard_page, void *param)
|
||||
{
|
||||
SW *sw = (SW *)param;
|
||||
@@ -2941,15 +2838,13 @@ bool SwWebMain(SW *sw, WIZARD_PAGE *wp)
|
||||
char package_name[MAX_SIZE];
|
||||
ZIP_PACKER *z = NULL;
|
||||
|
||||
ToStr(ver_major, CEDAR_VER / 100);
|
||||
ToStr(ver_minor, CEDAR_VER % 100);
|
||||
ToStr(ver_build, CEDAR_BUILD);
|
||||
ToStr(ver_major, CEDAR_VERSION_MAJOR);
|
||||
ToStr(ver_minor, CEDAR_VERSION_MINOR);
|
||||
ToStr(ver_build, CEDAR_VERSION_BUILD);
|
||||
|
||||
Format(package_name, sizeof(package_name),
|
||||
GC_SW_SOFTETHER_PREFIX "vpnclient-v%u.%02u-%u-%04u-%02u-%02u-windows.exe",
|
||||
CEDAR_VER / 100,
|
||||
CEDAR_VER % 100,
|
||||
CEDAR_BUILD,
|
||||
CEDAR_VERSION_MAJOR, CEDAR_VERSION_MINOR, CEDAR_VERSION_BUILD,
|
||||
BUILD_DATE_Y, BUILD_DATE_M, BUILD_DATE_D);
|
||||
|
||||
GetCurrentLang(¤t_lang);
|
||||
@@ -3947,7 +3842,7 @@ L_RETRY_LOG:
|
||||
|
||||
sw->LogFile->IsSystemMode = sw->IsSystemMode;
|
||||
sw->LogFile->Component = sw->CurrentComponent;
|
||||
sw->LogFile->Build = CEDAR_BUILD;
|
||||
sw->LogFile->Build = CEDAR_VERSION_BUILD;
|
||||
|
||||
if (SwSaveLogFile(sw, log_filename, sw->LogFile) == false)
|
||||
{
|
||||
@@ -3978,7 +3873,7 @@ L_RETRY_LOG:
|
||||
MsRegWriteStrEx2W(sw->IsSystemMode ? REG_LOCAL_MACHINE : REG_CURRENT_USER,
|
||||
keyname, "InstalledDir", sw->InstallDir, false, true);
|
||||
MsRegWriteIntEx2(sw->IsSystemMode ? REG_LOCAL_MACHINE : REG_CURRENT_USER,
|
||||
keyname, "InstalledBuild", CEDAR_BUILD, false, true);
|
||||
keyname, "InstalledBuild", CEDAR_VERSION_BUILD, false, true);
|
||||
|
||||
// Set the language to registry
|
||||
MsRegWriteStrEx2(REG_CURRENT_USER, SW_REG_KEY, "Last User Language",
|
||||
@@ -4155,7 +4050,7 @@ L_RETRY_LINK:
|
||||
{
|
||||
// Show the error message if it fails
|
||||
UINT msgret;
|
||||
UniFormat(tmp, sizeof(tmp), _UU("SW_PERFORM_MSG_CRAETE_LINK_ERROR"), lnk_fullpath);
|
||||
UniFormat(tmp, sizeof(tmp), _UU("SW_PERFORM_MSG_CREATE_LINK_ERROR"), lnk_fullpath);
|
||||
msgret = SwPerformMsgBox(wp, MB_ICONEXCLAMATION | MB_YESNO, tmp);
|
||||
|
||||
if (msgret == IDYES)
|
||||
@@ -5032,7 +4927,7 @@ UINT SwDir(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, WIZARD *wizard, WI
|
||||
break;
|
||||
}
|
||||
|
||||
if (logfile != NULL && (logfile->Build > CEDAR_BUILD) && UniIsEmptyStr(sw->auto_setting_path) == false &&
|
||||
if (logfile != NULL && (logfile->Build > CEDAR_VERSION_BUILD) && UniIsEmptyStr(sw->auto_setting_path) == false &&
|
||||
sw->CurrentComponent->Id == SW_CMP_VPN_CLIENT && logfile->Component->Id == SW_CMP_VPN_CLIENT)
|
||||
{
|
||||
// In the case of the VPN Client, show a message if a newer version is installed and
|
||||
@@ -5054,7 +4949,7 @@ UINT SwDir(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, WIZARD *wizard, WI
|
||||
{
|
||||
errmsg = _UU("SW_DIR_DST_IS_OTHER_PRODUCT");
|
||||
}
|
||||
else if ((skip_ver_check == false) && (logfile->Build > CEDAR_BUILD))
|
||||
else if ((skip_ver_check == false) && (logfile->Build > CEDAR_VERSION_BUILD))
|
||||
{
|
||||
errmsg = _UU("SW_DIR_DST_IS_NEWER");
|
||||
}
|
||||
@@ -5745,6 +5640,15 @@ UINT SwWelcomeDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, WIZARD *wiz
|
||||
break;
|
||||
}
|
||||
|
||||
if (MsIsKB3033929RequiredAndMissing())
|
||||
{
|
||||
// KB3033929 is missing
|
||||
if (MsgBoxEx(hWnd, MB_ICONINFORMATION | MB_OKCANCEL, _UU("SW_KB3033929_REQUIRED")) == IDCANCEL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sw->DoubleClickBlocker)
|
||||
{
|
||||
break;
|
||||
|
||||
-106
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// SW.h
|
||||
|
||||
@@ -1,111 +1,5 @@
|
||||
// SoftEther VPN Source Code - Developer Edition Master Branch
|
||||
// Cedar Communication Module
|
||||
//
|
||||
// SoftEther VPN Server, Client and Bridge are free software under GPLv2.
|
||||
//
|
||||
// Copyright (c) Daiyuu Nobori.
|
||||
// Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
|
||||
// Copyright (c) SoftEther Corporation.
|
||||
//
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// http://www.softether.org/
|
||||
//
|
||||
// Author: Daiyuu Nobori, Ph.D.
|
||||
// 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.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version 2
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// THE LICENSE AGREEMENT IS ATTACHED ON THE SOURCE-CODE PACKAGE
|
||||
// AS "LICENSE.TXT" FILE. READ THE TEXT FILE IN ADVANCE TO USE THE SOFTWARE.
|
||||
//
|
||||
//
|
||||
// THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN,
|
||||
// UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY,
|
||||
// MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS
|
||||
// SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS
|
||||
// SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER
|
||||
// CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL
|
||||
// DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING,
|
||||
// MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR
|
||||
// SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND
|
||||
// CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO
|
||||
// EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO,
|
||||
// JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION
|
||||
// AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN
|
||||
// THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
|
||||
//
|
||||
// USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS
|
||||
// YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY
|
||||
// CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS
|
||||
// SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE
|
||||
// SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO
|
||||
// COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING
|
||||
// PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR
|
||||
// CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE
|
||||
// NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR
|
||||
// INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+
|
||||
// COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE
|
||||
// WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY
|
||||
// COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE
|
||||
// COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE
|
||||
// SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR
|
||||
// COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO
|
||||
// RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
|
||||
// RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT
|
||||
// JUST A STATEMENT FOR WARNING AND DISCLAIMER.
|
||||
//
|
||||
//
|
||||
// SOURCE CODE CONTRIBUTION
|
||||
// ------------------------
|
||||
//
|
||||
// Your contribution to SoftEther VPN Project is much appreciated.
|
||||
// Please send patches to us through GitHub.
|
||||
// Read the SoftEther VPN Patch Acceptance Policy in advance:
|
||||
// http://www.softether.org/5-download/src/9.patch
|
||||
//
|
||||
//
|
||||
// DEAR SECURITY EXPERTS
|
||||
// ---------------------
|
||||
//
|
||||
// If you find a bug or a security vulnerability please kindly inform us
|
||||
// about the problem immediately so that we can fix the security problem
|
||||
// to protect a lot of users around the world as soon as possible.
|
||||
//
|
||||
// Our e-mail address for security reports is:
|
||||
// softether-vpn-security [at] softether.org
|
||||
//
|
||||
// Please note that the above e-mail address is not a technical support
|
||||
// inquiry address. If you need technical assistance, please visit
|
||||
// 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.
|
||||
|
||||
|
||||
// SWInner.h
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user