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