mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-07-07 08:14:58 +03:00
- Fixed the problem occurs when RPC messages between Cluster Members exceed 64Kbytes.
- Fixed the RADIUS PEAP client to use the standard TLS versioning. - Implementation of a function to fix the MAC address of L3 VPN protocol by entering e.g. "MAC: 112233445566" in the "Notes" field of the user information. - Implementation of a function to fix the virtual MAC address to be assigned to the L3 VPN client as a string attribute from RADIUS server when authentication.
This commit is contained in:
@ -1788,6 +1788,7 @@ bool ServerAccept(CONNECTION *c)
|
||||
UINT authtype;
|
||||
POLICY *policy;
|
||||
UINT assigned_vlan_id = 0;
|
||||
UCHAR assigned_ipc_mac_address[6];
|
||||
HUB *hub;
|
||||
SESSION *s = NULL;
|
||||
UINT64 user_expires = 0;
|
||||
@ -1856,6 +1857,8 @@ bool ServerAccept(CONNECTION *c)
|
||||
|
||||
Zero(ctoken_hash_str, sizeof(ctoken_hash_str));
|
||||
|
||||
Zero(assigned_ipc_mac_address, sizeof(assigned_ipc_mac_address));
|
||||
|
||||
Zero(mschap_v2_server_response_20, sizeof(mschap_v2_server_response_20));
|
||||
|
||||
Zero(&udp_acceleration_client_ip, sizeof(udp_acceleration_client_ip));
|
||||
@ -2190,6 +2193,7 @@ bool ServerAccept(CONNECTION *c)
|
||||
PackGetStr(p, "inproc_postfix", c->InProcPrefix, sizeof(c->InProcPrefix));
|
||||
Zero(tmp, sizeof(tmp));
|
||||
PackGetStr(p, "inproc_cryptname", tmp, sizeof(tmp));
|
||||
c->InProcLayer = PackGetInt(p, "inproc_layer");
|
||||
|
||||
if (c->FirstSock != NULL)
|
||||
{
|
||||
@ -2214,6 +2218,9 @@ bool ServerAccept(CONNECTION *c)
|
||||
}
|
||||
|
||||
use_udp_acceleration_client = false;
|
||||
|
||||
Format(radius_login_opt.In_VpnProtocolState, sizeof(radius_login_opt.In_VpnProtocolState),
|
||||
"L%u:%s", c->InProcLayer, c->InProcPrefix);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2227,6 +2234,9 @@ bool ServerAccept(CONNECTION *c)
|
||||
{
|
||||
c->CipherName = CopyStr(c->FirstSock->CipherName);
|
||||
}
|
||||
|
||||
Format(radius_login_opt.In_VpnProtocolState, sizeof(radius_login_opt.In_VpnProtocolState),
|
||||
"L%u:%s", IPC_LAYER_2, "SEVPN");
|
||||
}
|
||||
|
||||
if (support_bulk_on_rudp && c->FirstSock != NULL && c->FirstSock->IsRUDPSocket &&
|
||||
@ -2784,11 +2794,19 @@ bool ServerAccept(CONNECTION *c)
|
||||
}
|
||||
}
|
||||
|
||||
// Check the assigned MAC Address
|
||||
if (radius_login_opt.Out_IsRadiusLogin)
|
||||
{
|
||||
Copy(assigned_ipc_mac_address, radius_login_opt.Out_VirtualMacAddress, 6);
|
||||
}
|
||||
|
||||
if (StrCmpi(username, ADMINISTRATOR_USERNAME) != 0)
|
||||
{
|
||||
// Get the policy
|
||||
if (farm_member == false)
|
||||
{
|
||||
bool is_asterisk_user = false;
|
||||
|
||||
// In the case of not a farm member
|
||||
user = AcGetUser(hub, username);
|
||||
if (user == NULL)
|
||||
@ -2803,12 +2821,29 @@ bool ServerAccept(CONNECTION *c)
|
||||
error_detail = "AcGetUser";
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
is_asterisk_user = true;
|
||||
}
|
||||
|
||||
policy = NULL;
|
||||
|
||||
Lock(user->lock);
|
||||
{
|
||||
if (is_asterisk_user == false)
|
||||
{
|
||||
UCHAR associated_mac_address[6];
|
||||
|
||||
// Get the associated virtual MAC address
|
||||
if (GetUserMacAddressFromUserNote(associated_mac_address, user->Note))
|
||||
{
|
||||
if (IsZero(assigned_ipc_mac_address, 6))
|
||||
{
|
||||
WHERE;
|
||||
Copy(assigned_ipc_mac_address, associated_mac_address, 6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the expiration date
|
||||
user_expires = user->ExpireTime;
|
||||
|
||||
@ -3478,7 +3513,8 @@ bool ServerAccept(CONNECTION *c)
|
||||
|
||||
// Create a Session
|
||||
StrLower(username);
|
||||
s = NewServerSessionEx(c->Cedar, c, hub, username, policy, c->IsInProc);
|
||||
s = NewServerSessionEx(c->Cedar, c, hub, username, policy, c->IsInProc,
|
||||
(c->IsInProc && IsZero(assigned_ipc_mac_address, 6) == false) ? assigned_ipc_mac_address : NULL);
|
||||
|
||||
s->EnableUdpRecovery = enable_udp_recovery;
|
||||
s->LocalHostSession = local_host_session;
|
||||
|
Reference in New Issue
Block a user