filename=$filename; $this->timeout=$timeout; $this->AGENTS=Array(); $this->log=""; } /* */ /* Задает имя лог-файла. Если имя файла пустое, то лог-файл */ /* не испольщуется */ /* */ function SetLogFileName($filename) { $this->log=$filename; } /* */ /* Проверка IP адреса на нахождение в бан-листе. */ /* */ /* Если $http_errror==0, то возвращает true, если IP адрес */ /* забанен, и false, если IP адрес разрешен. */ /* */ /* Если $http_error==404 и IP адрес забанен, то выводится */ /* стандартная страница 404 сервера Apache */ /* */ /* Если $http_error==403 и IP адрес забанен, то выводится */ /* стандартная страница 403 сервера Apache */ /* */ function Check($http_error=0) { GLOBAL $HTTP_SERVER_VARS; $ip1=$HTTP_SERVER_VARS["REMOTE_ADDR"]; $ip2=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; $ip1=str_replace(":","_",$ip1); $ip2=str_replace(":","_",$ip2); $curtime=time(); $d=@file($this->filename); if (!is_array($d)) {print "Ошибка чтения из файла "".$this->filename."".";return(false);} $found=false; for ($i=0;$itimeout>$curtime) {$found=true;break;} } if ($http_error==404 && $found==true) { header("HTTP/1.0 404 Not Found"); die("\n\n404 Not Found\n\n

Not Found

\nThe requested URL ".$HTTP_SERVER_VARS["REQUEST_URI"]." was not found on this server.

\n


\n".$HTTP_SERVER_VARS["SERVER_SIGNATURE"]."\n"); } if ($http_error==403 && $found==true) { header("HTTP/1.0 403 Forbidden"); die("\n\n403 Forbidden\n\n

Forbidden

\nYou don't have permission to access ".$HTTP_SERVER_VARS["REQUEST_URI"]."\non this server.

\n


\n".$HTTP_SERVER_VARS["SERVER_SIGNATURE"]."\n"); } return($found); } /* */ /* Добавления IP адреса в бан-лист */ /* */ function Ban() { GLOBAL $HTTP_SERVER_VARS; $agent=" ".$HTTP_SERVER_VARS["HTTP_USER_AGENT"]; for ($i=0;$iAGENTS);$i++) { if (strpos($agent,$this->AGENTS[$i])) return; } $ip1=$HTTP_SERVER_VARS["REMOTE_ADDR"]; $ip2=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; $ip1=str_replace(":","_",$ip1); $ip2=str_replace(":","_",$ip2); $curtime=time(); $d=@file($this->filename); if (!is_array($d)) {print "Ошибка чтения из файла "".$this->filename."".";} for ($i=0;$ilog)) { $fw=fopen($this->log,"at"); if ($fw) { fputs($fw, date("Y-m-d H:i:s")." [".$ip1."|".$ip2."]".$agent."\n"); fclose($fw); } } $d[]=$curtime." : ".$ip1." : ".$ip2."\n"; } $fw=@fopen($this->filename,"wt"); if (!$fw) {print "Ошибка записи в файла "".$this->filename."".";return;} foreach ($d as $e) fputs($fw,$e); fclose($fw); } function AddAlowAgent($agent) { $this->AGENTS[]=$agent; } } ?>