diff --git a/src/mam/mod_mam.erl b/src/mam/mod_mam.erl index 6f0554791a6..38d90c8635d 100644 --- a/src/mam/mod_mam.erl +++ b/src/mam/mod_mam.erl @@ -210,14 +210,7 @@ start(Host, Opts) -> ?MODULE, process_mam_iq, IQDisc), gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_06, ?MODULE, process_mam_iq, IQDisc), - ejabberd_hooks:add(user_send_packet, Host, ?MODULE, user_send_packet, 90), - ejabberd_hooks:add(rest_user_send_packet, Host, ?MODULE, user_send_packet, 90), - ejabberd_hooks:add(filter_local_packet, Host, ?MODULE, filter_packet, 90), - ejabberd_hooks:add(remove_user, Host, ?MODULE, remove_user, 50), - ejabberd_hooks:add(anonymous_purge_hook, Host, ?MODULE, remove_user, 50), - ejabberd_hooks:add(amp_determine_strategy, Host, ?MODULE, determine_amp_strategy, 20), - ejabberd_hooks:add(sm_filter_offline_message, Host, ?MODULE, sm_filter_offline_message, 50), - ejabberd_hooks:add(get_personal_data, Host, ?MODULE, get_personal_data, 50), + ejabberd_hooks:add(hooks(Host)), ensure_metrics(Host), ok. @@ -225,14 +218,7 @@ start(Host, Opts) -> -spec stop(Host :: jid:server()) -> any(). stop(Host) -> ?LOG_INFO(#{what => mam_stopping}), - ejabberd_hooks:delete(sm_filter_offline_message, Host, ?MODULE, sm_filter_offline_message, 50), - ejabberd_hooks:delete(user_send_packet, Host, ?MODULE, user_send_packet, 90), - ejabberd_hooks:delete(rest_user_send_packet, Host, ?MODULE, user_send_packet, 90), - ejabberd_hooks:delete(filter_local_packet, Host, ?MODULE, filter_packet, 90), - ejabberd_hooks:delete(remove_user, Host, ?MODULE, remove_user, 50), - ejabberd_hooks:delete(anonymous_purge_hook, Host, ?MODULE, remove_user, 50), - ejabberd_hooks:delete(amp_determine_strategy, Host, ?MODULE, determine_amp_strategy, 20), - ejabberd_hooks:delete(get_personal_data, Host, ?MODULE, get_personal_data, 50), + ejabberd_hooks:delete(hooks(Host)), gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_04), gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_06), [mod_disco:unregister_feature(Host, Feature) || Feature <- features(?MODULE, Host)], @@ -685,6 +671,19 @@ config_metrics(Host) -> OptsToReport = [{backend, rdbms}], %list of tuples {option, default_value} mongoose_module_metrics:opts_for_module(Host, ?MODULE, OptsToReport). +-spec hooks(jid:lserver()) -> [ejabberd_hooks:hook()]. +hooks(Host) -> + [{user_send_packet, Host, ?MODULE, user_send_packet, 90}, + {rest_user_send_packet, Host, ?MODULE, user_send_packet, 90}, + {filter_local_packet, Host, ?MODULE, filter_packet, 90}, + {remove_user, Host, ?MODULE, remove_user, 50}, + {anonymous_purge_hook, Host, ?MODULE, remove_user, 50}, + {amp_determine_strategy, Host, ?MODULE, determine_amp_strategy, 20}, + {sm_filter_offline_message, Host, ?MODULE, sm_filter_offline_message, 50}, + {get_personal_data, Host, ?MODULE, get_personal_data, 50} + | mongoose_metrics_mam_hooks:get_mam_hooks(Host)]. + + ensure_metrics(Host) -> mongoose_metrics:ensure_metric(Host, [backends, ?MODULE, lookup], histogram), mongoose_metrics:ensure_metric(Host, [Host, modMamLookups, simple], spiral), @@ -692,20 +691,18 @@ ensure_metrics(Host) -> lists:foreach(fun(Name) -> mongoose_metrics:ensure_metric(Host, Name, spiral) end, - spirals()), - Hooks = mongoose_metrics_mam_hooks:get_hooks(Host), - ejabberd_hooks:add(Hooks). + spirals()). spirals() -> [modMamPrefsSets, - modMamPrefsGets, - modMamArchiveRemoved, - modMamLookups, - modMamForwarded, - modMamArchived, - modMamFlushed, - modMamDropped, - modMamDropped2, - modMamDroppedIQ, - modMamSinglePurges, - modMamMultiplePurges]. + modMamPrefsGets, + modMamArchiveRemoved, + modMamLookups, + modMamForwarded, + modMamArchived, + modMamFlushed, + modMamDropped, + modMamDropped2, + modMamDroppedIQ, + modMamSinglePurges, + modMamMultiplePurges]. diff --git a/src/metrics/mongoose_metrics_mam_hooks.erl b/src/metrics/mongoose_metrics_mam_hooks.erl index b85ce0754f9..5346902ae5f 100644 --- a/src/metrics/mongoose_metrics_mam_hooks.erl +++ b/src/metrics/mongoose_metrics_mam_hooks.erl @@ -10,7 +10,8 @@ -include("mongoose.hrl"). -include("jlib.hrl"). --export([get_hooks/1]). +-export([get_mam_hooks/1, + get_mam_muc_hooks/1]). %%------------------- %% Internal exports @@ -33,15 +34,21 @@ %% Implementation %%------------------- -%% @doc Here will be declared which hooks should be registered --spec get_hooks(_) -> [ejabberd_hooks:hook(), ...]. -get_hooks(Host) -> +%% @doc Here will be declared which hooks should be registered when mod_mam is enabled. +-spec get_mam_hooks(_) -> [ejabberd_hooks:hook(), ...]. +get_mam_hooks(Host) -> [ {mam_set_prefs, Host, ?MODULE, mam_set_prefs, 50}, {mam_get_prefs, Host, ?MODULE, mam_get_prefs, 50}, {mam_archive_message, Host, ?MODULE, mam_archive_message, 50}, {mam_remove_archive, Host, ?MODULE, mam_remove_archive, 50}, - {mam_lookup_messages, Host, ?MODULE, mam_lookup_messages, 100}, + {mam_lookup_messages, Host, ?MODULE, mam_lookup_messages, 100} + ]. + +%% @doc Here will be declared which hooks should be registered when mod_mam_muc is enabled. +-spec get_mam_muc_hooks(_) -> [ejabberd_hooks:hook(), ...]. +get_mam_muc_hooks(Host) -> + [ {mam_muc_set_prefs, Host, ?MODULE, mam_muc_set_prefs, 50}, {mam_muc_get_prefs, Host, ?MODULE, mam_muc_get_prefs, 50}, {mam_muc_archive_message, Host, ?MODULE, mam_muc_archive_message, 50},