有谁知道是否有直接的方法将 IP 地址映射到登录 ejabberd 的用户?我通过修改 ejabberd_receiver.erl 并从这里调用 inet:peername(Socket) 找到了一种间接方法:Determining IP address and port of an incoming TCP/IP connection in Erlang
但似乎没有办法在成功通过身份验证后将套接字链接到用户。如果有人知道方法,请告诉我!谢谢。
有谁知道是否有直接的方法将 IP 地址映射到登录 ejabberd 的用户?我通过修改 ejabberd_receiver.erl 并从这里调用 inet:peername(Socket) 找到了一种间接方法:Determining IP address and port of an incoming TCP/IP connection in Erlang
但似乎没有办法在成功通过身份验证后将套接字链接到用户。如果有人知道方法,请告诉我!谢谢。
根据安装的大小,您可能希望运行 ejabberd_sm:dirty_get_sessions_list/0 并在每个三元组上调用 get_user_ip/3 以实现反向查找。
您可以使用来自handle_call或handle_info调用的 From 参数来获取用户、服务器、资源信息。然后调用:
Info = ejabberd_sm:get_user_info(User, Server, Resource),
{ip, {Ip, Port}} = lists:keyfind(ip, 1, Info).