]> 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 15:19:10 +0000 (15:19 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Tue, 19 Feb 2008 15:19:10 +0000 (15:19 +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: 1199

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 0cb9ddd3e8e73bd04190fb3919c7b269eabb5c8d..2f7710c9c76e650857bd87109996c894811da899 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 f791c60633cf575cdd54f4bb12dbcc1f95bd8a83..ba351232727efd012b6237743e5da8b47e2cf33b 100644 (file)
@@ -116,7 +116,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) ->
@@ -201,7 +201,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", []),
@@ -215,6 +214,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 13dafa711cb48b1ed744e2e282112ad7fc1730d3..09fa7f33d89cf933e9719fb178f3a52a1cc12e19 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 6f27a49e6184a4b262ec501cef07c999748d8157..efe8b3b75bf6c03776db028a851979a52f387a09 100644 (file)
@@ -135,6 +135,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 076ac938004ee0adaea3ee933155ee1cb8b13279..c3facdbe2b2fac133c1375b0788e8255cc8469d2 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