【问题标题】:ejabberd ip addressejabberd ip地址
【发布时间】:2010-12-21 02:06:53
【问题描述】:

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

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

【问题讨论】:

  • 你可能会更好地帮助解决服务器故障。

标签: erlang sockets ip ejabberd


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2017-07-25
      • 2015-06-24
      相关资源
      最近更新 更多