aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2011-08-16 19:28:52 +0200
committerBadlop <badlop@process-one.net>2011-08-16 19:29:40 +0200
commit6eb5b0d298a634d65e9ef187ccce2b823ab0140b (patch)
treee407b78e36fc0d1247b4a0fd99cd3d5e2eba171f
parentFix support for odbc + gen_storage + static_modules (diff)
Fix ODBC account counting (thanks to Artem Sh)(EJAB-1491)
-rw-r--r--src/mod_stats.erl7
-rw-r--r--src/odbc/odbc_queries.erl4
-rw-r--r--src/web/ejabberd_web_admin.erl5
3 files changed, 10 insertions, 6 deletions
diff --git a/src/mod_stats.erl b/src/mod_stats.erl
index d67331912..a11564e94 100644
--- a/src/mod_stats.erl
+++ b/src/mod_stats.erl
@@ -157,7 +157,12 @@ get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/online">> ->
end;
get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/total">> ->
- case catch mnesia:table_info(passwd, size) of
+ NumUsers = lists:foldl(
+ fun(Host, Total) ->
+ ejabberd_auth:get_vh_registered_users_number(Host)
+ + Total
+ end, 0, ejabberd_config:get_global_option(hosts)),
+ case NumUsers of
{'EXIT', _Reason} ->
?STATERR(<<"500">>, <<"Internal Server Error">>);
Users ->
diff --git a/src/odbc/odbc_queries.erl b/src/odbc/odbc_queries.erl
index ccbf8271d..11a2e3cab 100644
--- a/src/odbc/odbc_queries.erl
+++ b/src/odbc/odbc_queries.erl
@@ -225,10 +225,6 @@ list_users(LServer, [{prefix, Prefix},
users_number(LServer) ->
Host = escape(LServer),
case element(1, ejabberd_config:get_local_option({odbc_server, LServer})) of
- mysql ->
- ejabberd_odbc:sql_query(
- LServer,
- "select table_rows from information_schema.tables where table_name='users'");
pgsql ->
case ejabberd_config:get_local_option({pgsql_users_number_estimate, LServer}) of
true ->
diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl
index 7ad2ed8ed..10df8a4ef 100644
--- a/src/web/ejabberd_web_admin.erl
+++ b/src/web/ejabberd_web_admin.erl
@@ -1724,7 +1724,10 @@ su_to_list({Server, User}) ->
get_stats(global, Lang) ->
OnlineUsers = mnesia:table_info(session, size),
- RegisteredUsers = mnesia:table_info(passwd, size),
+ RegisteredUsers = lists:foldl(
+ fun(Host, Total) ->
+ ejabberd_auth:get_vh_registered_users_number(Host) + Total
+ end, 0, ejabberd_config:get_global_option(hosts)),
S2SConns = ejabberd_s2s:dirty_get_connections(),
S2SConnections = length(S2SConns),
S2SServers = length(lists:usort([element(2, C) || C <- S2SConns])),