Сайт ip-api.com имеет ряд ограничений на бесплатном тарифе (регистрация не требуется), по этому в плагине встроено кеширование, чтобы он по дружески относился к вашему серверу и сайту.
Что можно получить через Whois данные ?
В нашем случае, мы можем получить самое главное - это AS провайдера (вики), с которого заходит игрок. Проще говоря, нам не нужно определять диапазоны IP адресов и заниматься подобной дичью, а можем выдавать бан сразу по AS, отрубив всего провайдера целиком.Подобную идею реализовал Lev и своем плагине СубнетБан, в виде отдельного амх модуля, но та разработка реально старая, а модуль на новых билдах серверов (в частности на линуксе), толком не работает.
Код для этого плагина я писал для себя, чтобы бороться с обходами. Весь код снабжен комментариями. Можете использовать в своих целях. Ничего подобного по реализации вы в Интернетах не найдете. Используются отложенные запросы, что не вызывает фризов на сервере, но на всяких случай в плагин встроен предохранитель, отключающий его работы, если по какой-то причине функция socket_open начнет капризничать.
Как это работает ?
При получении данных с Whois через Api, плагин их кеширует и сверяется со списком из файла whois_banlist.iniЕсли AS игрока совпадает, он кикается.
В сам файли я уже добавил несколько AS хостингов и дата-центров.
Я предлагаю продолжить тему и публиковать IP адреса AS провайдеров игроков, которые играют через прокси. Я, по мере возможности, буду их добавлять и обновлять список.
Что такое Whois данные и что с ними делать ?
Самый простой способ получения Whois данных и AS по IP адресу здесь: https://2ip.ru/whois/Отличить хостинг/дата-центр от домашнего провайдера достаточно легко. Многие указывают в данных слова Hosting, vds, и т.д.
Так же, практически всегда есть почта, которая и является сайтом провайдера или название фирмы, которое легко гуглится. С хостингов и дата-центров обычные игроки не заходят.
Минимальные требования
AmxModX 1.8.3 и выше с поддержкой SOCK_NON_BLOCKINGДополнительно
В плагин добавлено логгирование, в тех случаях, когда не удается получить ответ от сайта или определить AS. Это бывает редко и я грешу на сам модуль sockets, т.к. тот же Curl справляется с более сложными задачами без проблем.Автор: SISA
Версия: 2.0