IP-адрес Ejabberd - PullRequest
       20

IP-адрес Ejabberd

1 голос
/ 27 ноября 2009

Кто-нибудь знает, существует ли прямой способ сопоставления IP-адреса с пользователем, вошедшим в ejabberd? Я нашел косвенный способ, изменив ejabberd_receiver.erl и вызвав inet: peername (Socket) отсюда: Определение IP-адреса и порта входящего соединения TCP / IP в Erlang

но, похоже, нет способа связать сокет с пользователем после того, как он успешно прошел аутентификацию. Если кто-нибудь знает способ, пожалуйста, дайте мне знать! Спасибо.

Ответы [ 2 ]

1 голос
/ 28 января 2010

В зависимости от размера вашей установки вы можете запустить ejabberd_sm: dirty_get_sessions_list / 0 и вызвать get_user_ip / 3 для каждой тройки, чтобы реализовать обратный поиск.

0 голосов
/ 10 октября 2011

Вы можете использовать аргумент From из handle_call или handle_info вызовов для получения информации о пользователе, сервере, ресурсе. Затем позвоните:

Info = ejabberd_sm:get_user_info(User, Server, Resource), 
{ip, {Ip, Port}} = lists:keyfind(ip, 1, Info).
...