Файл: gamele.ru/AntiDDOS.php
Строк: 89
<?php
#(c) Boolean.
#####################################################################################
#####################################################################################
#####################################################################################
#####################################################################################
$config['time'] = 0.1;
#Время обращения к скрипту, после которого будет(возможно) выдан бан.
$config['countaban'] = 5;
#количество возможных нарушений времени обращения, такая возможность введена для более детально точного отделения пользователей от атакующих ботов.
$config['directory'] = $_SERVER["DOCUMENT_ROOT"].'/includes/database/antiddos/_temp';
#временна директория, должна существовать, и иметь права на запись.
$config['checkmask'] = 'check';
#маска для проверки, не стоит трогать.
$config['banmask'] = 'ban';
#маска для бана, не стоит трогать.
#Комманды после нарушения времени и кол-ва обращений. Используйте константу [IP] - IP Бота.
$config['commands'][] = 'iptables -A OUTPUT -s [IP] -j DROP';
$config['commands'][] = 'iptables -A INPUT -s [IP] -j DROP';
#Доверенные IP.
$config['white']['ip'] = @file($_SERVER["DOCUMENT_ROOT"].'/includes/database/antiddos/whiteips.txt');
#Доверенные ЮзерАгенты.
$config['white']['useragent'][] = 'Google bot';
$config['white']['useragent'][] = 'Yasha bot';
#Сообщение для пользователя. HTML Работает.
$config['message'] = file_get_contents($_SERVER["DOCUMENT_ROOT"].'/includes/database/antiddos/ddosmessage.html');
#####################################################################################
#####################################################################################
#####################################################################################
#####################################################################################
$ip = $_SERVER['REMOTE_ADDR'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
if ( ! is_dir($config['directory']) )
exit("Temp directory not found.");
if ( ! is_writable($config['directory']) )
exit("Temp directory is not writable.");
if ( @in_array($ip,$config['white']['ip']) || @in_array($useragent,$config['white']['useragent']) )
$white = true;
if ( ! $white ){
if ( file_exists( $config['directory'] . "/" . $config['checkmask'] . $ip ) ){
$time = filemtime($config['directory'] . "/" . $config['checkmask'] . $ip);
$f=fopen( $config['directory'] . "/" . $config['checkmask'] . $ip , 'w' );
fclose($f);
if ($time >= time() - $config['time']){
if (file_exists($config['directory'] . "/" . $config['banmask'] . $ip)){
$count = file_get_contents($config['directory'] . "/" . $config['banmask'] . $ip);
if ($count >= $config['countaban']){
for($i = 0; $i <= count($config['commands']) - 1; $i++){
passthru(str_replace("[IP]",$ip,$config['commands'][$i]),$ret);
echo($ret);
}
}else{
$time = filemtime($config['directory'] . "/" . $config['banmask'] . $ip);
if ($time >= time() - $config['time']){
$count++;
$f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );
fwrite($f,$count);
fclose($f);
}else{
$f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );
fwrite($f,"1");
fclose($f);
}
}
}else{
$f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );
fwrite($f,"0");
fclose($f);
}
exit($config['message']);
}
}else{
$f=fopen( $config['directory'] . "/" . $config['checkmask'] . $ip , 'w');
fclose($f);
}
}
?>