<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE xep SYSTEM 'xep.dtd' [
  <!ENTITY % ents SYSTEM "xep.ent">
%ents;
]>

<?xml-stylesheet type='text/xsl' href='xep.xsl'?>

<xep>
<header>
  <title>Basic Filtering Operations</title>
  <abstract>A module that provides basic conditions and actions for packet filtering.</abstract>
  &LEGALNOTICE;
  <number>0063</number>
  <status>Deferred</status>
  <type>Informational</type>
  <sig>Standards</sig>
  <dependencies>XEP-0062</dependencies>
  <supersedes>None</supersedes>
  <supersededby>None</supersededby>
  <shortname>Not yet assigned</shortname>
  <author>
    <firstname>Robert</firstname>
    <surname>Norris</surname>
    <email>rob@cataclysm.cx</email>
    <jid>rob@cataclysm.cx</jid>
  </author>
  <revision>
    <version>0.2</version>
    <date>2003-09-30</date>
    <initials>psa</initials>
    <remark>At the request of the author, changed the status of this document to Deferred pending development of an implementation; also changed the type to Informational.</remark> 
  </revision>
  <revision>
    <version>0.1</version>
    <date>2002-12-05</date>
    <initials>rn</initials>
    <remark>Initial version.</remark>
  </revision>
</header>

<section1 topic='Introduction'>
  <p>This document defines a module for &xep0062; that provides some basic conditions and actions to perform common packet filtering tasks.</p>

  <p>This module operates in the "http://jabber.org/protocol/filter/basic" namespace.</p>
</section1>

<section1 topic='Conditions'>
  <p>This module defines the fullowing conditions:</p>

  <ul>
    <li>&lt;message/> - true if the packet is a &lt;message/> packet.</li>
    <li>&lt;presence/> - true if the packet is a &lt;presence/> packet.</li>
    <li>&lt;iq/> - true if the packet is a &lt;iq/> packet. If this element contains CDATA, then it must match the namespace of the first element inside the packet (typically &lt;query/>) in order to be true.</li>
    <li>&lt;to/> - true when the CDATA of this element matches the "to" attribute of the packet.</li>
    <li>&lt;from/> - true when the CDATA of this element matches the "from" attribute of the packet.</li>
    <li>&lt;type/> - true when the CDATA of this element matches the "type" attribute of the packet.</li>
  </ul>

  <example caption='Matches all presence packets'><![CDATA[
<presence xmlns='http://jabber.org/protocol/filter/basic'/>
]]></example>
  
  <example caption='Matches all jabber:iq:version IQ packets'><![CDATA[
<iq xmlns='http://jabber.org/protocol/filter/basic'>jabber:iq:version</iq>
]]></example>

  <example caption='Matches all packets from user@company.com'><![CDATA[
<from xmlns='http://jabber.org/protocol/filter/basic'>user@company.com</from>
]]></example>
  
</section1>

<section1 topic='Actions'>
  <p>This module defines the fullowing actions:</p>

  <ul>
    <li>&lt;drop/> - drops the packet</li>
    <li>&lt;bounce/> - bounces the packet with the error specified in the "code" attribute of this element.</li>
    <li>&lt;redirect/> - redirects the packet to the JID specified in the CDATA of this element.</li>
    <li>&lt;copy/> - sends a copy of the packet to the JID specified in the CDATA of this element, while giving the original packet to the user.</li>
  </ul>

  <example caption='Pretend that we don&apos;t exist'><![CDATA[
<bounce xmlns='http://jabber.org/protocol/filter/basic' code='404'/>
]]></example>
  
  <example caption='Send a copy to our home account'><![CDATA[
<copy xmlns='http://jabber.org/protocol/filter/basic'>me@home.com</copy>
]]></example>
  
</section1>

<section1 topic='Security Considerations'>
  <p>There are no security features or concerns related to this proposal.</p>
</section1>

<section1 topic='IANA Considerations'>
  <p>This document requires no interaction with the IANA.</p>
</section1>

<section1 topic='JANA Considerations'>
  <p>No namespaces or parameters need to be registered with JANA as a result of this document.</p>
</section1>

</xep>
