diff options
Diffstat (limited to 'src/mod_announce.erl')
-rw-r--r-- | src/mod_announce.erl | 110 |
1 files changed, 56 insertions, 54 deletions
diff --git a/src/mod_announce.erl b/src/mod_announce.erl index 6d11cde22..bdd2751b7 100644 --- a/src/mod_announce.erl +++ b/src/mod_announce.erl @@ -53,6 +53,7 @@ -include("logger.hrl"). -include("xmpp.hrl"). -include("mod_announce.hrl"). +-include("translate.hrl"). -callback init(binary(), gen_mod:opts()) -> any(). -callback import(binary(), binary(), [binary()]) -> ok. @@ -85,8 +86,8 @@ stop(Host) -> gen_mod:stop_child(?MODULE, Host). reload(Host, NewOpts, OldOpts) -> - NewMod = gen_mod:db_mod(Host, NewOpts, ?MODULE), - OldMod = gen_mod:db_mod(Host, OldOpts, ?MODULE), + NewMod = gen_mod:db_mod(NewOpts, ?MODULE), + OldMod = gen_mod:db_mod(OldOpts, ?MODULE), if NewMod /= OldMod -> NewMod:init(Host, NewOpts); true -> @@ -102,7 +103,7 @@ depends(_Host, _Opts) -> %%==================================================================== init([Host, Opts]) -> process_flag(trap_exit, true), - Mod = gen_mod:db_mod(Host, Opts, ?MODULE), + Mod = gen_mod:db_mod(Opts, ?MODULE), Mod:init(Host, Opts), init_cache(Mod, Host, Opts), ejabberd_hooks:add(local_send_to_resource_hook, Host, @@ -142,12 +143,12 @@ handle_cast({F, #message{from = From, to = To} = Pkt}, State) when is_atom(F) -> end, {noreply, State}; handle_cast(Msg, State) -> - ?WARNING_MSG("unexpected cast: ~p", [Msg]), + ?WARNING_MSG("Unexpected cast: ~p", [Msg]), {noreply, State}. handle_info(Info, State) -> - ?WARNING_MSG("unexpected info: ~p", [Info]), + ?WARNING_MSG("Unexpected info: ~p", [Info]), {noreply, State}. terminate(_Reason, #state{host = Host}) -> @@ -236,7 +237,7 @@ disco_identity(Acc, _From, _To, Node, Lang) -> -define(INFO_RESULT(Allow, Feats, Lang), case Allow of deny -> - {error, xmpp:err_forbidden(<<"Access denied by service policy">>, Lang)}; + {error, xmpp:err_forbidden(?T("Access denied by service policy"), Lang)}; allow -> {result, Feats} end). @@ -251,7 +252,7 @@ disco_features(Acc, From, #jid{lserver = LServer} = _To, <<"announce">>, Lang) - case {acl:match_rule(LServer, Access1, From), acl:match_rule(global, Access2, From)} of {deny, deny} -> - Txt = <<"Access denied by service policy">>, + Txt = ?T("Access denied by service policy"), {error, xmpp:err_forbidden(Txt, Lang)}; _ -> {result, []} @@ -302,7 +303,7 @@ disco_features(Acc, From, #jid{lserver = LServer} = _To, Node, Lang) -> -define(ITEMS_RESULT(Allow, Items, Lang), case Allow of deny -> - {error, xmpp:err_forbidden(<<"Access denied by service policy">>, Lang)}; + {error, xmpp:err_forbidden(?T("Access denied by service policy"), Lang)}; allow -> {result, Items} end). @@ -416,7 +417,7 @@ commands_result(Allow, From, To, Request) -> case Allow of deny -> Lang = Request#adhoc_command.lang, - {error, xmpp:err_forbidden(<<"Access denied by service policy">>, Lang)}; + {error, xmpp:err_forbidden(?T("Access denied by service policy"), Lang)}; allow -> announce_commands(From, To, Request) end. @@ -487,7 +488,7 @@ announce_commands(From, To, Err end; true -> - Txt = <<"Unexpected action">>, + Txt = ?T("Unexpected action"), {error, xmpp:err_bad_request(Txt, Lang)} end. @@ -513,16 +514,16 @@ generate_adhoc_form(Lang, Node, ServerHost) -> [#xdata_field{type = boolean, var = <<"confirm">>, label = translate:translate( - Lang, <<"Really delete message of the day?">>), + Lang, ?T("Really delete message of the day?")), values = [<<"true">>]}]; true -> [#xdata_field{type = 'text-single', var = <<"subject">>, - label = translate:translate(Lang, <<"Subject">>), + label = translate:translate(Lang, ?T("Subject")), values = vvaluel(OldSubject)}, #xdata_field{type = 'text-multi', var = <<"body">>, - label = translate:translate(Lang, <<"Message body">>), + label = translate:translate(Lang, ?T("Message body")), values = vvaluel(OldBody)}] end, #xdata{type = form, @@ -573,7 +574,7 @@ handle_adhoc_form(From, #jid{lserver = LServer} = To, %% An announce message with no body is definitely an operator error. %% Throw an error and give him/her a chance to send message again. {error, xmpp:err_not_acceptable( - <<"No body provided for announce message">>, Lang)}; + ?T("No body provided for announce message"), Lang)}; %% Now send the packet to ?MODULE. %% We don't use direct announce_* functions because it %% leads to large delay in response and <iq/> queries processing @@ -596,32 +597,32 @@ handle_adhoc_form(From, #jid{lserver = LServer} = To, Junk -> %% This can't happen, as we haven't registered any other %% command nodes. - ?ERROR_MSG("got unexpected node/body = ~p", [Junk]), + ?ERROR_MSG("Unexpected node/body = ~p", [Junk]), {error, xmpp:err_internal_server_error()} end. get_title(Lang, <<"announce">>) -> - translate:translate(Lang, <<"Announcements">>); + translate:translate(Lang, ?T("Announcements")); get_title(Lang, ?NS_ADMIN_ANNOUNCE_ALL) -> - translate:translate(Lang, <<"Send announcement to all users">>); + translate:translate(Lang, ?T("Send announcement to all users")); get_title(Lang, ?NS_ADMIN_ANNOUNCE_ALL_ALLHOSTS) -> - translate:translate(Lang, <<"Send announcement to all users on all hosts">>); + translate:translate(Lang, ?T("Send announcement to all users on all hosts")); get_title(Lang, ?NS_ADMIN_ANNOUNCE) -> - translate:translate(Lang, <<"Send announcement to all online users">>); + translate:translate(Lang, ?T("Send announcement to all online users")); get_title(Lang, ?NS_ADMIN_ANNOUNCE_ALLHOSTS) -> - translate:translate(Lang, <<"Send announcement to all online users on all hosts">>); + translate:translate(Lang, ?T("Send announcement to all online users on all hosts")); get_title(Lang, ?NS_ADMIN_SET_MOTD) -> - translate:translate(Lang, <<"Set message of the day and send to online users">>); + translate:translate(Lang, ?T("Set message of the day and send to online users")); get_title(Lang, ?NS_ADMIN_SET_MOTD_ALLHOSTS) -> - translate:translate(Lang, <<"Set message of the day on all hosts and send to online users">>); + translate:translate(Lang, ?T("Set message of the day on all hosts and send to online users")); get_title(Lang, ?NS_ADMIN_EDIT_MOTD) -> - translate:translate(Lang, <<"Update message of the day (don't send)">>); + translate:translate(Lang, ?T("Update message of the day (don't send)")); get_title(Lang, ?NS_ADMIN_EDIT_MOTD_ALLHOSTS) -> - translate:translate(Lang, <<"Update message of the day on all hosts (don't send)">>); + translate:translate(Lang, ?T("Update message of the day on all hosts (don't send)")); get_title(Lang, ?NS_ADMIN_DELETE_MOTD) -> - translate:translate(Lang, <<"Delete message of the day">>); + translate:translate(Lang, ?T("Delete message of the day")); get_title(Lang, ?NS_ADMIN_DELETE_MOTD_ALLHOSTS) -> - translate:translate(Lang, <<"Delete message of the day on all hosts">>). + translate:translate(Lang, ?T("Delete message of the day on all hosts")). %%------------------------------------------------------------------------- @@ -663,7 +664,7 @@ announce_motd(#message{to = To} = Packet) -> announce_motd(To#jid.lserver, Packet). announce_all_hosts_motd(Packet) -> - Hosts = ejabberd_config:get_myhosts(), + Hosts = ejabberd_option:hosts(), [announce_motd(Host, Packet) || Host <- Hosts]. announce_motd(Host, Packet) -> @@ -678,7 +679,7 @@ announce_motd_update(#message{to = To} = Packet) -> announce_motd_update(To#jid.lserver, Packet). announce_all_hosts_motd_update(Packet) -> - Hosts = ejabberd_config:get_myhosts(), + Hosts = ejabberd_option:hosts(), [announce_motd_update(Host, Packet) || Host <- Hosts]. announce_motd_update(LServer, Packet) -> @@ -696,7 +697,7 @@ announce_all_hosts_motd_delete(_Packet) -> fun(Host) -> Mod = gen_mod:db_mod(Host, ?MODULE), delete_motd(Mod, Host) - end, ejabberd_config:get_myhosts()). + end, ejabberd_option:hosts()). -spec send_motd({presence(), ejabberd_c2s:state()}) -> {presence(), ejabberd_c2s:state()}. send_motd({_, #{pres_last := _}} = Acc) -> @@ -708,7 +709,7 @@ send_motd({#presence{type = available}, Mod = gen_mod:db_mod(LServer, ?MODULE), case get_motd(Mod, LServer) of {ok, Packet} -> - CodecOpts = ejabberd_config:codec_options(LServer), + CodecOpts = ejabberd_config:codec_options(), try xmpp:decode(Packet, ?NS_CLIENT, CodecOpts) of Msg -> case is_motd_user(Mod, LUser, LServer) of @@ -721,7 +722,7 @@ send_motd({#presence{type = available}, ok end catch _:{xmpp_codec, Why} -> - ?ERROR_MSG("failed to decode motd packet ~p: ~s", + ?ERROR_MSG("Failed to decode motd packet ~p: ~s", [Packet, xmpp:format_error(Why)]) end; _ -> @@ -800,12 +801,12 @@ get_stored_motd(LServer) -> Mod = gen_mod:db_mod(LServer, ?MODULE), case get_motd(Mod, LServer) of {ok, Packet} -> - CodecOpts = ejabberd_config:codec_options(LServer), + CodecOpts = ejabberd_config:codec_options(), try xmpp:decode(Packet, ?NS_CLIENT, CodecOpts) of #message{body = Body, subject = Subject} -> {xmpp:get_text(Subject), xmpp:get_text(Body)} catch _:{xmpp_codec, Why} -> - ?ERROR_MSG("failed to decode motd packet ~p: ~s", + ?ERROR_MSG("Failed to decode motd packet ~p: ~s", [Packet, xmpp:format_error(Why)]) end; _ -> @@ -829,7 +830,7 @@ send_announcement_to_all(Host, SubjectS, BodyS) -> -spec get_access(global | binary()) -> atom(). get_access(Host) -> - gen_mod:get_module_opt(Host, ?MODULE, access). + mod_announce_opt:access(Host). -spec add_store_hint(stanza()) -> stanza(). add_store_hint(El) -> @@ -838,7 +839,7 @@ add_store_hint(El) -> -spec route_forbidden_error(stanza()) -> ok. route_forbidden_error(Packet) -> Lang = xmpp:get_lang(Packet), - Err = xmpp:err_forbidden(<<"Access denied by service policy">>, Lang), + Err = xmpp:err_forbidden(?T("Access denied by service policy"), Lang), ejabberd_router:route_error(Packet, Err). -spec init_cache(module(), binary(), gen_mod:opts()) -> ok. @@ -853,19 +854,16 @@ init_cache(Mod, Host, Opts) -> -spec cache_opts(gen_mod:opts()) -> [proplists:property()]. cache_opts(Opts) -> - MaxSize = gen_mod:get_opt(cache_size, Opts), - CacheMissed = gen_mod:get_opt(cache_missed, Opts), - LifeTime = case gen_mod:get_opt(cache_life_time, Opts) of - infinity -> infinity; - I -> timer:seconds(I) - end, + MaxSize = mod_announce_opt:cache_size(Opts), + CacheMissed = mod_announce_opt:cache_missed(Opts), + LifeTime = mod_announce_opt:cache_life_time(Opts), [{max_size, MaxSize}, {cache_missed, CacheMissed}, {life_time, LifeTime}]. -spec use_cache(module(), binary()) -> boolean(). use_cache(Mod, Host) -> case erlang:function_exported(Mod, use_cache, 1) of true -> Mod:use_cache(Host); - false -> gen_mod:get_module_opt(Host, ?MODULE, use_cache) + false -> mod_announce_opt:use_cache(Host) end. -spec cache_nodes(module(), binary()) -> [node()]. @@ -897,19 +895,23 @@ import(LServer, {sql, _}, DBType, Tab, List) -> Mod = gen_mod:db_mod(DBType, ?MODULE), Mod:import(LServer, Tab, List). -mod_opt_type(access) -> fun acl:access_rules_validator/1; -mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end; -mod_opt_type(O) when O == cache_life_time; O == cache_size -> - fun (I) when is_integer(I), I > 0 -> I; - (infinity) -> infinity - end; -mod_opt_type(O) when O == use_cache; O == cache_missed -> - fun (B) when is_boolean(B) -> B end. +mod_opt_type(access) -> + econf:acl(); +mod_opt_type(db_type) -> + econf:db_type(?MODULE); +mod_opt_type(use_cache) -> + econf:bool(); +mod_opt_type(cache_size) -> + econf:pos_int(infinity); +mod_opt_type(cache_missed) -> + econf:bool(); +mod_opt_type(cache_life_time) -> + econf:timeout(second, infinity). mod_options(Host) -> [{access, none}, {db_type, ejabberd_config:default_db(Host, ?MODULE)}, - {use_cache, ejabberd_config:use_cache(Host)}, - {cache_size, ejabberd_config:cache_size(Host)}, - {cache_missed, ejabberd_config:cache_missed(Host)}, - {cache_life_time, ejabberd_config:cache_life_time(Host)}]. + {use_cache, ejabberd_option:use_cache(Host)}, + {cache_size, ejabberd_option:cache_size(Host)}, + {cache_missed, ejabberd_option:cache_missed(Host)}, + {cache_life_time, ejabberd_option:cache_life_time(Host)}]. |