diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-28 13:23:32 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-28 13:23:32 +0300 |
commit | 7129aebe7632468de075d9fc3686d6d692e2347f (patch) | |
tree | f2616fa3bfea965ad3524b20f03b46d652627f5e /src/eldap_utils.erl | |
parent | Bump cache_tab version (diff) |
Don't re-define validation functions in multiple places
Diffstat (limited to 'src/eldap_utils.erl')
-rw-r--r-- | src/eldap_utils.erl | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/eldap_utils.erl b/src/eldap_utils.erl index 8c071c6dd..4306def0c 100644 --- a/src/eldap_utils.erl +++ b/src/eldap_utils.erl @@ -28,7 +28,7 @@ -behaviour(ejabberd_config). -author('mremond@process-one.net'). --export([generate_subfilter/1, find_ldap_attrs/2, +-export([generate_subfilter/1, find_ldap_attrs/2, check_filter/1, get_ldap_attr/2, get_user_part/2, make_filter/2, get_state/2, case_insensitive_match/2, get_config/2, decode_octet_string/3, uids_domain_subst/2, opt_type/1]). @@ -137,6 +137,11 @@ make_filter(Data, UIDs) -> eldap:'and'(Filter) end. +check_filter(F) -> + NewF = iolist_to_binary(F), + {ok, _} = eldap_filter:parse(NewF), + NewF. + -spec case_insensitive_match(binary(), binary()) -> boolean(). case_insensitive_match(X, Y) -> @@ -380,8 +385,19 @@ opt_type(ldap_tls_verify) -> (soft) -> soft; (false) -> false end; +opt_type(ldap_filter) -> + fun check_filter/1; +opt_type(ldap_uids) -> + fun (Us) -> + lists:map(fun ({U, P}) -> + {iolist_to_binary(U), iolist_to_binary(P)}; + ({U}) -> {iolist_to_binary(U)}; + (U) -> {iolist_to_binary(U)} + end, + lists:flatten(Us)) + end; opt_type(_) -> - [deref_aliases, ldap_backups, ldap_base, + [deref_aliases, ldap_backups, ldap_base, ldap_uids, ldap_deref_aliases, ldap_encrypt, ldap_password, - ldap_port, ldap_rootdn, ldap_servers, + ldap_port, ldap_rootdn, ldap_servers, ldap_filter, ldap_tls_cacertfile, ldap_tls_depth, ldap_tls_verify]. |