diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-30 19:01:47 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-30 19:01:47 +0300 |
commit | fddd6110e00df12c99a20a2cc9d074f5f4f1f965 (patch) | |
tree | 366575b855f1b2013db7eeb02ecb213f81c98c1f /src/mod_register.erl | |
parent | Merge branch 'new-option-validation' (diff) |
Don't validate an option in gen_mod:get*opt() functions
The changes are very similar to those from previous commit:
* Now there is no need to pass validating function in
gen_mod:get_opt() and gen_mod:get_module_opt() functions,
because the modules' configuration keeps already validated values.
* New functions gen_mod:get_opt/2 and gen_mod:get_module_opt/3 are
introduced.
* Functions gen_mod:get_opt/4 and get_module_opt/5 are deprecated.
If the functions are still called, the "function" argument is
simply ignored.
* Validating callback Mod:listen_opt_type/1 is introduced to validate
listening options at startup.
Diffstat (limited to 'src/mod_register.erl')
-rw-r--r-- | src/mod_register.erl | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/src/mod_register.erl b/src/mod_register.erl index 63f7708b..2d6442ba 100644 --- a/src/mod_register.erl +++ b/src/mod_register.erl @@ -44,8 +44,7 @@ -include("xmpp.hrl"). start(Host, Opts) -> - IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1, - one_queue), + IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER, ?MODULE, process_iq, IQDisc), gen_iq_handler:add_iq_handler(ejabberd_sm, Host, @@ -70,9 +69,7 @@ stop(Host) -> ?NS_REGISTER). reload(Host, NewOpts, OldOpts) -> - case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, - fun gen_iq_handler:check_type/1, - one_queue) of + case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of {false, IQDisc, _} -> gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER, ?MODULE, process_iq, IQDisc), @@ -87,9 +84,7 @@ depends(_Host, _Opts) -> -spec stream_feature_register([xmpp_element()], binary()) -> [xmpp_element()]. stream_feature_register(Acc, Host) -> - AF = gen_mod:get_module_opt(Host, ?MODULE, access_from, - fun(A) -> A end, - all), + AF = gen_mod:get_module_opt(Host, ?MODULE, access_from, all), case (AF /= none) of true -> [#feature_register{}|Acc]; @@ -120,15 +115,12 @@ process_iq(#iq{from = From} = IQ) -> process_iq(#iq{from = From, to = To} = IQ, Source) -> IsCaptchaEnabled = case gen_mod:get_module_opt(To#jid.lserver, ?MODULE, - captcha_protected, - fun(B) when is_boolean(B) -> B end, - false) of + captcha_protected, false) of true -> true; false -> false end, Server = To#jid.lserver, - Access = gen_mod:get_module_opt(Server, ?MODULE, access, - fun(A) -> A end, all), + Access = gen_mod:get_module_opt(Server, ?MODULE, access, all), AllowRemove = allow == acl:match_rule(Server, Access, From), process_iq(IQ, Source, IsCaptchaEnabled, AllowRemove). @@ -315,9 +307,7 @@ try_register(User, Server, Password, SourceRaw, Lang) -> false -> {error, xmpp:err_bad_request(<<"Malformed username">>, Lang)}; _ -> JID = jid:make(User, Server), - Access = gen_mod:get_module_opt(Server, ?MODULE, access, - fun(A) -> A end, - all), + Access = gen_mod:get_module_opt(Server, ?MODULE, access, all), IPAccess = get_ip_access(Server), case {acl:match_rule(Server, Access, JID), check_ip_access(SourceRaw, IPAccess)} @@ -379,15 +369,7 @@ try_register(User, Server, Password, SourceRaw, Lang) -> send_welcome_message(JID) -> Host = JID#jid.lserver, case gen_mod:get_module_opt(Host, ?MODULE, welcome_message, - fun(Opts) -> - S = proplists:get_value( - subject, Opts, <<>>), - B = proplists:get_value( - body, Opts, <<>>), - {iolist_to_binary(S), - iolist_to_binary(B)} - end, {<<"">>, <<"">>}) - of + {<<"">>, <<"">>}) of {<<"">>, <<"">>} -> ok; {Subj, Body} -> ejabberd_router:route( @@ -400,11 +382,7 @@ send_welcome_message(JID) -> send_registration_notifications(Mod, UJID, Source) -> Host = UJID#jid.lserver, - case gen_mod:get_module_opt( - Host, Mod, registration_watchers, - fun(Ss) -> - [jid:decode(iolist_to_binary(S)) || S <- Ss] - end, []) of + case gen_mod:get_module_opt(Host, Mod, registration_watchers, []) of [] -> ok; JIDs when is_list(JIDs) -> Body = @@ -428,9 +406,7 @@ check_from(#jid{user = <<"">>, server = <<"">>}, _Server) -> allow; check_from(JID, Server) -> - Access = gen_mod:get_module_opt(Server, ?MODULE, access_from, - fun(A) -> A end, - none), + Access = gen_mod:get_module_opt(Server, ?MODULE, access_from, none), acl:match_rule(Server, Access, JID). check_timeout(undefined) -> true; @@ -532,9 +508,7 @@ is_strong_password(Server, Password) -> is_strong_password2(Server, Password) -> LServer = jid:nameprep(Server), - case gen_mod:get_module_opt(LServer, ?MODULE, password_strength, - fun(N) when is_number(N), N>=0 -> N end, - 0) of + case gen_mod:get_module_opt(LServer, ?MODULE, password_strength, 0) of 0 -> true; Entropy -> @@ -598,9 +572,7 @@ may_remove_resource({_, _, _} = From) -> may_remove_resource(From) -> From. get_ip_access(Host) -> - gen_mod:get_module_opt(Host, ?MODULE, ip_access, - fun(A) when is_atom(A) -> A end, - all). + gen_mod:get_module_opt(Host, ?MODULE, ip_access, all). check_ip_access({User, Server, Resource}, IPAccess) -> case ejabberd_sm:get_user_ip(User, Server, Resource) of |