diff options
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/mod_muc/mod_muc_room.erl | 36 |
2 files changed, 21 insertions, 19 deletions
@@ -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 <christophe.romain@process-one.net> diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index e221cffd..2e8fcc0b 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), |