diff options
author | Alexey Shchepin <alexey@process-one.net> | 2017-01-16 18:13:48 +0300 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2017-01-16 18:14:14 +0300 |
commit | fedfe5427c7978f7000148f3226a156ff3a3d103 (patch) | |
tree | 3573b631947dd2ce8a8f6cc8ac879e0ed9307c93 /src/ejabberd_c2s.erl | |
parent | Don't allow raw elements in process_iq/3 (diff) |
Add mod_block_strangers
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index ecd6321d..113be091 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -546,7 +546,7 @@ process_iq_in(State, #iq{} = IQ) -> -spec process_message_in(state(), message()) -> {boolean(), state()}. process_message_in(State, #message{type = T} = Msg) -> - case privacy_check_packet(State, Msg, in) of + case filter_incoming_message(State, Msg) of allow -> {true, State}; deny when T == groupchat; T == headline -> @@ -561,6 +561,24 @@ process_message_in(State, #message{type = T} = Msg) -> {false, State} end. +filter_incoming_message(State, Msg) -> + case privacy_check_packet(State, Msg, in) of + allow -> + #{lserver := LServer} = State, + case ejabberd_hooks:run_fold( + c2s_filter_incoming_packet, + LServer, + allow, + [State, Msg]) of + allow -> + allow; + deny -> + deny + end; + deny -> + deny + end. + -spec process_presence_in(state(), presence()) -> {boolean(), state()}. process_presence_in(#{lserver := LServer, pres_a := PresA} = State0, #presence{from = From, to = To, type = T} = Pres) -> |