diff options
Diffstat (limited to 'src/mod_private.erl')
-rw-r--r-- | src/mod_private.erl | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/mod_private.erl b/src/mod_private.erl index f69f2cc96..19f547642 100644 --- a/src/mod_private.erl +++ b/src/mod_private.erl @@ -43,6 +43,7 @@ -include("xmpp.hrl"). -include("mod_private.hrl"). -include("ejabberd_commands.hrl"). +-include("translate.hrl"). -define(PRIVATE_CACHE, private_cache). @@ -58,7 +59,7 @@ -optional_callbacks([use_cache/1, cache_nodes/1]). start(Host, Opts) -> - 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(remove_user, Host, ?MODULE, remove_user, 50), @@ -80,8 +81,8 @@ stop(Host) -> end. 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 -> @@ -92,20 +93,23 @@ reload(Host, NewOpts, OldOpts) -> depends(_Host, _Opts) -> [{mod_pubsub, soft}]. -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(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) -> [{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)}]. -spec get_sm_features({error, stanza_error()} | empty | {result, [binary()]}, jid(), jid(), binary(), binary()) -> @@ -133,7 +137,7 @@ process_sm_iq(#iq{type = Type, lang = Lang, sub_els = [#private{sub_els = Els0}]} = IQ) -> case filter_xmlels(Els0) of [] -> - Txt = <<"No private data found in this query">>, + Txt = ?T("No private data found in this query"), xmpp:make_error(IQ, xmpp:err_bad_request(Txt, Lang)); Data when Type == set -> case set_data(From, Data) of @@ -142,14 +146,14 @@ process_sm_iq(#iq{type = Type, lang = Lang, {error, #stanza_error{} = Err} -> xmpp:make_error(IQ, Err); {error, _} -> - Txt = <<"Database failure">>, + Txt = ?T("Database failure"), Err = xmpp:err_internal_server_error(Txt, Lang), xmpp:make_error(IQ, Err) end; Data when Type == get -> case get_data(LUser, LServer, Data) of {error, _} -> - Txt = <<"Database failure">>, + Txt = ?T("Database failure"), Err = xmpp:err_internal_server_error(Txt, Lang), xmpp:make_error(IQ, Err); Els -> @@ -157,7 +161,7 @@ process_sm_iq(#iq{type = Type, lang = Lang, end end; process_sm_iq(#iq{lang = Lang} = IQ) -> - Txt = <<"Query to another users is forbidden">>, + Txt = ?T("Query to another users is forbidden"), xmpp:make_error(IQ, xmpp:err_forbidden(Txt, Lang)). -spec filter_xmlels([xmlel()]) -> [{binary(), xmlel()}]. @@ -282,7 +286,8 @@ get_commands_spec() -> [#ejabberd_commands{name = bookmarks_to_pep, tags = [private], desc = "Export private XML storage bookmarks to PEP", module = ?MODULE, function = bookmarks_to_pep, - args = [{user, binary}, {server, binary}], + args = [{user, binary}, {host, binary}], + args_rename = [{server, host}], args_desc = ["Username", "Server"], args_example = [<<"bob">>, <<"example.com">>], result = {res, restuple}, @@ -348,19 +353,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_private_opt:cache_size(Opts), + CacheMissed = mod_private_opt:cache_missed(Opts), + LifeTime = mod_private_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_private_opt:use_cache(Host) end. -spec cache_nodes(module(), binary()) -> [node()]. |