From 75f2e775ab9e94dd013e70ab29352866e7ad5b29 Mon Sep 17 00:00:00 2001 From: Badlop Date: Wed, 22 Dec 2010 17:54:41 +0100 Subject: [PATCH] Update auth modules to support stopping --- src/ejabberd_auth_anonymous.erl | 9 +++++++++ src/ejabberd_auth_external.erl | 10 ++++++++++ src/ejabberd_auth_pam.erl | 5 +++++ src/ejabberd_auth_storage.erl | 4 ++++ 4 files changed, 28 insertions(+) diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl index dfde90a7e..3349521c4 100644 --- a/src/ejabberd_auth_anonymous.erl +++ b/src/ejabberd_auth_anonymous.erl @@ -28,6 +28,7 @@ -author('mickael.remond@process-one.net'). -export([start/1, + stop/1, allow_anonymous/1, is_sasl_anonymous_enabled/1, is_login_anonymous_enabled/1, @@ -79,6 +80,14 @@ start(Host) when is_list(Host) -> ?MODULE, unregister_connection, 100), ok. +stop(Host) when is_list(Host) -> + HostB = list_to_binary(Host), + ejabberd_hooks:delete(sm_register_connection_hook, HostB, + ?MODULE, register_connection, 100), + ejabberd_hooks:delete(sm_remove_connection_hook, HostB, + ?MODULE, unregister_connection, 100), + ok. + %% @spec (Host) -> bool() %% Host = string() %% @doc Return true if anonymous is allowed for host or false otherwise. diff --git a/src/ejabberd_auth_external.erl b/src/ejabberd_auth_external.erl index 035791d17..33a97da31 100644 --- a/src/ejabberd_auth_external.erl +++ b/src/ejabberd_auth_external.erl @@ -29,6 +29,7 @@ %% External exports -export([start/1, + stop/1, set_password/3, check_password/3, check_password/5, @@ -65,6 +66,15 @@ start(Host) -> ok end. +stop(Host) -> + extauth:stop(Host), + case check_cache_last_options(Host) of + cache -> + ok = ejabberd_auth_storage:stop(Host); + no_cache -> + ok + end. + check_cache_last_options(Server) -> %% if extauth_cache is enabled, then a mod_last module must also be enabled case get_cache_option(Server) of diff --git a/src/ejabberd_auth_pam.erl b/src/ejabberd_auth_pam.erl index 2a9eedb5a..da4305975 100644 --- a/src/ejabberd_auth_pam.erl +++ b/src/ejabberd_auth_pam.erl @@ -28,6 +28,7 @@ %% External exports -export([start/1, + stop/1, set_password/3, check_password/3, check_password/5, @@ -56,6 +57,10 @@ start(_Host) -> Err -> Err end. +%% TODO: Stop epam if no other auth_pam are running. +stop(_Host) -> + ok. + %% @spec (User, Server, Password) -> {error, not_allowed} %% User = string() %% Server = string() diff --git a/src/ejabberd_auth_storage.erl b/src/ejabberd_auth_storage.erl index 8556faa2d..32b75f37c 100644 --- a/src/ejabberd_auth_storage.erl +++ b/src/ejabberd_auth_storage.erl @@ -54,6 +54,7 @@ %% External exports -export([start/1, + stop/1, set_password/3, check_password/3, check_password/5, @@ -103,6 +104,9 @@ start(Host) -> update_reg_users_counter_table(Host), ok. +stop(_Host) -> + ok. + update_reg_users_counter_table(Server) -> Set = get_vh_registered_users(Server), Size = length(Set),