- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/iprule.php
- Класс: CSecurityIPRule
- Вызов: CSecurityIPRule::UpdateRuleIPs
function UpdateRuleIPs($IPRULE_ID, $arInclIPs=false, $arExclIPs=false)
{
global $DB, $CACHE_MANAGER;
$IPRULE_ID = intval($IPRULE_ID);
if(!$IPRULE_ID)
return false;
if(is_array($arInclIPs))
{
$res = $DB->Query("DELETE FROM b_sec_iprule_incl_ip WHERE IPRULE_ID = ".$IPRULE_ID, false, "File: ".__FILE__."
Line: ".__LINE__);
if($res)
{
$added = array();
$i = 10;
foreach($arInclIPs as $ip)
{
$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
if($ip && !array_key_exists($ip, $added))
{
$ar = explode("-", $ip);
$ip1 = self::ip2number($ar[0]);
$ip2 = isset($ar[1]) ? self::ip2number($ar[1]) : 0;
if($ip2 <= 0)
$ip2 = $ip1;
$arIP = array(
"ID" => 1,
"IPRULE_ID" => $IPRULE_ID,
"RULE_IP" => $ip,
"SORT" => $i,
"~IP_START" => $ip1,
"~IP_END" => $ip2,
);
$DB->Add("b_sec_iprule_incl_ip", $arIP);
$i += 10;
$added[$ip] = true;
}
}
if(CACHED_b_sec_iprule !== false)
$CACHE_MANAGER->CleanDir("b_sec_iprule");
}
}
if(is_array($arExclIPs))
{
$res = $DB->Query("DELETE FROM b_sec_iprule_excl_ip WHERE IPRULE_ID = ".$IPRULE_ID, false, "File: ".__FILE__."
Line: ".__LINE__);
if($res)
{
$added = array();
$i = 10;
foreach($arExclIPs as $ip)
{
$ip = preg_replace("/[\s]/".BX_UTF_PCRE_MODIFIER, "", $ip);
if($ip && !array_key_exists($ip, $added))
{
$ar = explode("-", $ip);
$ip1 = self::ip2number($ar[0]);
$ip2 = isset($ar[1]) ? self::ip2number($ar[1]) : 0;
if($ip2 <= 0)
$ip2 = $ip1;
$arIP = array(
"ID" => 1,
"IPRULE_ID" => $IPRULE_ID,
"RULE_IP" => $ip,
"SORT" => $i,
"~IP_START" => $ip1,
"~IP_END" => $ip2,
);
$DB->Add("b_sec_iprule_excl_ip", $arIP);
$i += 10;
$added[$ip] = true;
}
}
if(CACHED_b_sec_iprule !== false)
$CACHE_MANAGER->CleanDir("b_sec_iprule");
}
}
return true;
}