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,
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()].
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