New ejabberd command: disconnect_user/2

This commit is contained in:
Holger Weiss 2014-04-29 00:50:43 +02:00
parent 68e62d7442
commit 6d1055abec
1 changed files with 17 additions and 1 deletions

View File

@ -52,6 +52,7 @@
connected_users/0,
connected_users_number/0,
user_resources/2,
disconnect_user/2,
get_session_pid/3,
get_user_info/3,
get_user_ip/3,
@ -801,7 +802,13 @@ commands() ->
desc = "List user's connected resources",
module = ?MODULE, function = user_resources,
args = [{user, binary}, {host, binary}],
result = {resources, {list, {resource, string}}}}].
result = {resources, {list, {resource, string}}}},
#ejabberd_commands{name = disconnect_user,
tags = [session],
desc = "Disconnect user's active sessions",
module = ?MODULE, function = disconnect_user,
args = [{user, binary}, {host, binary}],
result = {num_resources, integer}}].
-spec connected_users() -> [binary()].
@ -818,6 +825,15 @@ user_resources(User, Server) ->
Resources = get_user_resources(User, Server),
lists:sort(Resources).
disconnect_user(User, Server) ->
Xmlelement = ?SERRT_POLICY_VIOLATION(<<"en">>, <<"has been kicked">>),
Resources = get_user_resources(User, Server),
lists:foreach(
fun(Resource) ->
PID = get_session_pid(User, Server, Resource),
PID ! {kick, kicked_by_admin, Xmlelement}
end, Resources),
length(Resources).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Update Mnesia tables