From cc7ecfb39e64f5a4e1c7006bb910d2f7791e4c91 Mon Sep 17 00:00:00 2001 From: Badlop Date: Thu, 10 Jun 2010 12:22:27 +0200 Subject: [PATCH] Support anonymous accounts in Shared Roster @all@ directive (EJAB-1264) With this change, logged anonymous accounts are considered to be registered. --- src/ejabberd_auth_anonymous.erl | 5 +++-- src/mod_shared_roster.erl | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl index 4a3f4413d..1f5041f46 100644 --- a/src/ejabberd_auth_anonymous.erl +++ b/src/ejabberd_auth_anonymous.erl @@ -185,6 +185,7 @@ register_connection(SID, JID, Info) when ?IS_JID(JID) -> undefined -> ok; ?MODULE -> + ejabberd_hooks:run(register_user, LServer, [LUser, LServer]), US = {LUser, LServer}, mnesia:async_dirty( fun() -> mnesia:write(#anonymous{us = US, sid=SID}) @@ -292,8 +293,8 @@ dirty_get_registered_users() -> %% @spec (Server) -> nil() %% Server = string() -get_vh_registered_users(_Server) -> - []. +get_vh_registered_users(Server) -> + [{U, S} || {U, S, _R} <- ejabberd_sm:get_vh_session_list(list_to_binary(Server))]. %% @spec (User, Server) -> Password | false %% User = string() diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl index 3fbfb9c3d..c7f68a273 100644 --- a/src/mod_shared_roster.erl +++ b/src/mod_shared_roster.erl @@ -89,6 +89,8 @@ start(Host, _Opts) -> ?MODULE, process_item, 50), ejabberd_hooks:add(register_user, HostB, ?MODULE, register_user, 50), + ejabberd_hooks:add(anonymous_purge_hook, HostB, + ?MODULE, remove_user, 50), ejabberd_hooks:add(remove_user, HostB, ?MODULE, remove_user, 50). %%ejabberd_hooks:add(remove_user, HostB, @@ -114,6 +116,8 @@ stop(Host) -> ?MODULE, process_item, 50), ejabberd_hooks:delete(register_user, HostB, ?MODULE, register_user, 50), + ejabberd_hooks:delete(anonymous_purge_hook, HostB, + ?MODULE, remove_user, 50), ejabberd_hooks:delete(remove_user, HostB, ?MODULE, remove_user, 50). %%ejabberd_hooks:delete(remove_user, HostB,