diff options
Diffstat (limited to '')
-rw-r--r-- | src/ejabberd_auth_ldap.erl | 8 | ||||
-rw-r--r-- | src/eldap_utils.erl | 42 | ||||
-rw-r--r-- | src/gen_mod.erl | 11 | ||||
-rw-r--r-- | src/mod_shared_roster_ldap.erl | 16 | ||||
-rw-r--r-- | src/mod_vcard_ldap.erl | 4 |
5 files changed, 35 insertions, 46 deletions
diff --git a/src/ejabberd_auth_ldap.erl b/src/ejabberd_auth_ldap.erl index 3055d104..d08151e6 100644 --- a/src/ejabberd_auth_ldap.erl +++ b/src/ejabberd_auth_ldap.erl @@ -360,7 +360,7 @@ parse_options(Host) -> Eldap_ID = jlib:atom_to_binary(gen_mod:get_module_proc(Host, ?MODULE)), Bind_Eldap_ID = jlib:atom_to_binary( gen_mod:get_module_proc(Host, bind_ejabberd_auth_ldap)), - UIDsTemp = eldap_utils:get_opt( + UIDsTemp = gen_mod:get_opt( {ldap_uids, Host}, [], fun(Us) -> lists:map( @@ -375,7 +375,7 @@ parse_options(Host) -> end, [{<<"uid">>, <<"%u">>}]), UIDs = eldap_utils:uids_domain_subst(Host, UIDsTemp), SubFilter = eldap_utils:generate_subfilter(UIDs), - UserFilter = case eldap_utils:get_opt( + UserFilter = case gen_mod:get_opt( {ldap_filter, Host}, [], fun check_filter/1, <<"">>) of <<"">> -> @@ -386,7 +386,7 @@ parse_options(Host) -> SearchFilter = eldap_filter:do_sub(UserFilter, [{<<"%u">>, <<"*">>}]), {DNFilter, DNFilterAttrs} = - eldap_utils:get_opt({ldap_dn_filter, Host}, [], + gen_mod:get_opt({ldap_dn_filter, Host}, [], fun([{DNF, DNFA}]) -> NewDNFA = case DNFA of undefined -> @@ -398,7 +398,7 @@ parse_options(Host) -> NewDNF = check_filter(DNF), {NewDNF, NewDNFA} end, {undefined, []}), - LocalFilter = eldap_utils:get_opt( + LocalFilter = gen_mod:get_opt( {ldap_local_filter, Host}, [], fun(V) -> V end), #state{host = Host, eldap_id = Eldap_ID, bind_eldap_id = Bind_Eldap_ID, diff --git a/src/eldap_utils.erl b/src/eldap_utils.erl index eb660162..bdc98c20 100644 --- a/src/eldap_utils.erl +++ b/src/eldap_utils.erl @@ -33,8 +33,6 @@ make_filter/2, get_state/2, case_insensitive_match/2, - get_opt/3, - get_opt/4, get_config/2, decode_octet_string/3, uids_domain_subst/2]). @@ -171,64 +169,48 @@ uids_domain_subst(Host, UIDs) -> end, UIDs). --spec get_opt({atom(), binary()}, list(), fun()) -> any(). - -get_opt({Key, Host}, Opts, F) -> - get_opt({Key, Host}, Opts, F, undefined). - --spec get_opt({atom(), binary()}, list(), fun(), any()) -> any(). - -get_opt({Key, Host}, Opts, F, Default) -> - case gen_mod:get_opt(Key, Opts, F, undefined) of - undefined -> - ejabberd_config:get_option( - {Key, Host}, F, Default); - Val -> - Val - end. - -spec get_config(binary(), list()) -> eldap_config(). get_config(Host, Opts) -> - Servers = get_opt({ldap_servers, Host}, Opts, + Servers = gen_mod:get_opt({ldap_servers, Host}, Opts, fun(L) -> [iolist_to_binary(H) || H <- L] end, [<<"localhost">>]), - Backups = get_opt({ldap_backups, Host}, Opts, + Backups = gen_mod:get_opt({ldap_backups, Host}, Opts, fun(L) -> [iolist_to_binary(H) || H <- L] end, []), - Encrypt = get_opt({ldap_encrypt, Host}, Opts, + Encrypt = gen_mod:get_opt({ldap_encrypt, Host}, Opts, fun(tls) -> tls; (starttls) -> starttls; (none) -> none end, none), - TLSVerify = get_opt({ldap_tls_verify, Host}, Opts, + TLSVerify = gen_mod:get_opt({ldap_tls_verify, Host}, Opts, fun(hard) -> hard; (soft) -> soft; (false) -> false end, false), - TLSCAFile = get_opt({ldap_tls_cacertfile, Host}, Opts, + TLSCAFile = gen_mod:get_opt({ldap_tls_cacertfile, Host}, Opts, fun iolist_to_binary/1), - TLSDepth = get_opt({ldap_tls_depth, Host}, Opts, + TLSDepth = gen_mod:get_opt({ldap_tls_depth, Host}, Opts, fun(I) when is_integer(I), I>=0 -> I end), - Port = get_opt({ldap_port, Host}, Opts, + Port = gen_mod:get_opt({ldap_port, Host}, Opts, fun(I) when is_integer(I), I>0 -> I end, case Encrypt of tls -> ?LDAPS_PORT; starttls -> ?LDAP_PORT; _ -> ?LDAP_PORT end), - RootDN = get_opt({ldap_rootdn, Host}, Opts, + RootDN = gen_mod:get_opt({ldap_rootdn, Host}, Opts, fun iolist_to_binary/1, <<"">>), - Password = get_opt({ldap_password, Host}, Opts, + Password = gen_mod:get_opt({ldap_password, Host}, Opts, fun iolist_to_binary/1, <<"">>), - Base = get_opt({ldap_base, Host}, Opts, + Base = gen_mod:get_opt({ldap_base, Host}, Opts, fun iolist_to_binary/1, <<"">>), - OldDerefAliases = get_opt({deref_aliases, Host}, Opts, + OldDerefAliases = gen_mod:get_opt({deref_aliases, Host}, Opts, fun(never) -> never; (searching) -> searching; (finding) -> finding; @@ -236,7 +218,7 @@ get_config(Host, Opts) -> end, unspecified), DerefAliases = if OldDerefAliases == unspecified -> - get_opt({ldap_deref_aliases, Host}, Opts, + gen_mod:get_opt({ldap_deref_aliases, Host}, Opts, fun(never) -> never; (searching) -> searching; (finding) -> finding; diff --git a/src/gen_mod.erl b/src/gen_mod.erl index b8e155a0..29d5dfb7 100644 --- a/src/gen_mod.erl +++ b/src/gen_mod.erl @@ -155,13 +155,20 @@ wait_for_stop1(MonitorReference) -> -type check_fun() :: fun((any()) -> any()) | {module(), atom()}. --spec get_opt(atom(), opts(), check_fun()) -> any(). +-spec get_opt(atom() | {atom(), binary()|global}, opts(), check_fun()) -> any(). get_opt(Opt, Opts, F) -> get_opt(Opt, Opts, F, undefined). --spec get_opt(atom(), opts(), check_fun(), any()) -> any(). +-spec get_opt(atom() | {atom(), binary()|global}, opts(), check_fun(), any()) -> any(). +get_opt({Opt, Host}, Opts, F, Default) -> + case lists:keysearch(Opt, 1, Opts) of + false -> + ejabberd_config:get_option({Opt, Host}, F, Default); + {value, {_, Val}} -> + ejabberd_config:prepare_opt_val(Opt, Val, F, Default) + end; get_opt(Opt, Opts, F, Default) -> case lists:keysearch(Opt, 1, Opts) of false -> diff --git a/src/mod_shared_roster_ldap.erl b/src/mod_shared_roster_ldap.erl index af85e4d4..a2d6f2ff 100644 --- a/src/mod_shared_roster_ldap.erl +++ b/src/mod_shared_roster_ldap.erl @@ -521,29 +521,29 @@ parse_options(Host, Opts) -> (false) -> false; (true) -> true end, true), - UserCacheValidity = eldap_utils:get_opt( + UserCacheValidity = gen_mod:get_opt( {ldap_user_cache_validity, Host}, Opts, fun(I) when is_integer(I), I>0 -> I end, ?USER_CACHE_VALIDITY), - GroupCacheValidity = eldap_utils:get_opt( + GroupCacheValidity = gen_mod:get_opt( {ldap_group_cache_validity, Host}, Opts, fun(I) when is_integer(I), I>0 -> I end, ?GROUP_CACHE_VALIDITY), - UserCacheSize = eldap_utils:get_opt( + UserCacheSize = gen_mod:get_opt( {ldap_user_cache_size, Host}, Opts, fun(I) when is_integer(I), I>0 -> I end, ?CACHE_SIZE), - GroupCacheSize = eldap_utils:get_opt( + GroupCacheSize = gen_mod:get_opt( {ldap_group_cache_size, Host}, Opts, fun(I) when is_integer(I), I>0 -> I end, ?CACHE_SIZE), - ConfigFilter = eldap_utils:get_opt({ldap_filter, Host}, Opts, + ConfigFilter = gen_mod:get_opt({ldap_filter, Host}, Opts, fun check_filter/1, <<"">>), - ConfigUserFilter = eldap_utils:get_opt({ldap_ufilter, Host}, Opts, + ConfigUserFilter = gen_mod:get_opt({ldap_ufilter, Host}, Opts, fun check_filter/1, <<"">>), - ConfigGroupFilter = eldap_utils:get_opt({ldap_gfilter, Host}, Opts, + ConfigGroupFilter = gen_mod:get_opt({ldap_gfilter, Host}, Opts, fun check_filter/1, <<"">>), - RosterFilter = eldap_utils:get_opt({ldap_rfilter, Host}, Opts, + RosterFilter = gen_mod:get_opt({ldap_rfilter, Host}, Opts, fun check_filter/1, <<"">>), SubFilter = <<"(&(", UIDAttr/binary, "=", UIDAttrFormat/binary, ")(", GroupAttr/binary, "=%g))">>, diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl index 61db3897..a5cafc5e 100644 --- a/src/mod_vcard_ldap.erl +++ b/src/mod_vcard_ldap.erl @@ -739,7 +739,7 @@ parse_options(Host, Opts) -> end, 30), Eldap_ID = jlib:atom_to_binary(gen_mod:get_module_proc(Host, ?PROCNAME)), Cfg = eldap_utils:get_config(Host, Opts), - UIDsTemp = eldap_utils:get_opt( + UIDsTemp = gen_mod:get_opt( {ldap_uids, Host}, Opts, fun(Us) -> lists:map( @@ -752,7 +752,7 @@ parse_options(Host, Opts) -> end, [{<<"uid">>, <<"%u">>}]), UIDs = eldap_utils:uids_domain_subst(Host, UIDsTemp), SubFilter = eldap_utils:generate_subfilter(UIDs), - UserFilter = case eldap_utils:get_opt( + UserFilter = case gen_mod:get_opt( {ldap_filter, Host}, Opts, fun check_filter/1, <<"">>) of <<"">> -> |