Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Скрипты для RusHub'а _ whois

Автор: Saymon21 31.3.2013, 21:41

Название: whois
Лицензия: GNU GPLv3
Автор: Saymon
Платформа: RusHub
Зависимости: LuaSocket, http://mydc.ru/r/?https://github.com/craigmj/json4lua/blob/master/json4lua/json/json.lua
Репозиторий: http://mydc.ru/r/?http://opensource.hub21.ru/rushub-lua-scripts/src
Описание: Получение информации об IP из whois. (Местоположение, провайдер, etc).
В отличии от похожих имеющихся скриптов на данном форуме использует-API сервиса http://mydc.ru/r/?http://ip-api.com. Для этого и нужен модуль работы с JSON.

Пример запроса

Код
[22:10:04] <[БОТ]-Дворецкий>
Result about 109.248.163.117:
* Country: Russian Federation
* City:Cheboksary
* Region: Chuvashia
* TimeZone: Europe/Samara
* ISP/ASN: MNT-SHUPASHKARTRANS / AS43660 Shupashkartrans-K Ltd.
* PTR: hub21.ru
* Map: http://maps.google.ru/maps?hl=ru&ll=56.1322,47.2519&q=Cheboksary+Russian Federation&z=6&output=embed


Скрипт не имеет меню. Для использования надо набрать в чате +whois ipaddress. В агрументах команды вместо IP-адреса можно указать параметр -h. В таком случае покажет справку по использованию.
Так-же использование команды по умолчанию доступно только профилю 0 (Можно перенастроить).

 whois.lua ( 4.91 килобайт ) : 26
 

Автор: Saymon21 14.4.2013, 13:15

В репозиторий был добавлен ещё один скрипт с аналогичным функционалом -  whois_hub21.ru.lua ( 5.56 килобайт ) : 5

Использует мой собственный самопильный rest-like сервис для получения данных.
Сервис использует базы данных GeoLiteCity, GeoIPCountryWhois.
Автоматическое обновление баз данных происходит раз в неделю по субботам.
На сервисе существует жёсткое ограничение на один запрос в секунду.

Пример запроса
Код
[14:13:22] <[БОТ]-Дворецкий> Result for: 109.248.163.117
Country: Russian Federation
Continent: EU
ISP: AS43660 Shupashkartrans-K Ltd.
City: Cheboksary
Network addressing: 109.248.0.0-109.248.255.255
TimeZone: Europe/Samara
Google map: http://maps.google.ru/maps?hl=ru&ll=56,1322,47,2519&q=Cheboksary+Russian Federation&z=6&output=embed

Из требований к данному скрипту - так-же lua-socket+json.
На случай запроса не корректных ip-адресов возможные ошибки, которые возвратит сервис:
Раскрывающийся текст
Код
{'status': 'error', 'message': 'Argument ip address is a nil value.'}
{'status':'error', 'message': 'This ip address is reserved per RFC 1918.'}
{'status':'error', 'message': 'This ip address is within thereserved IPv4 Network range'}
{'status':'error','message': 'This ip address is multicast (RFC 3171)'}
{'status': 'error', 'message': 'This ip address is the unspecified address as defined in RFC 5735 3.'}
{'status':'error', 'message': 'This ip address is a loopback per RFC 3330.'}
{"status": "error", "message": "'test' does not appear to be an IPv4 or IPv6 address"}
{"status": "error", "message": "IPv6 is not supported"}

Так-же пока поддерживается только ipv4.