Размер файла: 3.21Kb
- <?
- #-----------------------------------------------------#
- # ********* TerrinCMS ********* #
- # Made by : Terrin #
- # E-mail : mali.kol@mail.ru #
- # WAP-Site : http://lorinz.ru #
- # ICQ : 344-20-52 #
- # Вы не имеете право вносить изменения в код скрипта #
- # для его дальнейшего распространения #
- #-----------------------------------------------------#
- # --- Если IP нет совсем --- #
-
- $ip = preg_replace('|[^0-9\.]|', '', $_SERVER['REMOTE_ADDR']);
- if ($ip == NULL){
- header("Location: /pages/banned.php?mode=no_ip"); exit;
- }
- if($_COOKIE['login'] == NULL){ // бан по IP
- $ban_ip = mysql_query('SELECT * FROM ban WHERE ip = "'.$ip.'"');
- if(mysql_num_rows($ban_ip) != 0){ header("Location: /pages/banned.php?mode=ip"); }
- } else { // бан юзера
- $ban = mysql_query('SELECT * FROM ban WHERE login = "'.$_COOKIE['login'].'"');
- if(mysql_num_rows($ban) != 0){ header("Location: /pages/banned.php?mode=user"); }
- }
- # --- Защита от Ддоса --- #
- $doslimit = 100;
- $trans = preg_replace('|[^0-9\.]|', '', $_SERVER['REMOTE_ADDR']);
- # ---------- Этап первый -- Удаляем просроченые записи -------------- #
- $time_off=mysql_query("SELECT * FROM `ddos`");
- while($set_or=mysql_fetch_array($time_off)){
- if($set_or['time'] <= time()){
- mysql_query('DELETE FROM `ddos` WHERE `id` = "'.$set_or['id'].'"');
- }
- }
- # ---------- Этап Второй -- Удаляем просроченые записи у данного ip -------------- #
- $time_off_ip=mysql_query('SELECT * FROM `ddos` WHERE ip = "'.$trans.'"');
- while($set_or_ip=mysql_fetch_array($time_off_ip)){
- if($set_or_ip['time'] <= time()){
- mysql_query('DELETE FROM `ddos` WHERE `id` = "'.$set_or_ip['id'].'"');
- }
- }
- /*
- # ---------- Этап Третий -- Записываем логи -------------- #
- $time = time() + 60;
- if (isset($_SERVER['REQUEST_URI'])) {$request_uri = urldecode(substr(strtok($_SERVER['REQUEST_URI'], 'S'), 1));}
- if (isset($_SERVER['HTTP_REFERER'])) {$http_referer = urldecode(strtok($_SERVER['HTTP_REFERER'], 'S'));} else {$http_referer = 'Не определено';}
- $arbuz = explode("/",$_SERVER['HTTP_USER_AGENT']);
- $arbuz = htmlspecialchars($arbuz[0]);
- if($_COOKIE['login'] == !NULL){$ddoser = $_COOKIE['login']; } else {$ddoser = 'Гость'; }
- mysql_query("INSERT INTO `ddos`(`time`, `ip`, `url`, `refer`, `brow`, `user`) VALUES ('".$time."','".$trans."','".$request_uri."','".$http_referer."','".$arbuz."','".$ddoser."');");
- */
- # ---------- Этап Четвертый -- Автоматическая блокировка -------------- #
- $count_ddos=mysql_result(mysql_query("SELECT COUNT(*) FROM `ddos` WHERE `ip`='".$trans."'"),0);
- if($count_ddos > $doslimit){
- $ban = mysql_query('SELECT * FROM ban WHERE ip = "'.$trans.'"');
- $ban = mysql_fetch_assoc($ban);
- if(empty($ban['ip'])){
- mysql_query('INSERT INTO `ban` (`ip`, `pri`) VALUES ("'.$trans.'","Ддос сайт. забанен!");');
- mysql_query('DELETE FROM `ddos` WHERE `ip` = "'.$trans.'"');
- }
- }
- ?>