1

ejabberd にログインしているユーザーに IP アドレスをマップする直接的な方法があるかどうかは誰にもわかりませんか? 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_callまたはhandle_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 に答える