mirror of
https://github.com/processone/ejabberd.git
synced 2024-09-25 14:24:55 +02:00
Merge pull request #186 from weiss/add-disconnect-command
New ejabberd command: disconnect_user/2
This commit is contained in:
commit
599fdb9ac2
@ -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),
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user