]> granicus.if.org Git - ejabberd/commitdiff
Renaming allow_visitor_presence to allow_visitor_status (EJAB-624).
authorGeoff Cant <geoff.cant@process-one.net>
Wed, 23 Jul 2008 16:40:17 +0000 (16:40 +0000)
committerGeoff Cant <geoff.cant@process-one.net>
Wed, 23 Jul 2008 16:40:17 +0000 (16:40 +0000)
allow_visitor_status when false will strip status message tags from visitor
presence broadcasts in muc rooms.

SVN Revision: 1477

ChangeLog
src/mod_muc/mod_muc_room.erl

index ba2fdfbe07e1ce196744ea5bf72b19f8dd151ce3..7ab4c4f76e2fe5bd749cf3bef8a497fb6a6982a2 100644 (file)
--- 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  <christophe.romain@process-one.net>
 
index e221cffd1d09be0b134111fc24827cec041d919a..2e8fcc0b7329a52fffacf2f84299a47386abfbd6 100644 (file)
@@ -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),