mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-28 16:34:13 +01:00
Include actor element in MUC stanzas when kicking (thanks to Purvesh Sahoo)(EJAB-1206)
This commit is contained in:
parent
9fa415e557
commit
066c47ca96
@ -2593,7 +2593,7 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
|
|||||||
SD;
|
SD;
|
||||||
{JID, role, none, Reason} ->
|
{JID, role, none, Reason} ->
|
||||||
catch
|
catch
|
||||||
send_kickban_presence(JID,
|
send_kickban_presence(UJID, JID,
|
||||||
Reason,
|
Reason,
|
||||||
<<"307">>,
|
<<"307">>,
|
||||||
SD),
|
SD),
|
||||||
@ -2605,7 +2605,7 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
|
|||||||
of
|
of
|
||||||
true ->
|
true ->
|
||||||
catch
|
catch
|
||||||
send_kickban_presence(JID,
|
send_kickban_presence(UJID, JID,
|
||||||
Reason,
|
Reason,
|
||||||
<<"321">>,
|
<<"321">>,
|
||||||
none,
|
none,
|
||||||
@ -2628,7 +2628,7 @@ process_admin_items_set(UJID, Items, Lang, StateData) ->
|
|||||||
{JID, affiliation, outcast,
|
{JID, affiliation, outcast,
|
||||||
Reason} ->
|
Reason} ->
|
||||||
catch
|
catch
|
||||||
send_kickban_presence(JID,
|
send_kickban_presence(UJID, JID,
|
||||||
Reason,
|
Reason,
|
||||||
<<"301">>,
|
<<"301">>,
|
||||||
outcast,
|
outcast,
|
||||||
@ -2979,12 +2979,12 @@ can_change_ra(_FAffiliation, _FRole, _TAffiliation,
|
|||||||
_TRole, role, _Value, _ServiceAf) ->
|
_TRole, role, _Value, _ServiceAf) ->
|
||||||
false.
|
false.
|
||||||
|
|
||||||
send_kickban_presence(JID, Reason, Code, StateData) ->
|
send_kickban_presence(UJID, JID, Reason, Code, StateData) ->
|
||||||
NewAffiliation = get_affiliation(JID, StateData),
|
NewAffiliation = get_affiliation(JID, StateData),
|
||||||
send_kickban_presence(JID, Reason, Code, NewAffiliation,
|
send_kickban_presence(UJID, JID, Reason, Code, NewAffiliation,
|
||||||
StateData).
|
StateData).
|
||||||
|
|
||||||
send_kickban_presence(JID, Reason, Code, NewAffiliation,
|
send_kickban_presence(UJID, JID, Reason, Code, NewAffiliation,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
LJID = jlib:jid_tolower(JID),
|
LJID = jlib:jid_tolower(JID),
|
||||||
LJIDs = case LJID of
|
LJIDs = case LJID of
|
||||||
@ -3007,18 +3007,27 @@ send_kickban_presence(JID, Reason, Code, NewAffiliation,
|
|||||||
StateData#state.users),
|
StateData#state.users),
|
||||||
add_to_log(kickban, {Nick, Reason, Code}, StateData),
|
add_to_log(kickban, {Nick, Reason, Code}, StateData),
|
||||||
tab_remove_online_user(J, StateData),
|
tab_remove_online_user(J, StateData),
|
||||||
send_kickban_presence1(J, Reason, Code,
|
send_kickban_presence1(UJID, J, Reason, Code,
|
||||||
NewAffiliation, StateData)
|
NewAffiliation, StateData)
|
||||||
end,
|
end,
|
||||||
LJIDs).
|
LJIDs).
|
||||||
|
|
||||||
send_kickban_presence1(UJID, Reason, Code, Affiliation,
|
send_kickban_presence1(MJID, UJID, Reason, Code, Affiliation,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
{ok, #user{jid = RealJID, nick = Nick}} =
|
{ok, #user{jid = RealJID, nick = Nick}} =
|
||||||
(?DICT):find(jlib:jid_tolower(UJID),
|
(?DICT):find(jlib:jid_tolower(UJID),
|
||||||
StateData#state.users),
|
StateData#state.users),
|
||||||
SAffiliation = affiliation_to_list(Affiliation),
|
SAffiliation = affiliation_to_list(Affiliation),
|
||||||
BannedJIDString = jlib:jid_to_string(RealJID),
|
BannedJIDString = jlib:jid_to_string(RealJID),
|
||||||
|
case MJID /= <<"">> of
|
||||||
|
true ->
|
||||||
|
{ok, #user{jid = RealMJID}} =
|
||||||
|
(?DICT):find(jlib:jid_tolower(MJID),
|
||||||
|
StateData#state.users),
|
||||||
|
ActorJIDString = jlib:jid_to_string(RealMJID);
|
||||||
|
false ->
|
||||||
|
ActorJIDString = <<"">>
|
||||||
|
end,
|
||||||
lists:foreach(fun ({_LJID, Info}) ->
|
lists:foreach(fun ({_LJID, Info}) ->
|
||||||
JidAttrList = case Info#user.role == moderator orelse
|
JidAttrList = case Info#user.role == moderator orelse
|
||||||
(StateData#state.config)#config.anonymous
|
(StateData#state.config)#config.anonymous
|
||||||
@ -3039,6 +3048,12 @@ send_kickban_presence1(UJID, Reason, Code, Affiliation,
|
|||||||
children =
|
children =
|
||||||
[{xmlcdata, Reason}]}]
|
[{xmlcdata, Reason}]}]
|
||||||
end,
|
end,
|
||||||
|
ItemElsActor = case MJID of
|
||||||
|
<<"">> -> [];
|
||||||
|
_ -> [#xmlel{name = <<"actor">>,
|
||||||
|
attrs =
|
||||||
|
[{<<"jid">>, ActorJIDString}]}]
|
||||||
|
end,
|
||||||
Packet = #xmlel{name = <<"presence">>,
|
Packet = #xmlel{name = <<"presence">>,
|
||||||
attrs =
|
attrs =
|
||||||
[{<<"type">>, <<"unavailable">>}],
|
[{<<"type">>, <<"unavailable">>}],
|
||||||
@ -3053,7 +3068,7 @@ send_kickban_presence1(UJID, Reason, Code, Affiliation,
|
|||||||
attrs =
|
attrs =
|
||||||
ItemAttrs,
|
ItemAttrs,
|
||||||
children =
|
children =
|
||||||
ItemEls},
|
ItemElsActor ++ ItemEls},
|
||||||
#xmlel{name =
|
#xmlel{name =
|
||||||
<<"status">>,
|
<<"status">>,
|
||||||
attrs =
|
attrs =
|
||||||
@ -3067,6 +3082,7 @@ send_kickban_presence1(UJID, Reason, Code, Affiliation,
|
|||||||
end,
|
end,
|
||||||
(?DICT):to_list(StateData#state.users)).
|
(?DICT):to_list(StateData#state.users)).
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% Owner stuff
|
% Owner stuff
|
||||||
|
|
||||||
@ -3751,7 +3767,7 @@ remove_nonmembers(StateData) ->
|
|||||||
Affiliation = get_affiliation(JID, SD),
|
Affiliation = get_affiliation(JID, SD),
|
||||||
case Affiliation of
|
case Affiliation of
|
||||||
none ->
|
none ->
|
||||||
catch send_kickban_presence(JID, <<"">>,
|
catch send_kickban_presence(<<"">>, JID, <<"">>,
|
||||||
<<"322">>, SD),
|
<<"322">>, SD),
|
||||||
set_role(JID, none, SD);
|
set_role(JID, none, SD);
|
||||||
_ -> SD
|
_ -> SD
|
||||||
|
Loading…
Reference in New Issue
Block a user