mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-12 21:52:07 +02:00
Don't pass 'from' and 'to' along with stanza in hooks' arguments
This commit is contained in:
parent
039ac46963
commit
485aae8134
|
@ -35,7 +35,7 @@
|
||||||
-export([user_send_packet/1, user_send_packet_strip_tag/1, user_receive_packet/1,
|
-export([user_send_packet/1, user_send_packet_strip_tag/1, user_receive_packet/1,
|
||||||
process_iq_v0_2/1, process_iq_v0_3/1, disco_sm_features/5,
|
process_iq_v0_2/1, process_iq_v0_3/1, disco_sm_features/5,
|
||||||
remove_user/2, remove_room/3, mod_opt_type/1, muc_process_iq/2,
|
remove_user/2, remove_room/3, mod_opt_type/1, muc_process_iq/2,
|
||||||
muc_filter_message/5, message_is_archived/3, delete_old_messages/2,
|
muc_filter_message/3, message_is_archived/3, delete_old_messages/2,
|
||||||
get_commands_spec/0, msg_to_el/4, get_room_config/4, set_room_option/3,
|
get_commands_spec/0, msg_to_el/4, get_room_config/4, set_room_option/3,
|
||||||
offline_message/1]).
|
offline_message/1]).
|
||||||
|
|
||||||
|
@ -317,9 +317,10 @@ user_send_packet_strip_tag({Pkt, #{jid := JID} = C2SState}) ->
|
||||||
{strip_my_archived_tag(Pkt, LServer), C2SState}.
|
{strip_my_archived_tag(Pkt, LServer), C2SState}.
|
||||||
|
|
||||||
-spec muc_filter_message(message(), mod_muc_room:state(),
|
-spec muc_filter_message(message(), mod_muc_room:state(),
|
||||||
jid(), jid(), binary()) -> message().
|
binary()) -> message().
|
||||||
muc_filter_message(Pkt, #state{config = Config} = MUCState,
|
muc_filter_message(Pkt, #state{config = Config, jid = RoomJID} = MUCState,
|
||||||
RoomJID, From, FromNick) ->
|
FromNick) ->
|
||||||
|
From = xmpp:get_from(Pkt),
|
||||||
if Config#config.mam ->
|
if Config#config.mam ->
|
||||||
LServer = RoomJID#jid.lserver,
|
LServer = RoomJID#jid.lserver,
|
||||||
NewPkt = strip_my_archived_tag(Pkt, LServer),
|
NewPkt = strip_my_archived_tag(Pkt, LServer),
|
||||||
|
|
|
@ -185,7 +185,7 @@ normal_state({route, <<"">>,
|
||||||
StateData),
|
StateData),
|
||||||
StateData2 = StateData1#state{room_shaper =
|
StateData2 = StateData1#state{room_shaper =
|
||||||
RoomShaper},
|
RoomShaper},
|
||||||
process_groupchat_message(From, Packet,
|
process_groupchat_message(Packet,
|
||||||
StateData2);
|
StateData2);
|
||||||
true ->
|
true ->
|
||||||
StateData1 = if RoomQueueEmpty ->
|
StateData1 = if RoomQueueEmpty ->
|
||||||
|
@ -349,7 +349,7 @@ normal_state({route, Nick, #presence{from = From} = Packet}, StateData) ->
|
||||||
NewActivity = Activity#activity{presence_time = Now},
|
NewActivity = Activity#activity{presence_time = Now},
|
||||||
StateData1 = store_user_activity(From, NewActivity,
|
StateData1 = store_user_activity(From, NewActivity,
|
||||||
StateData),
|
StateData),
|
||||||
process_presence(From, Nick, Packet, StateData1);
|
process_presence(Nick, Packet, StateData1);
|
||||||
true ->
|
true ->
|
||||||
if Activity#activity.presence == undefined ->
|
if Activity#activity.presence == undefined ->
|
||||||
Interval = (Activity#activity.presence_time +
|
Interval = (Activity#activity.presence_time +
|
||||||
|
@ -615,7 +615,7 @@ handle_info(process_room_queue,
|
||||||
StateData),
|
StateData),
|
||||||
StateData2 = StateData1#state{room_queue = RoomQueue},
|
StateData2 = StateData1#state{room_queue = RoomQueue},
|
||||||
StateData3 = prepare_room_queue(StateData2),
|
StateData3 = prepare_room_queue(StateData2),
|
||||||
process_groupchat_message(From, Packet, StateData3);
|
process_groupchat_message(Packet, StateData3);
|
||||||
{{value, {presence, From}}, RoomQueue} ->
|
{{value, {presence, From}}, RoomQueue} ->
|
||||||
Activity = get_user_activity(From, StateData),
|
Activity = get_user_activity(From, StateData),
|
||||||
{Nick, Packet} = Activity#activity.presence,
|
{Nick, Packet} = Activity#activity.presence,
|
||||||
|
@ -624,7 +624,7 @@ handle_info(process_room_queue,
|
||||||
StateData),
|
StateData),
|
||||||
StateData2 = StateData1#state{room_queue = RoomQueue},
|
StateData2 = StateData1#state{room_queue = RoomQueue},
|
||||||
StateData3 = prepare_room_queue(StateData2),
|
StateData3 = prepare_room_queue(StateData2),
|
||||||
process_presence(From, Nick, Packet, StateData3);
|
process_presence(Nick, Packet, StateData3);
|
||||||
{empty, _} -> {next_state, StateName, StateData}
|
{empty, _} -> {next_state, StateName, StateData}
|
||||||
end;
|
end;
|
||||||
handle_info({captcha_succeed, From}, normal_state,
|
handle_info({captcha_succeed, From}, normal_state,
|
||||||
|
@ -702,8 +702,8 @@ route(Pid, Packet) ->
|
||||||
#jid{lresource = Nick} = xmpp:get_to(Packet),
|
#jid{lresource = Nick} = xmpp:get_to(Packet),
|
||||||
gen_fsm:send_event(Pid, {route, Nick, Packet}).
|
gen_fsm:send_event(Pid, {route, Nick, Packet}).
|
||||||
|
|
||||||
-spec process_groupchat_message(jid(), message(), state()) -> fsm_next().
|
-spec process_groupchat_message(message(), state()) -> fsm_next().
|
||||||
process_groupchat_message(From, #message{lang = Lang} = Packet, StateData) ->
|
process_groupchat_message(#message{from = From, lang = Lang} = Packet, StateData) ->
|
||||||
IsSubscriber = is_subscriber(From, StateData),
|
IsSubscriber = is_subscriber(From, StateData),
|
||||||
case is_user_online(From, StateData) orelse IsSubscriber orelse
|
case is_user_online(From, StateData) orelse IsSubscriber orelse
|
||||||
is_user_allowed_message_nonparticipant(From, StateData)
|
is_user_allowed_message_nonparticipant(From, StateData)
|
||||||
|
@ -740,9 +740,7 @@ process_groupchat_message(From, #message{lang = Lang} = Packet, StateData) ->
|
||||||
ejabberd_hooks:run_fold(muc_filter_message,
|
ejabberd_hooks:run_fold(muc_filter_message,
|
||||||
StateData#state.server_host,
|
StateData#state.server_host,
|
||||||
Packet,
|
Packet,
|
||||||
[StateData,
|
[StateData, FromNick])
|
||||||
StateData#state.jid,
|
|
||||||
From, FromNick])
|
|
||||||
of
|
of
|
||||||
drop ->
|
drop ->
|
||||||
{next_state, normal_state, StateData};
|
{next_state, normal_state, StateData};
|
||||||
|
@ -953,29 +951,27 @@ get_participant_data(From, StateData) ->
|
||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec process_presence(jid(), binary(), presence(), state()) -> fsm_transition().
|
-spec process_presence(binary(), presence(), state()) -> fsm_transition().
|
||||||
process_presence(From, Nick, #presence{type = Type0} = Packet0, StateData) ->
|
process_presence(Nick, #presence{from = From, type = Type0} = Packet0, StateData) ->
|
||||||
IsOnline = is_user_online(From, StateData),
|
IsOnline = is_user_online(From, StateData),
|
||||||
if Type0 == available;
|
if Type0 == available;
|
||||||
IsOnline and ((Type0 == unavailable) or (Type0 == error)) ->
|
IsOnline and ((Type0 == unavailable) or (Type0 == error)) ->
|
||||||
case ejabberd_hooks:run_fold(muc_filter_presence,
|
case ejabberd_hooks:run_fold(muc_filter_presence,
|
||||||
StateData#state.server_host,
|
StateData#state.server_host,
|
||||||
Packet0,
|
Packet0,
|
||||||
[StateData,
|
[StateData, Nick]) of
|
||||||
StateData#state.jid,
|
|
||||||
From, Nick]) of
|
|
||||||
drop ->
|
drop ->
|
||||||
{next_state, normal_state, StateData};
|
{next_state, normal_state, StateData};
|
||||||
#presence{} = Packet ->
|
#presence{} = Packet ->
|
||||||
close_room_if_temporary_and_empty(
|
close_room_if_temporary_and_empty(
|
||||||
do_process_presence(From, Nick, Packet, StateData))
|
do_process_presence(Nick, Packet, StateData))
|
||||||
end;
|
end;
|
||||||
true ->
|
true ->
|
||||||
{next_state, normal_state, StateData}
|
{next_state, normal_state, StateData}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec do_process_presence(jid(), binary(), presence(), state()) -> state().
|
-spec do_process_presence(binary(), presence(), state()) -> state().
|
||||||
do_process_presence(From, Nick, #presence{type = available, lang = Lang} = Packet,
|
do_process_presence(Nick, #presence{from = From, type = available, lang = Lang} = Packet,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
case is_user_online(From, StateData) of
|
case is_user_online(From, StateData) of
|
||||||
false ->
|
false ->
|
||||||
|
@ -1019,7 +1015,7 @@ do_process_presence(From, Nick, #presence{type = available, lang = Lang} = Packe
|
||||||
NewState
|
NewState
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
do_process_presence(From, Nick, #presence{type = unavailable} = Packet,
|
do_process_presence(Nick, #presence{from = From, type = unavailable} = Packet,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
NewPacket = case {(StateData#state.config)#config.allow_visitor_status,
|
NewPacket = case {(StateData#state.config)#config.allow_visitor_status,
|
||||||
is_visitor(From, StateData)} of
|
is_visitor(From, StateData)} of
|
||||||
|
@ -1034,7 +1030,7 @@ do_process_presence(From, Nick, #presence{type = unavailable} = Packet,
|
||||||
end,
|
end,
|
||||||
Reason = xmpp:get_text(NewPacket#presence.status),
|
Reason = xmpp:get_text(NewPacket#presence.status),
|
||||||
remove_online_user(From, NewState, Reason);
|
remove_online_user(From, NewState, Reason);
|
||||||
do_process_presence(From, _Nick, #presence{type = error, lang = Lang} = Packet,
|
do_process_presence(_Nick, #presence{from = From, type = error, lang = Lang} = Packet,
|
||||||
StateData) ->
|
StateData) ->
|
||||||
ErrorText = <<"It is not allowed to send error messages to the"
|
ErrorText = <<"It is not allowed to send error messages to the"
|
||||||
" room. The participant (~s) has sent an error "
|
" room. The participant (~s) has sent an error "
|
||||||
|
|
|
@ -486,7 +486,7 @@ store_packet({_Action, #message{from = From, to = To} = Packet} = Acc) ->
|
||||||
true ->
|
true ->
|
||||||
#jid{luser = LUser, lserver = LServer} = To,
|
#jid{luser = LUser, lserver = LServer} = To,
|
||||||
case ejabberd_hooks:run_fold(store_offline_message, LServer,
|
case ejabberd_hooks:run_fold(store_offline_message, LServer,
|
||||||
Packet, [From, To]) of
|
Packet, []) of
|
||||||
drop ->
|
drop ->
|
||||||
Acc;
|
Acc;
|
||||||
NewPacket ->
|
NewPacket ->
|
||||||
|
|
Loading…
Reference in New Issue
Block a user