• Модуль: security
  • Путь к файлу: ~/bitrix/modules/security/classes/general/iprule.php
  • Класс: CSecurityIPRule
  • Вызов: CSecurityIPRule::CheckFields
public function CheckFields(&$arFields, $ID)
{
	global $APPLICATION;

	$this->LAST_ERROR = "";
	$aMsg = array();

	if(array_key_exists("RULE_TYPE", $arFields))
	{
		if($arFields["RULE_TYPE"] !== "A")
			$arFields["RULE_TYPE"] = "M";

	}

	if(array_key_exists("SORT", $arFields))
	{
		if(intval($arFields["SORT"]) <= 0)
			$arFields["SORT"] = 500;
	}

	if(array_key_exists("NAME", $arFields))
	{
		$arFields["NAME"] = trim($arFields["NAME"]);
	}

	if(array_key_exists("ACTIVE_FROM", $arFields))
	{
		$arFields["ACTIVE_FROM_TIMESTAMP"] = MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat());
	}

	if(array_key_exists("ACTIVE_TO", $arFields))
	{
		$arFields["ACTIVE_TO_TIMESTAMP"] = MakeTimeStamp($arFields["ACTIVE_TO"], CSite::GetDateFormat());
	}

	if(array_key_exists("ACTIVE", $arFields))
	{
		$arFields["ACTIVE"] = $arFields["ACTIVE"] === "Y"? "Y": "N";
	}

	if(array_key_exists("ADMIN_SECTION", $arFields))
	{
		$arFields["ADMIN_SECTION"] = $arFields["ADMIN_SECTION"] === "Y"? "Y": "N";
	}

	if(array_key_exists("INCL_IPS", $arFields) && is_array($arFields["INCL_IPS"]))
	{
		foreach($arFields["INCL_IPS"] as $id => $ip)
		{
			$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
			if($ip)
			{
				$ar = explode("-", $ip);
				$ip1 = self::ip2number($ar[0]);

				if($ip1 <= 0)
				{
					$aMsg[] = array(
						"id"=>"INCL_IPS[".htmlspecialcharsEx($id)."]",
						"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP", array(
							"#IP#" => htmlspecialcharsEx($ar[0]),
						)),
					);
				}

				if(count($ar) > 1)
				{
					$ip2 = self::ip2number($ar[1]);
					if($ip2 <= 0)
					{
						$aMsg[] = array(
							"id"=>"INCL_IPS[".htmlspecialcharsEx($id)."]",
							"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP", array(
								"#IP#" => htmlspecialcharsEx($ar[1]),
							)),
						);
					}
					elseif($ip2 < $ip1)
					{
						$aMsg[] = array(
							"id"=>"INCL_IPS[".htmlspecialcharsEx($id)."]",
							"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP_RANGE", array(
								"#END_IP#" => htmlspecialcharsEx($ar[1]),
								"#START_IP#" => htmlspecialcharsEx($ar[0]),
							)),
						);
					}

					break;
				}
			}
		}
	}

	if(array_key_exists("EXCL_IPS", $arFields) && is_array($arFields["EXCL_IPS"]))
	{
		foreach($arFields["EXCL_IPS"] as $id => $ip)
		{
			$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
			if($ip)
			{
				$ar = explode("-", $ip);
				$ip1 = self::ip2number($ar[0]);

				if($ip1 <= 0)
				{
					$aMsg[] = array(
						"id"=>"EXCL_IPS[".htmlspecialcharsEx($id)."]",
						"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP", array(
							"#IP#" => htmlspecialcharsEx($ar[0]),
						)),
					);
				}

				if(count($ar) > 1)
				{
					$ip2 = self::ip2number($ar[1]);
					if($ip2 <= 0)
					{
						$aMsg[] = array(
							"id"=>"EXCL_IPS[".htmlspecialcharsEx($id)."]",
							"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP", array(
								"#IP#" => htmlspecialcharsEx($ar[1]),
							)),
						);
					}
					elseif($ip2 < $ip1)
					{
						$aMsg[] = array(
							"id"=>"EXCL_IPS[".htmlspecialcharsEx($id)."]",
							"text"=>GetMessage("SECURITY_IPRULE_ERROR_WONG_IP_RANGE", array(
								"#END_IP#" => htmlspecialcharsEx($ar[1]),
								"#START_IP#" => htmlspecialcharsEx($ar[0]),
							)),
						);
					}
					break;
				}
			}
		}
	}

	if(!empty($aMsg))
	{
		$e = new CAdminException($aMsg);
		$APPLICATION->ThrowException($e);
		$this->LAST_ERROR = $e->GetString();
		return false;
	}
	return true;
}