1

有谁知道是否有直接的方法将 IP 地址映射到登录 ejabberd 的用户?我通过修改 ejabberd_receiver.erl 并从这里调用 inet:peername(Socket) 找到了一种间接方法:Determining IP address and port of an incoming TCP/IP connection in Erlang

但似乎没有办法在成功通过身份验证后将套接字链接到用户。如果有人知道方法,请告诉我!谢谢。

4

2 回答 2

1

根据安装的大小,您可能希望运行 ejabberd_sm:dirty_get_sessions_list/0 并在每个三元组上调用 get_user_ip/3 以实现反向查找。

于 2010-01-27T22:21:04.900 回答
0

您可以使用来自handle_callhandle_info调用的 From 参数来获取用户、服务器、资源信息。然后调用:

Info = ejabberd_sm:get_user_info(User, Server, Resource), 
{ip, {Ip, Port}} = lists:keyfind(ip, 1, Info).
于 2011-10-10T06:42:56.433 回答