24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-14 22:00:16 +02:00

Merge pull request #186 from weiss/add-disconnect-command

New ejabberd command: disconnect_user/2
This commit is contained in:
Evgeny Khramtsov 2014-04-29 15:41:41 +04:00
commit 599fdb9ac2
2 changed files with 21 additions and 2 deletions

View File

@ -107,7 +107,7 @@
auth_module = unknown, auth_module = unknown,
ip, ip,
aux_fields = [], aux_fields = [],
lang}). lang = <<"">>}).
%-define(DBGFSM, true). %-define(DBGFSM, true).
@ -1229,6 +1229,10 @@ handle_info(replaced, StateName, StateData) ->
Lang = StateData#state.lang, Lang = StateData#state.lang,
Xmlelement = ?SERRT_CONFLICT(Lang, <<"Replaced by new connection">>), Xmlelement = ?SERRT_CONFLICT(Lang, <<"Replaced by new connection">>),
handle_info({kick, replaced, Xmlelement}, StateName, StateData); handle_info({kick, replaced, Xmlelement}, StateName, StateData);
handle_info(disconnect, StateName, StateData) ->
Lang = StateData#state.lang,
Xmlelement = ?SERRT_POLICY_VIOLATION(Lang, <<"has been kicked">>),
handle_info({kick, kicked_by_admin, Xmlelement}, StateName, StateData);
handle_info({kick, Reason, Xmlelement}, _StateName, StateData) -> handle_info({kick, Reason, Xmlelement}, _StateName, StateData) ->
send_element(StateData, Xmlelement), send_element(StateData, Xmlelement),
send_trailer(StateData), send_trailer(StateData),

View File

@ -52,6 +52,7 @@
connected_users/0, connected_users/0,
connected_users_number/0, connected_users_number/0,
user_resources/2, user_resources/2,
disconnect_user/2,
get_session_pid/3, get_session_pid/3,
get_user_info/3, get_user_info/3,
get_user_ip/3, get_user_ip/3,
@ -801,7 +802,13 @@ commands() ->
desc = "List user's connected resources", desc = "List user's connected resources",
module = ?MODULE, function = user_resources, module = ?MODULE, function = user_resources,
args = [{user, binary}, {host, binary}], 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()]. -spec connected_users() -> [binary()].
@ -818,6 +825,14 @@ user_resources(User, Server) ->
Resources = get_user_resources(User, Server), Resources = get_user_resources(User, Server),
lists:sort(Resources). lists:sort(Resources).
disconnect_user(User, Server) ->
Resources = get_user_resources(User, Server),
lists:foreach(
fun(Resource) ->
PID = get_session_pid(User, Server, Resource),
PID ! disconnect
end, Resources),
length(Resources).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Update Mnesia tables %%% Update Mnesia tables