- Модуль: ldap
- Путь к файлу: ~/bitrix/modules/ldap/classes/general/ldap_util.php
- Класс: CLdapUtil
- Вызов: CLdapUtil::IsIpFromNet
static function IsIpFromNet($ip, $netsAndMasks)
{
if((string)$ip === "")
{
return false;
}
if((string)$netsAndMasks === "")
{
return false;
}
$arNetsMasks = explode(";", $netsAndMasks);
foreach ($arNetsMasks as $netAndMask)
{
$netAndMask = trim($netAndMask);
if(!$netAndMask)
continue;
if((!preg_match("#^(d{1,3}.){3,3}(d{1,3})/(d{1,3}.){3,3}(d{1,3})$#",$netAndMask) && !preg_match("#^(d{1,3}.){3,3}(d{1,3})/(d{1,3})$#",$netAndMask)) || !preg_match("#^(d{1,3}.){3,3}(d{1,3})$#",$ip))
continue;
$arNetAndMask = explode("/", $netAndMask);
$net = $arNetAndMask[0];
if(mb_strpos($arNetAndMask[1], ".") !== false) //xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx
$mask = $arNetAndMask[1];
else //xxx.xxx.xxx.xxx/xx -> xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx
$mask=long2ip('11111111111111111111111111111111'<<(32-$arNetAndMask[1]));
$newNet = long2ip(ip2long($ip) & ip2long($mask));
if($newNet == $net)
return true;
else
continue;
}
return false;
}