• Модуль: 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;
	}
}