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