ejabberd IP 地址

发布于 2024-08-13 11:49:44 字数 334 浏览 4 评论 0原文

有谁知道是否有直接的方法将 IP 地址映射到登录 ejabberd 的用户?我通过修改 ejabberd_receiver.erl 并从此处调用 inet:peername(Socket) 找到了一种间接方法: 确定 Erlang 中传入 TCP/IP 连接的 IP 地址和端口

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

Does anyone know if there's a direct way to map an IP address to a user logged into ejabberd? I found an indirect way by modifying ejabberd_receiver.erl and calling inet:peername(Socket) from here: Determining IP address and port of an incoming TCP/IP connection in Erlang

but there doesn't seem to be a way to link a socket to a user after they've successfully been authenticated. If anyone knows of a way, please let me know! Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-08-20 11:49:44

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

Depending on the size of your installation, you might want to run ejabberd_sm:dirty_get_sessions_list/0 and call get_user_ip/3 on each triple to implement a reverse lookup.

无戏配角 2024-08-20 11:49:44

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

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

You can use From argument from handle_call or handle_info calls to get User, Server, Resource information. Then call:

Info = ejabberd_sm:get_user_info(User, Server, Resource), 
{ip, {Ip, Port}} = lists:keyfind(ip, 1, Info).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文