Минимальный ident-сервер (RFC 1413) на Perl. Используется на машинах без собственной службы identd, например на Windows, когда удалённый сервер (IRC, прокси и т. п.) проверяет пользователя по протоколу ident.
На любой корректный запрос сервер возвращает одно и то же имя пользователя, заданное в настройках.
Удалённый сервер подключается к порту 113 и присылает пару портов соединения:
6193, 23
Сервер отвечает в формате RFC 1413:
6193, 23 : USERID : WIN32 : ldap_ruslan1001
Если номер порта вне диапазона 1–65535, возвращается ERROR : INVALID-PORT. На запрос в неверном формате сервер ничего не отвечает и закрывает соединение. Если запрос не пришёл за отведённое время, соединение тоже закрывается.
- Perl 5.10 или новее (модули
IO::Socket::INETиIO::Selectвходят в стандартную поставку); - на Linux для порта 113 нужны права root или
CAP_NET_BIND_SERVICE; - на Windows может потребоваться правило брандмауэра, разрешающее входящие соединения на порт 113.
Параметры задаются переменными окружения:
| Переменная | Назначение | По умолчанию |
|---|---|---|
IDENT_HOST |
адрес для прослушивания | 0.0.0.0 |
IDENT_PORT |
порт | 113 |
IDENT_USER |
возвращаемое имя пользователя | ldap_ruslan1001 |
IDENT_OS |
тип ОС в ответе | WIN32 |
IDENT_TIMEOUT |
таймаут ожидания запроса, в секундах | 10 |
IDENT_HOST=10.25.116.194 IDENT_USER=ldap_ruslan1001 perl tcpserver.pl
В Windows (cmd):
set IDENT_HOST=10.25.116.194
set IDENT_USER=ldap_ruslan1001
perl tcpserver.pl
Для проверки без прав администратора сервер необходимо запустить на непривилегированном порту:
IDENT_HOST=127.0.0.1 IDENT_PORT=11300 perl tcpserver.pl
и отправить запрос из другого терминала:
echo "6193, 23" | nc 127.0.0.1 11300
Ожидаемый ответ: 6193, 23 : USERID : WIN32 : ldap_ruslan1001.