diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/ejabberd.cfg.example | 4 | ||||
-rw-r--r-- | src/ejabberd_auth_ldap.erl | 31 |
3 files changed, 35 insertions, 4 deletions
@@ -1,5 +1,9 @@ 2005-04-27 Alexey Shchepin <alexey@sevcom.net> + * src/ejabberd_auth_ldap.erl: Added listing of users support + + * src/ejabberd.cfg.example: Updated LDAP options + * src/ejabberd_ctl.erl: Better spelling, now prints full file paths, fixed checking of mnesia:install_fallback result, now "dump" command dumps only persistent tables diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example index 6185200e7..df3c3461c 100644 --- a/src/ejabberd.cfg.example +++ b/src/ejabberd.cfg.example @@ -79,7 +79,9 @@ %{auth_method, ldap}. %{ldap_servers, ["localhost"]}. % List of LDAP servers %{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID -%{ldap_base, "dc=example,dc=com"}. % Base of LDAP directory +%{ldap_base, "dc=example,dc=com"}. % Search base of LDAP directory +%{ldap_rootdn, "dc=example,dc=com"}. % LDAP manager +%{ldap_password, "******"}. % Password to LDAP manager % For authentification via external script use the following: %{auth_method, external}. diff --git a/src/ejabberd_auth_ldap.erl b/src/ejabberd_auth_ldap.erl index 355fd3b60..093c340f8 100644 --- a/src/ejabberd_auth_ldap.erl +++ b/src/ejabberd_auth_ldap.erl @@ -26,6 +26,7 @@ plain_password_required/0 ]). +-include("ejabberd.hrl"). -include("eldap/eldap.hrl"). %%%---------------------------------------------------------------------- @@ -65,10 +66,34 @@ try_register(_User, _Server, _Password) -> {error, not_allowed}. dirty_get_registered_users() -> - []. + get_vh_registered_users(?MYNAME). -get_vh_registered_users(_Server) -> - []. +get_vh_registered_users(Server) -> + LServer = jlib:nameprep(Server), + Attr = ejabberd_config:get_local_option(ldap_uidattr), + Filter = eldap:present(Attr), + Base = ejabberd_config:get_local_option(ldap_base), + case eldap:search("ejabberd", [{base, Base}, + {filter, Filter}, + {attributes, [Attr]}]) of + #eldap_search_result{entries = Es} -> + lists:flatmap( + fun(E) -> + case lists:keysearch(Attr, 1, E#eldap_entry.attributes) of + {value, {_, [U]}} -> + case jlib:nodeprep(U) of + error -> + []; + LU -> + [{LU, LServer}] + end; + _ -> + [] + end + end, Es); + _ -> + [] + end. get_password(_User, _Server) -> false. |