]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_sm.erl: Update from ctl to commands (EJAB-694)
authorBadlop <badlop@process-one.net>
Sun, 12 Oct 2008 12:04:10 +0000 (12:04 +0000)
committerBadlop <badlop@process-one.net>
Sun, 12 Oct 2008 12:04:10 +0000 (12:04 +0000)
* src/ejabberd_s2s.erl: Likewise

SVN Revision: 1639

ChangeLog
src/ejabberd_s2s.erl
src/ejabberd_sm.erl

index 760e4ff3b3c0d787b32654f9f09cba4e978950a0..04cac4db01bc212629fca7039ca1514e826d6bc8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2008-10-12  Badlop  <badlop@process-one.net>
 
+       * src/ejabberd_sm.erl: Update from ctl to commands (EJAB-694)
+       * src/ejabberd_s2s.erl: Likewise
+
        * src/ejabberd_auth.erl: Update from ctl to commands (EJAB-694)
        * src/ejabberd_auth_internal.erl: Likewise
        * src/ejabberd_auth_ldap.erl: Likewise
index d2672ca8417d189cd117c1eddea141c9e0f53be6..c970564d808eea992068bc24b7ab0c2972449c50 100644 (file)
@@ -39,7 +39,8 @@
         remove_connection/3,
         dirty_get_connections/0,
         allow_host/2,
-        ctl_process/2
+        incoming_s2s_number/0,
+        outgoing_s2s_number/0
        ]).
 
 %% gen_server callbacks
@@ -48,7 +49,7 @@
 
 -include("ejabberd.hrl").
 -include("jlib.hrl").
--include("ejabberd_ctl.hrl").
+-include("ejabberd_commands.hrl").
 
 -define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER, 1).
 -define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER_PER_NODE, 1).
@@ -164,10 +165,7 @@ init([]) ->
                              {attributes, record_info(fields, s2s)}]),
     mnesia:add_table_copy(s2s, node(), ram_copies),
     mnesia:subscribe(system),
-    ejabberd_ctl:register_commands(
-      [{"incoming-s2s-number", "print number of incoming s2s connections on the node"},
-       {"outgoing-s2s-number", "print number of outgoing s2s connections on the node"}],
-      ?MODULE, ctl_process),
+    ejabberd_commands:register_commands(commands()),
     {ok, #state{}}.
 
 %%--------------------------------------------------------------------
@@ -221,6 +219,7 @@ handle_info(_Info, State) ->
 %% The return value is ignored.
 %%--------------------------------------------------------------------
 terminate(_Reason, _State) ->
+    ejabberd_commands:unregister_commands(commands()),
     ok.
 
 %%--------------------------------------------------------------------
@@ -427,16 +426,35 @@ is_subdomain(Domain1, Domain2) ->
 send_element(Pid, El) ->
     Pid ! {send_element, El}.
 
-ctl_process(_Val, ["incoming-s2s-number"]) ->
-    N = length(supervisor:which_children(ejabberd_s2s_in_sup)),
-    ?PRINT("~p~n", [N]),
-    {stop, ?STATUS_SUCCESS};
-ctl_process(_Val, ["outgoing-s2s-number"]) ->
-    N = length(supervisor:which_children(ejabberd_s2s_out_sup)),
-    ?PRINT("~p~n", [N]),
-    {stop, ?STATUS_SUCCESS};
-ctl_process(Val, _Args) ->
-    Val.
+
+%%%----------------------------------------------------------------------
+%%% ejabberd commands
+
+commands() ->
+    [
+     #ejabberd_commands{name = incoming_s2s_number,
+                      tags = [stats, s2s],
+                      desc = "Number of incoming s2s connections on the node",
+                      module = ?MODULE, function = incoming_s2s_number,
+                      args = [],
+                      result = {s2s_incoming, integer}},
+     #ejabberd_commands{name = outgoing_s2s_number,
+                      tags = [stats, s2s],
+                      desc = "Number of outgoing s2s connections on the node",
+                      module = ?MODULE, function = outgoing_s2s_number,
+                      args = [],
+                      result = {s2s_outgoing, integer}}
+    ].
+
+incoming_s2s_number() ->
+    length(supervisor:which_children(ejabberd_s2s_in_sup)).
+
+outgoing_s2s_number() ->
+    length(supervisor:which_children(ejabberd_s2s_out_sup)).
+
+
+%%%----------------------------------------------------------------------
+%%% Update Mnesia tables
 
 update_tables() ->
     case catch mnesia:table_info(s2s, type) of
index c601f94421ed44603555f50f3bcc90ba50fce400..4e49ad5a0ae701084b9761f5110c74efdbf1d963 100644 (file)
@@ -46,7 +46,9 @@
         register_iq_handler/4,
         register_iq_handler/5,
         unregister_iq_handler/2,
-        ctl_process/2,
+        connected_users/0,
+        connected_users_number/0,
+        user_resources/2,
         get_session_pid/3,
         get_user_info/3,
         get_user_ip/3
@@ -58,7 +60,7 @@
 
 -include("ejabberd.hrl").
 -include("jlib.hrl").
--include("ejabberd_ctl.hrl").
+-include("ejabberd_commands.hrl").
 
 -record(session, {sid, usr, us, priority, info}).
 -record(state, {}).
@@ -251,11 +253,7 @@ init([]) ->
              ejabberd_hooks:add(remove_user, Host,
                                 ejabberd_sm, disconnect_removed_user, 100)
       end, ?MYHOSTS),
-    ejabberd_ctl:register_commands(
-      [{"connected-users", "list all established sessions"},
-       {"connected-users-number", "print a number of established sessions"},
-       {"user-resources user server", "print user's connected resources"}],
-      ?MODULE, ctl_process),
+    ejabberd_commands:register_commands(commands()),
 
     {ok, #state{}}.
 
@@ -325,6 +323,7 @@ handle_info(_Info, State) ->
 %% The return value is ignored.
 %%--------------------------------------------------------------------
 terminate(_Reason, _State) ->
+    ejabberd_commands:unregister_commands(commands()),
     ok.
 
 %%--------------------------------------------------------------------
@@ -647,28 +646,47 @@ process_iq(From, To, Packet) ->
     end.
 
 
-ctl_process(_Val, ["connected-users"]) ->
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% ejabberd commands
+
+commands() ->
+       [
+     #ejabberd_commands{name = connected_users,
+                      tags = [session],
+                      desc = "List all established sessions",
+                      module = ?MODULE, function = connected_users,
+                      args = [],
+                      result = {connected_users, {list, {sessions, string}}}},
+     #ejabberd_commands{name = connected_users_number,
+                      tags = [session, stats],
+                      desc = "Get the number of established sessions",
+                      module = ?MODULE, function = connected_users_number,
+                      args = [],
+                      result = {num_sessions, integer}},
+     #ejabberd_commands{name = user_resources,
+                      tags = [session],
+                      desc = "List user's connected resources",
+                      module = ?MODULE, function = user_resources,
+                      args = [{user, string}, {host, string}],
+                      result = {resources, {list, {resource, string}}}}
+       ].
+
+connected_users() ->
     USRs = dirty_get_sessions_list(),
-    NewLine = io_lib:format("~n", []),
     SUSRs = lists:sort(USRs),
-    FUSRs = lists:map(fun({U, S, R}) -> [U, $@, S, $/, R, NewLine] end, SUSRs),
-    ?PRINT("~s", [FUSRs]),
-    {stop, ?STATUS_SUCCESS};
-ctl_process(_Val, ["connected-users-number"]) ->
-    N = length(dirty_get_sessions_list()),
-    ?PRINT("~p~n", [N]),
-    {stop, ?STATUS_SUCCESS};
-ctl_process(_Val, ["user-resources", User, Server]) ->
+    lists:map(fun({U, S, R}) -> [U, $@, S, $/, R] end, SUSRs).
+
+connected_users_number() ->
+    length(dirty_get_sessions_list()).
+
+user_resources(User, Server) ->
     Resources =  get_user_resources(User, Server),
-    NewLine = io_lib:format("~n", []),
-    SResources = lists:sort(Resources),
-    FResources = lists:map(fun(R) -> [R, NewLine] end, SResources),
-    ?PRINT("~s", [FResources]),
-    {stop, ?STATUS_SUCCESS};
-ctl_process(Val, _Args) ->
-    Val.
+    lists:sort(Resources).
 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Update Mnesia tables
+
 update_tables() ->
     case catch mnesia:table_info(session, attributes) of
        [ur, user, node] ->