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(
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
<<"">> ->
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 ->
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,
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]).
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;
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;
-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 ->
(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))">>,
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(
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
<<"">> ->