mirror of
https://github.com/processone/ejabberd
synced 2025-10-03 09:49:18 +02:00
Register hooks and iq_handler using the gen_mod support for registrations
This commit is contained in:
parent
b8cb1bbdcf
commit
d9e86600dc
2 changed files with 26 additions and 67 deletions
|
@ -64,29 +64,22 @@ start(Host, Opts) ->
|
||||||
case Mod:init(Host, Opts) of
|
case Mod:init(Host, Opts) of
|
||||||
ok ->
|
ok ->
|
||||||
init_cache(Mod, Host, Opts),
|
init_cache(Mod, Host, Opts),
|
||||||
ejabberd_hooks:add(bounce_sm_packet, Host, ?MODULE, bounce_sm_packet, 50),
|
{ok,
|
||||||
ejabberd_hooks:add(disco_sm_features, Host, ?MODULE, disco_sm_features, 50),
|
[{hook, bounce_sm_packet, bounce_sm_packet, 50},
|
||||||
ejabberd_hooks:add(remove_user, Host, ?MODULE, remove_user, 50),
|
{hook, disco_sm_features, disco_sm_features, 50},
|
||||||
ejabberd_hooks:add(roster_get, Host, ?MODULE, get_mix_roster_items, 50),
|
{hook, remove_user, remove_user, 50},
|
||||||
ejabberd_hooks:add(webadmin_user, Host, ?MODULE, webadmin_user, 50),
|
{hook, roster_get, get_mix_roster_items, 50},
|
||||||
ejabberd_hooks:add(webadmin_menu_hostuser, Host, ?MODULE, webadmin_menu_hostuser, 50),
|
{hook, webadmin_user, webadmin_user, 50},
|
||||||
ejabberd_hooks:add(webadmin_page_hostuser, Host, ?MODULE, webadmin_page_hostuser, 50),
|
{hook, webadmin_menu_hostuser, webadmin_menu_hostuser, 50},
|
||||||
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0, ?MODULE, process_iq),
|
{hook, webadmin_page_hostuser, webadmin_page_hostuser, 50},
|
||||||
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_2, ?MODULE, process_iq);
|
{iq_handler, ejabberd_sm, ?NS_MIX_PAM_0, process_iq},
|
||||||
|
{iq_handler, ejabberd_sm, ?NS_MIX_PAM_2, process_iq}]};
|
||||||
Err ->
|
Err ->
|
||||||
Err
|
Err
|
||||||
end.
|
end.
|
||||||
|
|
||||||
stop(Host) ->
|
stop(_Host) ->
|
||||||
ejabberd_hooks:delete(bounce_sm_packet, Host, ?MODULE, bounce_sm_packet, 50),
|
ok.
|
||||||
ejabberd_hooks:delete(disco_sm_features, Host, ?MODULE, disco_sm_features, 50),
|
|
||||||
ejabberd_hooks:delete(remove_user, Host, ?MODULE, remove_user, 50),
|
|
||||||
ejabberd_hooks:delete(roster_get, Host, ?MODULE, get_mix_roster_items, 50),
|
|
||||||
ejabberd_hooks:delete(webadmin_user, Host, ?MODULE, webadmin_user, 50),
|
|
||||||
ejabberd_hooks:delete(webadmin_menu_hostuser, Host, ?MODULE, webadmin_menu_hostuser, 50),
|
|
||||||
ejabberd_hooks:delete(webadmin_page_hostuser, Host, ?MODULE, webadmin_page_hostuser, 50),
|
|
||||||
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_0),
|
|
||||||
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MIX_PAM_2).
|
|
||||||
|
|
||||||
reload(Host, NewOpts, OldOpts) ->
|
reload(Host, NewOpts, OldOpts) ->
|
||||||
NewMod = gen_mod:db_mod(NewOpts, ?MODULE),
|
NewMod = gen_mod:db_mod(NewOpts, ?MODULE),
|
||||||
|
|
|
@ -47,13 +47,22 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% gen_mod callbacks.
|
%% gen_mod callbacks.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
-spec start(binary(), gen_mod:opts()) -> ok.
|
-spec start(binary(), gen_mod:opts()) -> {ok, [gen_mod:registration()]}.
|
||||||
start(Host, _Opts) ->
|
start(_Host, _Opts) ->
|
||||||
register_hooks(Host).
|
{ok,
|
||||||
|
[{hook, c2s_session_pending, c2s_session_pending, 50},
|
||||||
|
{hook, c2s_session_resumed, c2s_session_resumed, 50},
|
||||||
|
{hook, c2s_copy_session, c2s_copy_session, 50},
|
||||||
|
{hook, c2s_handle_cast, c2s_handle_cast, 40},
|
||||||
|
{hook, c2s_handle_info, c2s_handle_info, 50},
|
||||||
|
{hook, c2s_handle_send, c2s_stanza, 50},
|
||||||
|
%% Wait for ejabberd_pkix before running our ejabberd_started/0, so that we
|
||||||
|
%% don't initiate s2s connections before certificates are loaded:
|
||||||
|
{hook, ejabberd_started, ejabberd_started, 90, global}]}.
|
||||||
|
|
||||||
-spec stop(binary()) -> ok.
|
-spec stop(binary()) -> ok.
|
||||||
stop(Host) ->
|
stop(_Host) ->
|
||||||
unregister_hooks(Host).
|
ok.
|
||||||
|
|
||||||
-spec reload(binary(), gen_mod:opts(), gen_mod:opts()) -> ok.
|
-spec reload(binary(), gen_mod:opts(), gen_mod:opts()) -> ok.
|
||||||
reload(_Host, _NewOpts, _OldOpts) ->
|
reload(_Host, _NewOpts, _OldOpts) ->
|
||||||
|
@ -119,49 +128,6 @@ mod_doc() ->
|
||||||
"out as per the 'resume_timeout' option. "
|
"out as per the 'resume_timeout' option. "
|
||||||
"The default value is 'true'.")}}]}.
|
"The default value is 'true'.")}}]}.
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
|
||||||
%% Register/unregister hooks.
|
|
||||||
%%--------------------------------------------------------------------
|
|
||||||
-spec register_hooks(binary()) -> ok.
|
|
||||||
register_hooks(Host) ->
|
|
||||||
ejabberd_hooks:add(c2s_session_pending, Host, ?MODULE,
|
|
||||||
c2s_session_pending, 50),
|
|
||||||
ejabberd_hooks:add(c2s_session_resumed, Host, ?MODULE,
|
|
||||||
c2s_session_resumed, 50),
|
|
||||||
ejabberd_hooks:add(c2s_copy_session, Host, ?MODULE,
|
|
||||||
c2s_copy_session, 50),
|
|
||||||
ejabberd_hooks:add(c2s_handle_cast, Host, ?MODULE,
|
|
||||||
c2s_handle_cast, 40),
|
|
||||||
ejabberd_hooks:add(c2s_handle_info, Host, ?MODULE,
|
|
||||||
c2s_handle_info, 50),
|
|
||||||
ejabberd_hooks:add(c2s_handle_send, Host, ?MODULE,
|
|
||||||
c2s_stanza, 50),
|
|
||||||
% Wait for ejabberd_pkix before running our ejabberd_started/0, so that we
|
|
||||||
% don't initiate s2s connections before certificates are loaded:
|
|
||||||
ejabberd_hooks:add(ejabberd_started, ?MODULE, ejabberd_started, 90).
|
|
||||||
|
|
||||||
-spec unregister_hooks(binary()) -> ok.
|
|
||||||
unregister_hooks(Host) ->
|
|
||||||
ejabberd_hooks:delete(c2s_session_pending, Host, ?MODULE,
|
|
||||||
c2s_session_pending, 50),
|
|
||||||
ejabberd_hooks:delete(c2s_session_resumed, Host, ?MODULE,
|
|
||||||
c2s_session_resumed, 50),
|
|
||||||
ejabberd_hooks:delete(c2s_copy_session, Host, ?MODULE,
|
|
||||||
c2s_copy_session, 50),
|
|
||||||
ejabberd_hooks:delete(c2s_handle_cast, Host, ?MODULE,
|
|
||||||
c2s_handle_cast, 40),
|
|
||||||
ejabberd_hooks:delete(c2s_handle_info, Host, ?MODULE,
|
|
||||||
c2s_handle_info, 50),
|
|
||||||
ejabberd_hooks:delete(c2s_handle_send, Host, ?MODULE,
|
|
||||||
c2s_stanza, 50),
|
|
||||||
case gen_mod:is_loaded_elsewhere(Host, ?MODULE) of
|
|
||||||
false ->
|
|
||||||
ejabberd_hooks:delete(
|
|
||||||
ejabberd_started, ?MODULE, ejabberd_started, 90);
|
|
||||||
true ->
|
|
||||||
ok
|
|
||||||
end.
|
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Hook callbacks.
|
%% Hook callbacks.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue