diff --git a/ChangeLog b/ChangeLog index 84d46533b..fa0cfbdbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-08-18 Alexey Shchepin + + * src/ejabberd_c2s.erl: Support for filtering of incoming messages + and IQs, presence filtering will be after some xmpp-im + clarifications + 2003-08-15 Alexey Shchepin * src/mod_muc/mod_muc.erl: Fixed handling of room names with diff --git a/src/ejabberd.hrl b/src/ejabberd.hrl index 2574c709b..29d2fcb24 100644 --- a/src/ejabberd.hrl +++ b/src/ejabberd.hrl @@ -36,3 +36,6 @@ -define(CONFIG_PATH, "ejabberd.cfg"). -define(LOG_PATH, "ejabberd.log"). + +-define(PRIVACY_SUPPORT, true). + diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index a444e6028..3199f3585 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -624,12 +624,42 @@ handle_info({route, From, To, Packet}, StateName, StateData) -> From, jlib:iq_to_xml(ResIQ)), {false, Attrs, StateData}; - %{iq, ID, Type, ?NS_VCARD, SubEl} -> - % TODO: don't pass packets until roster loaded - %{true, Attrs, StateData}; +%-ifdef(PRIVACY_SUPPORT). + {iq, _ID, Type, _XMLNS, _SubEl} -> + case catch mod_privacy:check_packet( + StateData#state.user, + StateData#state.privacy_list, + {From, To, Packet}, + in) of + {'EXIT', _Reason} -> + {true, Attrs, StateData}; + allow -> + {true, Attrs, StateData}; + deny -> + Err = jlib:make_error_reply( + Packet, ?ERR_FEATURE_NOT_IMPLEMENTED), + ejabberd_router:route(To, From, Err), + {false, Attrs, StateData} + end; +%-endif. _ -> {true, Attrs, StateData} end; +%-ifdef(PRIVACY_SUPPORT). + "message" -> + case catch mod_privacy:check_packet( + StateData#state.user, + StateData#state.privacy_list, + {From, To, Packet}, + in) of + {'EXIT', _Reason} -> + {true, Attrs, StateData}; + allow -> + {true, Attrs, StateData}; + deny -> + {false, Attrs, StateData} + end; +%-endif. _ -> {true, Attrs, StateData} end, diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index bb9122d7d..a16f4b4f3 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -192,7 +192,6 @@ do_route(From, To, Packet) -> {xmlelement, Name, Attrs, Els} = Packet, case Resource of "" -> - % TODO case Name of "presence" -> {FU, FS, FR} = From,