Страница 1 из 1

Написать на Perl5 СООП сервер для получения WHOIS доменов

Добавлено: 23 май 2017, 20:45
mrlaster
Привет всем!

Вот задание. Присылайте ценник и срок. Исполнитель должен хорошо знать AnyEvent
и иметь опыт.

Нужно написать собственный сервер, который слушает на каком-либо TCP порте и
принимает соеденения от клиентов с запросом на получение WHOIS данных пачки
доменов. Например, в таком формате:

domen-primer-123.ru\n
domen-primer-234.ru\n
domen-primer-345.ru\n
domen-primer-456.ru\n
domen-primer-567.ru\n
.

На этом же сервере должна работать MongoDB, которая должна хранить *локальную*
копию WHOIS данных по доменам, которые ранее были получены:

Если в локальной базе есть WHOIS данные по домену, тогда надо отдать их клиенту
(сокет клиента не закрывается пока весь запрос полностью не будет обработан).

Если в локальной базе нет WHOIS данных по домену, сервер должен начать
обращаться к WHOIS серверам доменов, используя socks5 прокси заданных в массиве:

my @socks5_pool = ('2.3.4.5:1080', '3.4.5.6:1080', '4.5.6.7:1080');

К одному socks5 прокси можно одновременно подключиться только один раз.

Как только данные по какому-либо домену приняты, их нужно добавить в локальную
MongoDB и отправить клиенту.

Если WHOIS ответ по домену не успешен, повторить запрос через свободный прокси
из пула (прокси сервера находятся в одной локалке с сервером).

РЕШЕНИЕ

Можно использовать Net::Whois::Raw + IO::Socket::Socks::Wrapper + AnyEvent.

Обязательно писать, используя AnyEvent.

Для MongoDB не нужен AnyEvent, т.к. база будет локальная. Клиент и сервер
удаленные. WHOIS серверы доменов, конечно, удаленные.

ОКРУЖЕНИЕ

Серверная Ubuntu 16.04.