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