]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_config.erl: dirty_get_registered_users now correctly returns all users...
authorMickaël Rémond <mickael.remond@process-one.net>
Tue, 19 Feb 2008 13:49:29 +0000 (13:49 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Tue, 19 Feb 2008 13:49:29 +0000 (13:49 +0000)
* src/ejabberd_auth_odbc.erl: Likewise
* src/ejabberd_auth_internal.erl: Likewise
* src/ejabberd_auth.erl: Likewise
* src/ejabberd_auth_external.erl: Likewise
* src/ejabberd_auth_ldap.erl: Likewise

SVN Revision: 1198

ChangeLog
src/ejabberd_auth.erl
src/ejabberd_auth_external.erl
src/ejabberd_auth_internal.erl
src/ejabberd_auth_ldap.erl
src/ejabberd_auth_odbc.erl
src/ejabberd_config.erl

index 2bd66aaa23780122599fc5f9fffd123ea659b815..cd45c1bea47e8d69780a1f4fa2ebc536c4e749c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-02-19  Mickael Remond <mremond@process-one.net>
+
+       * src/ejabberd_config.erl: dirty_get_registered_users now
+       correctly returns all users for all vhosts no matter which
+       back-end is used (EJAB-527)
+       * src/ejabberd_auth_odbc.erl: Likewise
+       * src/ejabberd_auth_internal.erl: Likewise
+       * src/ejabberd_auth.erl: Likewise
+       * src/ejabberd_auth_external.erl: Likewise
+       * src/ejabberd_auth_ldap.erl: Likewise
+
 2008-02-18  Christophe Romain <christophe.romain@process-one.net>
 
        * src/ejabberd_c2s.erl: Bug in get_conn_type since SVN r1194 crashes
index 62282957e2ad01b57c8466c3c2df51a6f04ed6de..1ce6cbb73024c66b125d443758fccac714ad230c 100644 (file)
@@ -122,7 +122,7 @@ dirty_get_registered_users() ->
     lists:flatmap(
       fun(M) ->
              M:dirty_get_registered_users()
-      end, auth_modules(?MYNAME)).
+      end, auth_modules()).
 
 %% Registered users list do not include anonymous users logged
 get_vh_registered_users(Server) ->
@@ -207,7 +207,6 @@ remove_user(User, Server, Password) ->
              M:remove_user(User, Server, Password)
       end, auth_modules(Server)).
 
-
 ctl_process_get_registered(_Val, Host, ["registered-users"]) ->
     Users = ejabberd_auth:get_vh_registered_users(Host),
     NewLine = io_lib:format("~n", []),
@@ -221,6 +220,16 @@ ctl_process_get_registered(Val, _Host, _Args) ->
 %%%----------------------------------------------------------------------
 %%% Internal functions
 %%%----------------------------------------------------------------------
+%% Return the lists of all the auth modules actually used in the
+%% configuration
+auth_modules() ->
+    lists:usort(
+      lists:flatmap(
+       fun(Server) ->
+               auth_modules(Server)
+       end, ?MYHOSTS)).
+
+%% Return the list of authenticated modules for a given host
 auth_modules(Server) ->
     LServer = jlib:nameprep(Server),
     Method = ejabberd_config:get_local_option({auth_method, LServer}),
index 19ae6818da39aad36337179685594972a98a8ae6..9684944a69ede9a8b1684f8a4978d2ea6e3dbd8d 100644 (file)
@@ -66,6 +66,8 @@ set_password(User, Server, Password) ->
 try_register(_User, _Server, _Password) ->
     {error, not_allowed}.
 
+%% TODO
+%% Return the list of all users handled by external
 dirty_get_registered_users() ->
     [].
 
index 56b775be6ce0cc91cd6ac7eeee1b81395166c889..315cc462085ff50d49ed94ea75f69b76855563ed 100644 (file)
@@ -134,6 +134,7 @@ try_register(User, Server, Password) ->
            mnesia:transaction(F)
     end.
 
+%% Get all registered users in Mnesia
 dirty_get_registered_users() ->
     mnesia:dirty_all_keys(passwd).
 
index 3083ce1d2457afa5ccd31a7781d19530a64207ca..d9f54503432a6fafb284cbcf057735792f2b9aa6 100644 (file)
@@ -159,7 +159,11 @@ try_register(_User, _Server, _Password) ->
     {error, not_allowed}.
 
 dirty_get_registered_users() ->
-    get_vh_registered_users(?MYNAME).
+    Servers = ejabberd_config:get_vh_by_auth_method(ldap),
+    lists:flatmap(
+      fun(Server) ->
+             get_vh_registered_users(Server)
+      end, Servers).
 
 get_vh_registered_users(Server) ->
     case catch get_vh_registered_users_ldap(Server) of
index 28f01239f0466070b0f39040650d9d0a3345044d..14bd61b94f7e87e31a584c30ef8d200c65e7f01a 100644 (file)
@@ -130,7 +130,11 @@ try_register(User, Server, Password) ->
     end.
 
 dirty_get_registered_users() ->
-    get_vh_registered_users(?MYNAME).
+    Servers = ejabberd_config:get_vh_by_auth_method(odbc),
+    lists:flatmap(
+      fun(Server) ->
+             get_vh_registered_users(Server)
+      end, Servers).
 
 get_vh_registered_users(Server) ->
     LServer = jlib:nameprep(Server),
index b4b3400c931ab2eaa97f3dbec456b3d6288a0764..9f372fdbb806dc2907ed562d30d9b8dc4adfb3be 100644 (file)
@@ -30,6 +30,7 @@
 -export([start/0, load_file/1,
         add_global_option/2, add_local_option/2,
         get_global_option/1, get_local_option/1]).
+-export([get_vh_by_auth_method/1]).
 
 -include("ejabberd.hrl").
 -include("ejabberd_config.hrl").
@@ -303,6 +304,11 @@ get_local_option(Opt) ->
            undefined
     end.
 
+%% Return the list of hosts handled by a given module
+get_vh_by_auth_method(AuthMethod) ->
+    mnesia:dirty_select(local_config,
+                       [{#local_config{key = {auth_method, '$1'},
+                                       value=AuthMethod},[],['$1']}]).
 
 check_odbc_modules(ODBC_server) ->
     case catch check_odbc_modules2(ODBC_server) of