Перейти к содержимому


Модуль BlackList (Фильтр по IP-адресу)


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 May 2018 - 03:55 PM

Blacklist (Фильтр по IP-адресу).

Модуль собирает в таблицу IP-адреса, с которых была не верно введена капча.
В комментарий вписывается дата/время/ссылка(реферер).
Затем в админке можно изучить этот список и для некоторых адресов (или масок) настроить отдачу Error-404 при заходе с этого адреса.
Маска строится про правилам LIKE в SQL-запросе, т.е. % это любое количество символов, а _ (подчерк) это один символ.
Например, под маску 192.168.0.% попадут все адреса сети 192.168.0.0/24.
Делать полноценные маски в формате CIDR (192.168.0.0/24) я не стал (поленился, да и такой вариант работает быстрее).
Так что вместо 185.105.88.0/23 придется сделать две записи - 185.105.88.% и 185.105.89.%

PS. Реакцию на "провинившийся IP" можно сделать какую угодно. Обработка находится в файле 0blacklist.php.
Также никто не мешает добавлять IP-адреса и сети самостоятельно, а в качестве обработки генерить include для .htaccess.

Прикрепленный файл  blacklist.jpg   160.37К   12 Количество загрузок:

Установка:
----------
1. копируем файлы

0blacklist.php -> core/includes/
addon.php -> core/includes/admin/
modules_blacklist.php -> core/includes/admin/sub/
modules_blacklist.tpl.html -> core/tpl/admin/

Файл addon.php нужен ОДИН РАЗ для создания настроек и SQL-таблицы.
После первого же захода в админку его можно удалить, если он не удалился сам.

2. в файле default.tpl.html перед строкой


<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></div>


вставляем


{* BEGIN blacklist *}
<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=blacklist">Blacklist</a></div>
{* END blacklist *}



3. в файле core/tpl/admin/menu.tpl.html перед строкой


<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></td></tr></table>


вставляем


{* BEGIN blacklist *}
<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=blacklist">Blacklist</a></td></tr></table>
{* END blacklist *}



4. в файле core/includes/admin/modules.php перед строкой


array("id"=>"yandex", "name"=>"Яндекс.Маркет" )


вставляем


# BEGIN blacklist
array("id"=>"blacklist", "name"=>"Blacklist"),
# END blacklist



5. в файле feedback.php

перед


unset($_SESSION['captcha_keystring']);


вставляем


# BEGIN blacklist
if(CONF_BLACKLIST_ENABLE_COLLECT && $error_f == 2)
db_query("INSERT INTO ".DB_PRFX."blacklist SET enable=0, address='".$_SERVER[CONF_BLACKLIST_ELEM_NAME]."', comment='".date('Y-m-d|H:i|').$_SERVER['HTTP_REFERER']."'");
# END blacklist



6. в файлах product_detailed.php, product_discussion.php

перед


unset($_SESSION['captcha_keystring']);


вставляем


# BEGIN blacklist
if(CONF_BLACKLIST_ENABLE_COLLECT && $error_p == 7)
db_query("INSERT INTO ".DB_PRFX."blacklist SET enable=0, address='".$_SERVER[CONF_BLACKLIST_ELEM_NAME]."', comment='".date('Y-m-d|H:i|').$_SERVER['HTTP_REFERER']."'");
# END blacklist



7. аналогичным образом можно добавить и в другие места, где используется капча (register.php, register_quick.php)

------------------

После всего этого в админке в разделе "Модули" появится новый модуль "Blacklist".
Уровень доступа к этому модулю "Общие настройки" (это для тех, у кого кроме админов с полным доступом и клиентов есть еще пользователи с разными уровнями доступа в админке).

Прикрепленные файлы


  • 2
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)