From 2c3260d07bb3835a21af8a093d684c0a405a863e Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Wed, 23 Jul 2008 16:40:17 +0000 Subject: [PATCH] Renaming allow_visitor_presence to allow_visitor_status (EJAB-624). allow_visitor_status when false will strip status message tags from visitor presence broadcasts in muc rooms. SVN Revision: 1477 --- ChangeLog | 4 ++++ src/mod_muc/mod_muc_room.erl | 36 +++++++++++++++++------------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index ba2fdfbe0..7ab4c4f76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ allow_visitor_presence and allow_visitor_nickchange to block/enable visitors to broadcast presence updates to the room (EJAB-624). + * src/mod_muc/mod_muc_room.erl: renaming allow_visitor_presence to + allow_visitor_status and altering effect (when false) to remove + custom status tags in presence broadcasts to muc rooms by + visitors. 2008-07-23 Christophe Romain diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index e221cffd1..2e8fcc0b7 100644 --- a/src/mod_muc/mod_muc_room.erl +++ b/src/mod_muc/mod_muc_room.erl @@ -985,25 +985,16 @@ process_presence(From, Nick, {xmlelement, "presence", Attrs, _Els} = Packet, change_nick(From, Nick, StateData) end; _NotNickChange -> - case {(StateData#state.config)#config.allow_visitor_presence, - is_visitor(From, StateData)} of - {false, true} -> - ErrText = "Visitors are not allowed to update their presence in this room", - Err = jlib:make_error_reply( - Packet, - ?ERRT_NOT_ALLOWED(Lang, ErrText)), - ejabberd_router:route( - % TODO: s/Nick/""/ - jlib:jid_replace_resource( - StateData#state.jid, - Nick), - From, Err), - StateData; - _Allowed -> - NewState = add_user_presence(From, Packet, StateData), - send_new_presence(From, NewState), - NewState - end + Stanza = case {(StateData#state.config)#config.allow_visitor_presence, + is_visitor(From, StateData)} of + {false, true} -> + strip_status(Packet); + _Allowed -> + Packet + end, + NewState = add_user_presence(From, Stanza, StateData), + send_new_presence(From, NewState), + NewState end; _ -> add_new_user(From, Nick, Packet, StateData) @@ -1388,6 +1379,13 @@ filter_presence({xmlelement, "presence", Attrs, Els}) -> end, Els), {xmlelement, "presence", Attrs, FEls}. +strip_status({xmlelement, "presence", Attrs, Els}) -> + FEls = lists:filter( + fun({xmlelement, "status", _Attrs1, _Els1}) -> + false; + (_) -> true + end, Els), + {xmlelement, "presence", Attrs, FEls}. add_user_presence(JID, Presence, StateData) -> LJID = jlib:jid_tolower(JID), -- 2.40.0