diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-13 12:03:39 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-13 12:03:39 +0300 |
commit | 0baaad30b176aa8b1d1d485fb8e113eb13d2bdf3 (patch) | |
tree | b5186d78d598e9b94f26646ef11e8c24ac1edd7c /src/ejabberd_sm.erl | |
parent | Fix some corner cases while re-reading RFC6120 (diff) |
Implement database backend interface for MUC, BOSH and auth_anonyous
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r-- | src/ejabberd_sm.erl | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index 327c79b6..5eb67114 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -64,6 +64,7 @@ user_resources/2, kick_user/2, get_session_pid/3, + get_user_info/2, get_user_info/3, get_user_ip/3, get_max_user_sessions/2, @@ -215,6 +216,17 @@ get_user_ip(User, Server, Resource) -> proplists:get_value(ip, Session#session.info) end. +-spec get_user_info(binary(), binary()) -> [{binary(), info()}]. +get_user_info(User, Server) -> + LUser = jid:nodeprep(User), + LServer = jid:nameprep(Server), + Mod = get_sm_backend(LServer), + Ss = online(Mod:get_sessions(LUser, LServer)), + [{LResource, [{node, node(Pid)}|Info]} + || #session{usr = {_, _, LResource}, + info = Info, + sid = {_, Pid}} <- clean_session_list(Ss)]. + -spec get_user_info(binary(), binary(), binary()) -> info() | offline. get_user_info(User, Server, Resource) -> @@ -228,9 +240,7 @@ get_user_info(User, Server, Resource) -> Ss -> Session = lists:max(Ss), Node = node(element(2, Session#session.sid)), - Conn = proplists:get_value(conn, Session#session.info), - IP = proplists:get_value(ip, Session#session.info), - [{node, Node}, {conn, Conn}, {ip, IP}] + [{node, Node}|Session#session.info] end. -spec set_presence(sid(), binary(), binary(), binary(), |