|
Site Admin |
Зарегистрирован: 01 июн 2010, 01:27 Последнее посещение: 12 май 2024, 17:18 Сообщения: 6867
|
SubnetBanАвтор: Lev Версия: 2.2 Информация:- автоматическое определение подсети/автономной системы для заданного ИП с помощью баз GeoIP и Whois
- хранение банов подсетей/автономных систем в ini файле или в mysql базе (для подсетей и автономных систем используются раздельные файлы)
- сохраняет резервную копию ini файла при разбане подсети/автономной системы
- хранит следующую информацию о бане подсети/автономной системы:
- начальный адрес подсети
- конечный адрес подсети
- номер автономной системы
- разрешенные клиенты (флаги)
- дата бана
- последняя дата блокировки подключения из этой подсети/автономной системы
- причина бана
- АМХХ логгирование использования команд
- по умолчанию используется флаг доступа 'n' к командам плагина (можете поменять в файле cmdaccess.ini)
- показывает всем игрокам уведомление о вновь подключившемся игроке (выводится страна)
- интеграция с dproto, при подключении игрока, если его ИП попадает в забаненную подсеть, то:
- проверяется тип клиента используемого игроком и, если этот тип разрешен для данной подсети, то пускает клиента,
- иначе игроку сообщается о типе разрешенных клиентов и линк на скачку клиента.
- можете использовать этот плагин и без dproto, если желаете
- автоматическое создание базы данных и(или) таблиц (требуются достаточные права mysql юзера).
- Для редактирования банов, возможно использование программы под Windows. Автор Infernal. Требует .NET для работы.
Команды:sb_help показывает помощь по использованию других команд sb_ban добавляет бан подсети/автономной системы по: игроку (используется его ИП для автоматического определения подсети/автономной системы), ИП (используется для автоматического определения подсети/автономной системы), начальному и конечному ИП, подсети в CIDR формате или номеру автономной системы sb_unban удаляет бан подсети/автономной системы по: ИП (удалит одну, самую меньшую, или все подсети содержащие этот ИП), начальному и конечному ИП (удалит точно совпадающую или все пересекающие подсети) или номеру автономной системы sb_list вывод списка подсетей/автономных систем по: ИП (выведет одну, самую меньшую, или все подсети содержащие этот ИП), начальному и конечному ИП (выведет точно совпадающую или все пересекающие подсети) или номеру автономной системы sb_search вывод подсетей содержащих в причине заданную подстроку sb_whois запрос к базе Whois по заданному ИП или ИП игрока с выводом ответа в консоль sb_stat выводит список игроков на сервере с информацией: номер игрока, ник, ИП, номер автономной системы, используемая версия протокола, протокол авторизации (тип используемого клиента), страна, город, дополнительное описание маршрута из базы Whois
Квары:sb_sql_host "127.0.0.1" // Сервер MySql sb_sql_user "root" // Логин к базе sb_sql_pass "" // Пароль к базе sb_sql_db "subnetbans" // Название базы sb_sql_create_db "0" // Автоматическое создание базы данных и таблиц (значение 2) или только таблиц (значение 1), если они не существуют.
sb_def_ban_as "1" // По умолчанию команда sb_ban при автоматическом определении будет банить: 0 - подсеть, 1 - автономную систему sb_def_allowed_clients "bjk" // Разрешенные типы клиентов используемые по умолчанию командой sb_ban ("bjk" = Native Steam, RevEmu 2013 и SmartSteamEmu3) sb_allowed_flags "ab" // Если игрок имеет следующие флаги доступа, то проверка на бан подсети/автономной системы для него не производится sb_downloadurl "http://aghl.ru/files/patches/updater.exe" // Ссылка на скачивание клиента с эмулятором sb_download_clienttype "d" // Тип клиента указанного в ссылке на скачивание sb_announce_connected "1" // Разрешить(1)/Запретить(0) оповещение о вновь подключающихся игроках
Требования:- модуль Whois: whois_amxx.dll (Windows) / whois_amxx_i386.so (Linux) должен быть установлен
- модуль GeoIpMax: geoipmax_amxx.dll (Windows) / geoipmax_amxx_i386.so (Linux) должен быть установлен (или запретите использование модуля с помощью опции компиляции)
- для корректной работы запросов к базам Whois, для игрового сервера должны быть разрешены исходящие подключения TCP на порт 43 и работающий DNS клиент
- если вы желаете использовать GeoIp, то вам надо скачать базу GeoLiteCity и скопировать её в папку "addons\amxmodx\data\"
- возраст пользователя 18+ или наличие технического образования
Компиляция:- скопируйте файл "subnetban.sma" в папку "addons\amxmodx\scripting\"
- скопируйте файлы "common_functions.inc", "ip_functions.inc" и "whois.inc" в папку "addons\amxmodx\scripting\include\"
- для получения SQL версии раскомментируйте (удалите символы //) строчку содержащюю "#define USING_SQL" в файле "subnetban.sma"
- для получения INI версии закомментируйте (поставьте символы //) строчку содержащюю "#define USING_SQL" в файле "subnetban.sma"
- для запрета использования GeoIpMax модуля закомментируйте (поставьте символы //) строчку содержащюю "#define USING_GEOIP" в файле "subnetban.sma"
- для разрешения использования GeoIpMax модуля раскомментируйте (удалите символы //) строчку содержащюю "#define USING_GEOIP" в файле "subnetban.sma"
- введите "compile.exe subnetban.sma" (Windows) или "compile.sh subnetban.sma" (Linux) в командной строке (или смотрите тему Компиляция плагинов AMX Mod X)
- скомпилированный плагин (subnetban.amxx) будет находиться в папке "addons\amxmodx\scripting\compiled\"
- рекомендуется переименовать файл с SQL версией в subnetban_sql.amxx
Установка:- скопируйте файл "subnetban.txt" в папку "addons\amxmodx\data\lang\";
- для INI версии:
- скопируйте файл "subnetban.amxx" в папку "addons\amxmodx\plugins\";
- добавьте строчку "subnetban.amxx" в файл "addons\amxmodx\config\plugins.ini";
- для SQL версии:
- скопируйте файл "subnetban_sql.amxx" в папку "addons\amxmodx\plugins\";
- добавьте строчку "subnetban_sql.amxx" в файл "addons\amxmodx\config\plugins.ini";
- создайте базу MySql используя приведенный ниже скрипт;
- установите значения кваров для доступа к базе данных в конфиг файле (например в server.cfg);
- скопируйте "whois_amxx.dll" (Windows) или "whois_amxx_i386.so" (Linux) в папку "addons\amxmodx\modules\";
- скопируйте "geoipmax_amxx.dll" (Windows) или "geoipmax_amxx_i386.so" (Linux) в папку "addons\amxmodx\modules\";
- скачайте GeoLiteCity базу по ссылке http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz и распакуйте её в папку "addons\amxmodx\data\";
- также можете обновить базу GeoLiteCountry, скачайте её по ссылке http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz и распакуйте её в папку "addons\amxmodx\data\";
- звук buttons\bell1.wav используется для оповещения о подключившемся игроке, так что проверьте что он есть в папке "valve\sounds\buttons\" на сервере.
Скрипт для создания базы данных:CREATE DATABASE IF NOT EXISTS `subnetbans` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE IF NOT EXISTS `subnetbans`.`subnetbans` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `startip` INT UNSIGNED NOT NULL, `endip` INT UNSIGNED NOT NULL, `allowedclients` SMALLINT UNSIGNED NOT NULL, `datetimebanned` INT UNSIGNED NOT NULL, `datetimelastblocked` INT UNSIGNED NOT NULL, `reason` VARCHAR( 64 ) NOT NULL , PRIMARY KEY ( `id` ) , UNIQUE `startip_endip` ( `startip`, `endip` ), INDEX `startip` ( `startip` ), INDEX `endip` ( `endip` ) ); CREATE TABLE IF NOT EXISTS `subnetbans`.`asbans` ( `asnumber` VARCHAR(10) NOT NULL, `allowedclients` SMALLINT UNSIGNED NOT NULL, `datetimebanned` INT UNSIGNED NOT NULL, `datetimelastblocked` INT UNSIGNED NOT NULL, `reason` VARCHAR( 64 ) NOT NULL , UNIQUE `asnumber_ux` (`asnumber`) );
История версий:0.6a [2009.10.28] 0.7a [2009.11.17] 0.8a [2009.11.18] + Добавлено: сохранение причины бана. 0.9a [2009.11.20] + Добавлено: команда sb_whois. + Добавлено: команда sb_stat. + Добавлено: логгирование использования команд. 1.0a [2009.11.20] + Добавлено: оповещение о подключившемся игроке. + Добавлено: сохранение даты бана и даты последней блокировки подключения из подсети. 1.0b [2009.11.21] 1.0b [2009.11.21] + Добавлено: опция компиляции: USING_GEOIP. 1.1b [2009.12.22] ! Исправлено: блокировка бана при sb_use_whois 0. + Добавлено: два квара для управления запросами к базам Whois. 1.2b [2009.04.08] ! Исправлено: команда sb_stat теперь корректно обрабатывает новый тип клиента (HLTV) и все будущие типы клиентов. 1.3 [2011.02.15] (35 загрузок) Release версия. + Добавлено: поддержка новых типов клиентов dproto: SC2009 and AVSMP. Рекомендуется обновить базу данных: UPDATE `subnetbans` SET `allowedclients`=202 WHERE `allowedclients`=10 ! Исправлено: применение kick к клиенту, если команда disconnect по какой-либо причине не сработала. ! Исправлено: исправление потенциальных ошибок. ! Исправлено: небольшие изменения текстов. ! Изменено: типы клиентов по умолчанию, квар sb_def_allowed_clients, теперь установлен в: "bdgh". + Добавлено: новый квар sb_download_clienttype - используется для показа ссылки на скачку, если данный тип клиента разрешен для забаненной подсети. ! Исправлено: парсинг параметров для команды sb_ban (в случае, когда передавался пустой параметр типа клиентов). + Добавлено: команда sb_search - поиск по указанной подстроке причины бана. Обновите базу данных: ALTER TABLE `subnetbans` CHANGE `reason` `reason` VARCHAR( 64 ) CHARACTER SET latin COLLATE latin1_general_ci NOT NULL 1.4 [2011.02.23] (100 загрузок) + Добавлено: квар sb_sql_create_db - используется для разрешения автоматического создания базы данных / таблицы для банов. ! Исправлено: небольшое изменение текста помощи. + Добавлено: русский перевод (UTF8) для subnetban.txt. ! Изменено: название таблицы сменено с subnetban на subnetbans (используйте квар, если надо вернуть обратно). 1.6 [2013.08.12] (5 загрузок) + Добавлено: поддержка новых типов клиентов dproto: sXe Injected и RevEmu 2013. ! Изменено: типы клиентов по умолчанию, квар sb_def_allowed_clients, теперь установлен в: "bdghj". Рекомендуется обновить базу данных: ALTER TABLE `subnetbans` CHANGE `allowedclients` `allowedclients` SMALLINT UNSIGNED NOT NULL; UPDATE `subnetbans` SET `allowedclients`=714 WHERE `allowedclients`=202 1.7 [2013.10.08] (10 загрузок) ! Исправлено: ошибка ограничивавшая использование флагов разрешенных клиентов. 1.8 [2013.10.21] (154 загрузки) ! Исправлено: ошибка в парсинге CIDR с пробелами. 1.9 [2014.06.11] (47 загрузок) + Исправлено: предотвращена возможность бана 0.0.0.0-255.255.255.0 подсети при использовании автоматического определения. ! Изменено: типы клиентов по умолчанию, квар sb_def_allowed_clients, теперь установлен в: "bgj" (удалены RevEmu и AVSMP). + Обновите базу данных: ALTER TABLE `subnetbans` CHANGE `allowedclients` `allowedclients` SMALLINT UNSIGNED NOT NULL; UPDATE `subnetbans` SET `allowedclients`=578 WHERE `allowedclients`=714 1.10 [2014.08.02] + Исправлено: предотвращена потенциальная возможность использования предыдущих данных whois. ! Изменено: включаемые файлы переделаны на инклюды. + Исправлено: добавлено несколько проверок в функции работы с IP адресами. 2.0 [2015.07.05] (6 загрузок) (code name ASsBans)
! Изменено: теперь плагин использует модуль Whois. + Добавлено: поддержка банов автономных систем. + Добавлено: поддержка нового типа клиентов dproto: SmartSteamEmu3. - Удалено: cvars sb_use_whois_on_connect и sb_use_whois_for_ban. + Добавлено: cvar sb_def_ban_as - указание для выбора автоматического бана подсети либо автономной системы. ! Изменено: типы клиентов по умолчанию, квар sb_def_allowed_clients, теперь установлен в: "bjk" (удален SC2009, добавлен SSE3). + Рекомендуется обновить базу данных: UPDATE `subnetbans` SET `allowedclients`=1538 WHERE `allowedclients`=578 2.1 [2015.07.18] (3 загрузки)
! Изменено: вывод информации об ошибке, если запрос к Whois серверу не был успешно завершен. 2.2 [2015.07.21]
! Изменено: вывод от команд sb_list и sb_search в консоль клиенту ограничен 20 записями. ! Изменено: вывод от команды sb_stat в консоль клиенту теперь разбит на страницы и использует в качестве аргумента номер страницы. Для конвертации базы в файл можно использовать следующий скрипт и реджексы (флаги клиентов заменяются на указанные в скрипте):- SELECT INET_NTOA(`startip`),INET_NTOA(`endip`),'bd',FROM_UNIXTIME(`datetimebanned`),FROM_UNIXTIME(`datetimelastblocked`),`reason` FROM `subnetbans`
- (.*?) [\s]*(.*?) [\s]*(.*?) [\s]*(.*? [\s]*.*?) [\s]*(.*? [\s]*.*?) [\s]*(.*)
- \1 \2 \3 "\4" "\5" "\6"
Для конвертации из файла в базу (учтено до 5 флагов клиентов):- (.*?) [\s]*(.*?) [\s]*(.*?) "[\s]*(.*? [\s]*.*?)" "[\s]*(.*? [\s]*.*?)" "[\s]*(.*)"
- INSERT INTO `subnetbans2` (`startip`, `endip`, `allowedclients`, `datetimebanned`, `datetimelastblocked`, `reason`) VALUES (INET_ATON('\1'), INET_ATON('\2'), (1<<(CASE WHEN CHAR_LENGTH('\3')>0 THEN (ASCII(SUBSTR('\3',1)) - 97) ELSE 0 END))|(1<<(CASE WHEN CHAR_LENGTH('\3')>1 THEN (ASCII(SUBSTR('\3',2)) - 97) ELSE 0 END))|(1<<(CASE WHEN CHAR_LENGTH('\3')>2 THEN (ASCII(SUBSTR('\3',3)) - 97) ELSE 0 END))|(1<<(CASE WHEN CHAR_LENGTH('\3')>3 THEN (ASCII(SUBSTR('\3',4)) - 97) ELSE 0 END))|(1<<(CASE WHEN CHAR_LENGTH('\3')>4 THEN (ASCII(SUBSTR('\3',5)) - 97) ELSE 0 END)), UNIX_TIMESTAMP('\4'), UNIX_TIMESTAMP('\5'), '\6')
|
|