- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/iprule.php
- Класс: CSecurityIPRule
- Вызов: CSecurityIPRule::CheckIP
function CheckIP($arInclIPs=false, $arExclIPs=false)
{
global $APPLICATION;
$idFound = null;
$ip2check = self::ip2number($_SERVER["REMOTE_ADDR"]);
if($ip2check > 0 && is_array($arInclIPs))
{
foreach($arInclIPs as $id => $ip)
{
$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
if($ip)
{
$ar = explode("-", $ip);
$ip1 = self::ip2number($ar[0]);
$ip2 = isset($ar[1]) ? self::ip2number($ar[1]) : 0;
if($ip2 <= 0)
$ip2 = $ip1;
if($ip2check >= $ip1 && $ip2check <= $ip2)
{
$idFound = $id;
break;
}
}
}
}
if($idFound !== null && $ip2check > 0 && is_array($arExclIPs))
{
foreach($arExclIPs as $id => $ip)
{
$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
if($ip)
{
$ar = explode("-", $ip);
$ip1 = self::ip2number($ar[0]);
$ip2 = isset($ar[1]) ? self::ip2number($ar[1]) : 0;
if($ip2 <= 0)
$ip2 = $ip1;
if($ip2check >= $ip1 && $ip2check <= $ip2)
{
$idFound = null;
break;
}
}
}
}
if($idFound !== null)
{
if(COption::GetOptionString("security", "ipcheck_allow_self_block")==="Y")
$text = GetMessage("SECURITY_IPRULE_ERROR_SELF_BLOCK", array("#IP#" => htmlspecialcharsEx($_SERVER["REMOTE_ADDR"])));
else
$text = GetMessage("SECURITY_IPRULE_ERROR_SELF_BLOCK_2", array("#IP#" => htmlspecialcharsEx($_SERVER["REMOTE_ADDR"])));
$e = new CAdminException(array(
array(
"id"=>"IPS[".htmlspecialcharsEx($idFound)."]",
"text"=>$text,
),
));
$APPLICATION->ThrowException($e);
$this->LAST_ERROR = $e->GetString();
return true;
}
else
{
$this->LAST_ERROR = "";
return false;
}
}