1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-22 17:39:53 +03:00

adminip.txt CIDR Support

This commit is contained in:
ELIN 2014-01-26 02:51:34 +00:00
parent 001fd910fe
commit d38762941f

View File

@ -13212,6 +13212,9 @@ bool CheckAdminSourceAddress(SOCK *sock, char *hubname)
UINT i; UINT i;
TOKEN_LIST *t; TOKEN_LIST *t;
IP ip; IP ip;
IP mask;
IP ip1;
IP ip2;
s = CfgReadNextLine(b); s = CfgReadNextLine(b);
if (s == NULL) if (s == NULL)
@ -13242,7 +13245,30 @@ bool CheckAdminSourceAddress(SOCK *sock, char *hubname)
{ {
if (t->NumTokens == 1 || StrCmpi(hubname, t->Token[1]) == 0) if (t->NumTokens == 1 || StrCmpi(hubname, t->Token[1]) == 0)
{ {
if (StrToIP(&ip, t->Token[0])) if (ParseIpAndMask46(t->Token[0], &ip, &mask))
{
if (IsIP4(&sock->RemoteIP) && IsIP4(&ip))
{
IPAnd4(&ip1, &sock->RemoteIP, &mask);
IPAnd4(&ip2, &ip, &mask);
if (CmpIpAddr(&ip1, &ip2) == 0)
{
ok = true;
}
}
else if (IsIP6(&sock->RemoteIP) && IsIP6(&ip))
{
IPAnd6(&ip1, &sock->RemoteIP, &mask);
IPAnd6(&ip2, &ip, &mask);
if (CmpIpAddr(&ip1, &ip2) == 0)
{
ok = true;
}
}
}
else if (StrToIP(&ip, t->Token[0]))
{ {
if (CmpIpAddr(&sock->RemoteIP, &ip) == 0) if (CmpIpAddr(&sock->RemoteIP, &ip) == 0)
{ {