ejabberd ip地址

时间:2009-11-27 19:35:25

标签: erlang sockets ip ejabberd

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用 handle_call handle_info 调用中的From参数来获取用户,服务器,资源信息。然后致电:

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