- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/iprule.php
- Класс: CSecurityIPRule
- Вызов: CSecurityIPRule::UpdateRuleMasks
static function UpdateRuleMasks($IPRULE_ID, $arInclMasks = false, $arExclMasks = false)
{
global $DB, $CACHE_MANAGER;
$IPRULE_ID = intval($IPRULE_ID);
if(!$IPRULE_ID)
return false;
$arLikeSearch = array("?", "*", ".");
$arLikeReplace = array("_", "%", "\.");
$arPregSearch = array("\", ".", "?", "*", "'");
$arPregReplace = array("/", "\.", ".", ".*?", "\'");
if(is_array($arInclMasks))
{
$res = $DB->Query("DELETE FROM b_sec_iprule_incl_mask WHERE IPRULE_ID = ".$IPRULE_ID, false, "File: ".__FILE__."
Line: ".__LINE__);
if($res)
{
$added = array();
$i = 10;
foreach($arInclMasks as $mask)
{
$mask = trim($mask);
if($mask && !array_key_exists($mask, $added))
{
$arMask = array(
"ID" => 1,
"IPRULE_ID" => $IPRULE_ID,
"RULE_MASK" => $mask,
"SORT" => $i,
"LIKE_MASK" => str_replace($arLikeSearch, $arLikeReplace, $mask),
"PREG_MASK" => str_replace($arPregSearch, $arPregReplace, $mask),
);
$DB->Add("b_sec_iprule_incl_mask", $arMask);
$i += 10;
$added[$mask] = true;
}
}
if(CACHED_b_sec_iprule !== false)
$CACHE_MANAGER->CleanDir("b_sec_iprule");
}
}
if(is_array($arExclMasks))
{
$res = $DB->Query("DELETE FROM b_sec_iprule_excl_mask WHERE IPRULE_ID = ".$IPRULE_ID, false, "File: ".__FILE__."
Line: ".__LINE__);
if($res)
{
$added = array();
$i = 10;
foreach($arExclMasks as $mask)
{
$mask = trim($mask);
if($mask && !array_key_exists($mask, $added))
{
$arMask = array(
"ID" => 1,
"IPRULE_ID" => $IPRULE_ID,
"RULE_MASK" => $mask,
"SORT" => $i,
"LIKE_MASK" => str_replace($arLikeSearch, $arLikeReplace, $mask),
"PREG_MASK" => str_replace($arPregSearch, $arPregReplace, $mask),
);
$DB->Add("b_sec_iprule_excl_mask", $arMask);
$i += 10;
$added[$mask] = true;
}
}
if(CACHED_b_sec_iprule !== false)
$CACHE_MANAGER->CleanDir("b_sec_iprule");
}
}
return true;
}