From a25051fead86574c27a024eb048eadf45186599d Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Fri, 26 Jun 2015 21:33:32 +0200 Subject: [PATCH] New hook: muc_filter_packet Add a hook that allows for modifying or dropping MUC room messages. Closes #491. --- src/mod_muc_room.erl | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 7b4cfbf6d..df06bce4f 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -947,20 +947,32 @@ process_groupchat_message(From, end, case IsAllowed of true -> - send_multiple( - jlib:jid_replace_resource(StateData#state.jid, FromNick), - StateData#state.server_host, - StateData#state.users, - Packet), - NewStateData2 = case has_body_or_subject(Packet) of - true -> - add_message_to_history(FromNick, From, - Packet, - NewStateData1); - false -> - NewStateData1 - end, - {next_state, normal_state, NewStateData2}; + case + ejabberd_hooks:run_fold(muc_filter_packet, + StateData#state.server_host, + Packet, + [StateData, + StateData#state.jid, + From, FromNick]) + of + drop -> + {next_state, normal_state, StateData}; + NewPacket -> + send_multiple(jlib:jid_replace_resource(StateData#state.jid, + FromNick), + StateData#state.server_host, + StateData#state.users, + Packet), + NewStateData2 = case has_body_or_subject(Packet) of + true -> + add_message_to_history(FromNick, From, + Packet, + NewStateData1); + false -> + NewStateData1 + end, + {next_state, normal_state, NewStateData2} + end; _ -> Err = case (StateData#state.config)#config.allow_change_subj