+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
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) ->
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", []),
%%%----------------------------------------------------------------------
%%% 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}),
try_register(_User, _Server, _Password) ->
{error, not_allowed}.
+%% TODO
+%% Return the list of all users handled by external
dirty_get_registered_users() ->
[].
mnesia:transaction(F)
end.
+%% Get all registered users in Mnesia
dirty_get_registered_users() ->
mnesia:dirty_all_keys(passwd).
{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
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),
-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").
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