- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/filter.php
- Класс: CSecurityFilter
- Вызов: CSecurityFilter::blockCurrentUser
protected function blockCurrentUser($ip = "")
{
if(self::currentUserHaveRightsForSkip())
return false;
if(!is_string($ip) || $ip === "")
$ip = $_SERVER["REMOTE_ADDR"];
$rule = new CSecurityIPRule;
CTimeZone::Disable();
$startTimestamp = ConvertTimeStamp(false, "FULL");
$endTimestamp = ConvertTimeStamp(time()+COption::getOptionInt("security", "filter_duration")*60, "FULL");
$ruleList = $rule->GetList(array("ID"), array(
"=RULE_TYPE" => "A",
"=ACTIVE" => "Y",
"=ADMIN_SECTION" => "Y",
"=NAME" => getMessage("SECURITY_FILTER_IP_RULE", array("#IP#" => $ip)),
"<=ACTIVE_FROM" => $startTimestamp,
"<=ACTIVE_TO" => $endTimestamp,
), array("ID" => "DESC"));
while ($prevRule = $ruleList->Fetch())
{
if ($rule->Update($prevRule['ID'], array("ACTIVE_TO" => $endTimestamp)))
{
CTimeZone::Enable();
return true;
}
break;
}
$added = $rule->Add(array(
"RULE_TYPE" => "A",
"ACTIVE" => "Y",
"ADMIN_SECTION" => "Y",
"NAME" => getMessage("SECURITY_FILTER_IP_RULE", array("#IP#" => $ip)),
"ACTIVE_FROM" => $startTimestamp,
"ACTIVE_TO" => $endTimestamp,
"INCL_IPS" => array($ip),
"INCL_MASKS" => array("/*"),
));
CTimeZone::Enable();
return ($added > 0);
}