25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-24 16:23:40 +01:00

Update mod_disco to the new gen_mod API

This commit is contained in:
Alexey Shchepin 2023-07-31 16:28:54 +03:00
parent 5a9099f49c
commit 03ffbe00c1

View File

@ -51,16 +51,6 @@
-export_type([features_acc/0, items_acc/0]). -export_type([features_acc/0, items_acc/0]).
start(Host, Opts) -> start(Host, Opts) ->
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS, ?MODULE,
process_local_iq_items),
gen_iq_handler:add_iq_handler(ejabberd_local, Host,
?NS_DISCO_INFO, ?MODULE,
process_local_iq_info),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
?NS_DISCO_ITEMS, ?MODULE, process_sm_iq_items),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
?NS_DISCO_INFO, ?MODULE, process_sm_iq_info),
catch ets:new(disco_extra_domains, catch ets:new(disco_extra_domains,
[named_table, ordered_set, public, [named_table, ordered_set, public,
{heir, erlang:group_leader(), none}]), {heir, erlang:group_leader(), none}]),
@ -69,45 +59,23 @@ start(Host, Opts) ->
register_extra_domain(Host, Domain) register_extra_domain(Host, Domain)
end, end,
ExtraDomains), ExtraDomains),
ejabberd_hooks:add(disco_local_items, Host, ?MODULE, {ok, [{iq_handler, ejabberd_local, ?NS_DISCO_ITEMS,
get_local_services, 100), ?MODULE, process_local_iq_items},
ejabberd_hooks:add(disco_local_features, Host, ?MODULE, {iq_handler, ejabberd_local, ?NS_DISCO_INFO,
get_local_features, 100), ?MODULE, process_local_iq_info},
ejabberd_hooks:add(disco_local_identity, Host, ?MODULE, {iq_handler, ejabberd_sm, ?NS_DISCO_ITEMS,
get_local_identity, 100), ?MODULE, process_sm_iq_items},
ejabberd_hooks:add(disco_sm_items, Host, ?MODULE, {iq_handler, ejabberd_sm, ?NS_DISCO_INFO,
get_sm_items, 100), ?MODULE, process_sm_iq_info},
ejabberd_hooks:add(disco_sm_features, Host, ?MODULE, {hook, disco_local_items, ?MODULE, get_local_services, 100},
get_sm_features, 100), {hook, disco_local_features, ?MODULE, get_local_features, 100},
ejabberd_hooks:add(disco_sm_identity, Host, ?MODULE, {hook, disco_local_identity, ?MODULE, get_local_identity, 100},
get_sm_identity, 100), {hook, disco_sm_items, ?MODULE, get_sm_items, 100},
ejabberd_hooks:add(disco_info, Host, ?MODULE, get_info, {hook, disco_sm_features, ?MODULE, get_sm_features, 100},
100), {hook, disco_sm_identity, ?MODULE, get_sm_identity, 100},
ok. {hook, disco_info, ?MODULE, get_info, 100}]}.
stop(Host) -> stop(Host) ->
ejabberd_hooks:delete(disco_sm_identity, Host, ?MODULE,
get_sm_identity, 100),
ejabberd_hooks:delete(disco_sm_features, Host, ?MODULE,
get_sm_features, 100),
ejabberd_hooks:delete(disco_sm_items, Host, ?MODULE,
get_sm_items, 100),
ejabberd_hooks:delete(disco_local_identity, Host,
?MODULE, get_local_identity, 100),
ejabberd_hooks:delete(disco_local_features, Host,
?MODULE, get_local_features, 100),
ejabberd_hooks:delete(disco_local_items, Host, ?MODULE,
get_local_services, 100),
ejabberd_hooks:delete(disco_info, Host, ?MODULE,
get_info, 100),
gen_iq_handler:remove_iq_handler(ejabberd_local, Host,
?NS_DISCO_ITEMS),
gen_iq_handler:remove_iq_handler(ejabberd_local, Host,
?NS_DISCO_INFO),
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host,
?NS_DISCO_ITEMS),
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host,
?NS_DISCO_INFO),
catch ets:match_delete(disco_extra_domains, catch ets:match_delete(disco_extra_domains,
{{'_', Host}}), {{'_', Host}}),
ok. ok.