Гость
Покинул форум
Сообщений всего: 66
Дата рег-ции: Июнь 2012
Помог: 0 раз(а)
[+]
|
Доброй ночи,
имеется файрволл на php который ведет логи:
CODE ( htmlphp):
скопировать код в буфер обмена
8-12-2013 23:44:26 | Bots attack | IP: 176.106.208.4 ] | DNS: 176-106-208-4.point.lviv.ua | Agent: Mozilla/2.0 (compatible; MSIE 3.02; Update a; AK; Windows NT) | URL: / | Referer: 5853bm203s.ru
но файрволл достаточно слабый и хостинг замораживает аккаунт во избежания нагрузки.
решил перехитрить написанием скрипта который будет автоматом читать логи и вносить ip с опр флагами в htaccess на блокировку:
PHP:
скопировать код в буфер обмена
<?PHP for($i = 0; $i < count($log); $i++) { { $atkstrout = preg_replace("/Bots attack \| IP: /i","",$atkstr[0 ]); $file = file(".htaccess"); $num_stroka = count($file); $num_stroka = $num_stroka-1; unset($file[$num_stroka]); $num_stroka = $num_stroka-1; unset($file[$num_stroka]); $fp = fopen(".htaccess", "w"); $endfile="".implode("", $file)." deny from ".$atkstrout."\n allow from all\n</Limit>"; } } ?>
и тут встала задача сравнить есть ли в .htaccess ip в черном листе или нет
пытаюсь парсить .htaccess а он не парсится.... не пойму почему и без этого не могу сделать проверку...
конечный скрипт по моим замыслам должен был иметь такой вид:
PHP:
скопировать код в буфер обмена
<?PHP for($i = 0; $i < count($log); $i++) { { $atkstrout = preg_replace("/Bots attack \| IP: /i","",$atkstr[0 ]); $file = file(".htaccess"); for($x = 0; $x < count($file); $x++) { if(preg_match('|deny from (.*?)\n deny from|is', $file[$x], $ipblock)) { $ipblockout = preg_replace("/ \n deny from/i","",$ipblockout); } } } { $num_stroka = count($file); $num_stroka = $num_stroka-1; unset($file[$num_stroka]); $num_stroka = $num_stroka-1; unset($file[$num_stroka]); $fp = fopen(".htaccess", "w"); $endfile="".implode("", $file)." deny from ".$atkstrout."\n allow from all\n</Limit>"; } } } ?>
(Добавление)
нашел ошибку в регулярке и
поменял на
(Отредактировано автором: 09 Декабря, 2013 - 00:11:48)
|