mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-30 16:36:29 +01:00
80 lines
3.3 KiB
Erlang
80 lines
3.3 KiB
Erlang
%%%----------------------------------------------------------------------
|
|
%%%
|
|
%%% ejabberd, Copyright (C) 2002-2024 ProcessOne
|
|
%%%
|
|
%%% This program is free software; you can redistribute it and/or
|
|
%%% modify it under the terms of the GNU General Public License as
|
|
%%% published by the Free Software Foundation; either version 2 of the
|
|
%%% License, or (at your option) any later version.
|
|
%%%
|
|
%%% This program is distributed in the hope that it will be useful,
|
|
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
%%% General Public License for more details.
|
|
%%%
|
|
%%% You should have received a copy of the GNU General Public License along
|
|
%%% with this program; if not, write to the Free Software Foundation, Inc.,
|
|
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
%%%
|
|
%%%----------------------------------------------------------------------
|
|
|
|
-define(LDAP_PORT, 389).
|
|
|
|
-define(LDAPS_PORT, 636).
|
|
|
|
-type scope() :: baseObject | singleLevel | wholeSubtree.
|
|
|
|
-record(eldap_search,
|
|
{scope = wholeSubtree :: scope(),
|
|
base = <<"">> :: binary(),
|
|
filter :: eldap:filter() | undefined,
|
|
limit = 0 :: non_neg_integer(),
|
|
attributes = [] :: [binary()],
|
|
types_only = false :: boolean(),
|
|
deref_aliases = neverDerefAliases :: neverDerefAliases |
|
|
derefInSearching |
|
|
derefFindingBaseObj |
|
|
derefAlways,
|
|
timeout = 0 :: non_neg_integer()}).
|
|
|
|
-record(eldap_search_result, {entries = [] :: [eldap_entry()],
|
|
referrals = [] :: list()}).
|
|
|
|
-record(eldap_entry, {object_name = <<>> :: binary(),
|
|
attributes = [] :: [{binary(), [binary()]}]}).
|
|
|
|
-type tlsopts() :: [{encrypt, tls | starttls | none} |
|
|
{tls_certfile, binary() | undefined} |
|
|
{tls_cacertfile, binary() | undefined} |
|
|
{tls_depth, non_neg_integer() | undefined} |
|
|
{tls_verify, hard | soft | false}].
|
|
|
|
-record(eldap_config, {servers = [] :: [binary()],
|
|
backups = [] :: [binary()],
|
|
tls_options = [] :: tlsopts(),
|
|
port = ?LDAP_PORT :: inet:port_number(),
|
|
dn = <<"">> :: binary(),
|
|
password = <<"">> :: binary(),
|
|
base = <<"">> :: binary(),
|
|
deref_aliases = never :: never | searching |
|
|
finding | always}).
|
|
|
|
-type eldap_config() :: #eldap_config{}.
|
|
-type eldap_search() :: #eldap_search{}.
|
|
-type eldap_entry() :: #eldap_entry{}.
|
|
|
|
-define(eldap_config(M, H),
|
|
#eldap_config{
|
|
servers = M:ldap_servers(H),
|
|
backups = M:ldap_backups(H),
|
|
tls_options = [{encrypt, M:ldap_encrypt(H)},
|
|
{tls_verify, M:ldap_tls_verify(H)},
|
|
{tls_certfile, M:ldap_tls_certfile(H)},
|
|
{tls_cacertfile, M:ldap_tls_cacertfile(H)},
|
|
{tls_depth, M:ldap_tls_depth(H)}],
|
|
port = M:ldap_port(H),
|
|
dn = M:ldap_rootdn(H),
|
|
password = M:ldap_password(H),
|
|
base = M:ldap_base(H),
|
|
deref_aliases = M:ldap_deref_aliases(H)}).
|