diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-05-30 19:21:56 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-05-30 19:21:56 +0300 |
commit | 5e446d50a8f77b932449cd96a58f6cfa1af647a8 (patch) | |
tree | 5bfe35ebc060043b835f32cf1358a8fb15307b6c /src/mod_configure.erl | |
parent | Bump xmpp version in order to support language tags validation (diff) |
Get rid of direct calls to 'session' Mnesia table
Fixes #2439
Diffstat (limited to 'src/mod_configure.erl')
-rw-r--r-- | src/mod_configure.erl | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/src/mod_configure.erl b/src/mod_configure.erl index 471e2bcd..74b3cc79 100644 --- a/src/mod_configure.erl +++ b/src/mod_configure.erl @@ -1552,39 +1552,17 @@ set_form(From, Host, ?NS_ADMINL(<<"delete-user">>), || {User, Server} <- ASL2], {result, undefined}; set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>), - Lang, XData) -> + _Lang, XData) -> AccountString = get_value(<<"accountjid">>, XData), JID = jid:decode(AccountString), - LUser = JID#jid.luser, LServer = JID#jid.lserver, true = LServer == Host orelse get_permission_level(From) == global, - Xmlelement = xmpp:serr_policy_violation(<<"has been kicked">>, Lang), case JID#jid.lresource of - <<>> -> - SIs = mnesia:dirty_select(session, - [{#session{usr = {LUser, LServer, '_'}, - sid = '$1', - info = '$2', - _ = '_'}, - [], [{{'$1', '$2'}}]}]), - Pids = [P || {{_, P}, Info} <- SIs, - not proplists:get_bool(offline, Info)], - lists:foreach(fun(Pid) -> - Pid ! {kick, kicked_by_admin, Xmlelement} - end, Pids); - R -> - [{{_, Pid}, Info}] = mnesia:dirty_select( - session, - [{#session{usr = {LUser, LServer, R}, - sid = '$1', - info = '$2', - _ = '_'}, - [], [{{'$1', '$2'}}]}]), - case proplists:get_bool(offline, Info) of - true -> ok; - false -> Pid ! {kick, kicked_by_admin, Xmlelement} - end + <<>> -> + ejabberd_sm:kick_user(JID#jid.luser, JID#jid.lserver); + R -> + ejabberd_sm:kick_user(JID#jid.luser, JID#jid.lserver, R) end, {result, undefined}; set_form(From, Host, |