diff options
author | Geoff Cant <geoff.cant@process-one.net> | 2008-07-23 16:40:17 +0000 |
---|---|---|
committer | Geoff Cant <geoff.cant@process-one.net> | 2008-07-23 16:40:17 +0000 |
commit | 2c3260d07bb3835a21af8a093d684c0a405a863e (patch) | |
tree | 97d26b924ac44dad162be423a0e694998efe4c5a /src | |
parent | Implementing muc_room visitor presence restrictions. (EJAB-624) (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc/mod_muc_room.erl | 36 |
1 files changed, 17 insertions, 19 deletions
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), |