git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@455 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2007-01-31 03:42:51 +00:00
parent 1774210e18
commit 2b65c5b21b
1 changed files with 19 additions and 13 deletions

View File

@ -22,6 +22,12 @@
<supersededby>None</supersededby>
<shortname>invisibility</shortname>
&stpeter;
<revision>
<version>0.5</version>
<date>2007-01-30</date>
<initials>psa</initials>
<remark><p>Modified XML namespace name to conform to XEP-0053 processes.</p></remark>
</revision>
<revision>
<version>0.4</version>
<date>2006-08-09</date>
@ -62,7 +68,7 @@
<section1 topic='Introduction' anchor='intro'>
<p>Jabber instant messaging technologies have long supported the ability for IM users to be online but appear invisible. The existing protocols for doing so are:</p>
<ul>
<li><p>&xep0018; -- this protocol is not compatible with &xmppcore; and &xmppim;, and it does not provide reliable documentation of the protocol in use since many server implementations support presence of type "invisible" but not presence of type "visible".</p></li>
<li><p>&xep0018; -- this protocol is not compatible with &xmppcore; and &xmppim;, and the speciifcation does not provide reliable documentation of the protocol in use since many server implementations support presence of type "invisible" but not presence of type "visible".</p></li>
<li><p>&xep0126; -- this protocol is in many ways a mis-use of privacy lists for the temporary purpose of appearing invisible rather than the intended purpose of permanently blocking communications.</p></li>
</ul>
<p>In order to provide a standards-compliant protocol that can be used in the long term, this document defines an IQ-based protocol that enables an IM user to "go invisible" and "go visible" at will within the context of a given session.</p>
@ -71,7 +77,7 @@
<p>The requirements for invisible mode are straightforward:</p>
<ol start='1'>
<li>A user should be able to become visible or invisible at any time within an XMPP session.</li>
<li>Invisible mode is active only for the current session; if the user ends that session and starts another session, the invisibility set for the previous session does not carry over to the new session.</li>
<li>Invisible mode is active only for the current session; if the user ends that session and starts another session, the invisibility mode set for the previous session does not carry over to the new session.</li>
<li>When in invisible mode, a user should be able to send directed presence to particular contacts.</li>
</ol>
</section1>
@ -83,12 +89,12 @@
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
]]></example>
<p>If the server supports the protocol defined herein, it MUST return a feature of "http://jabber.org/protocol/invisibility":</p>
<p>If the server supports the protocol defined herein, it MUST return a feature of "http://www.xmpp.org/extensions/xep-0186.html#ns":</p>
<example caption='Service discovery response'><![CDATA[
<iq from='bilbo@tolkien.lit/shire' to='tolkien.lit' type='get' id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'>
...
<feature var='http://jabber.org/protocol/invisibility'/>
<feature var='http://www.xmpp.org/extensions/xep-0186.html#ns'/>
...
</query>
</iq>
@ -96,10 +102,10 @@
<p>A client SHOULD complete this service discovery process before sending initial presence to its server.</p>
</section2>
<section2 topic='User Becomes Invisible' anchor='invisible'>
<p>In order for a client to go invisible, it shall send an IQ-set with no 'to' address (thus handled by the user's server) containing an &lt;invisible/&gt; element qualified by the 'http://jabber.org/protocol/invisibility' namespace:</p>
<p>In order for a client to go invisible, it shall send an IQ-set with no 'to' address (thus handled by the user's server) containing an &lt;invisible/&gt; element qualified by the 'http://www.xmpp.org/extensions/xep-0186.html#ns' namespace:</p>
<example caption='Invisible command'><![CDATA[
<iq type='set' id='inv1'>
<invisible xmlns='http://jabber.org/protocol/invisibility'/>
<invisible xmlns='http://www.xmpp.org/extensions/xep-0186.html#ns'/>
</iq>
]]></example>
<p>If the server can successfully process the invisibility command, it MUST return an IQ-result:</p>
@ -113,17 +119,17 @@
<li><p>MUST NOT broadcast presence notifications as a result of receiving any subsequent undirected presence notifications from the client.</p></li>
<li><p>MUST deliver directed presence stanzas generated by the client.</p></li>
<li><p>MUST deliver inbound &PRESENCE; stanzas.</p></li>
<li><p>SHOULD deliver inbound &MESSAGE; stanzas whose 'to' address is the bare JID of the user (subject to standard XMPP stanza handling rules).</p></li>
<li><p>MUST deliver inbound &MESSAGE; and &IQ; stanzas whose 'to' address is the resource of the client.</p></li>
<li><p>SHOULD deliver inbound &MESSAGE; stanzas whose 'to' address is the bare JID (&BAREJID;) of the user (subject to standard XMPP stanza handling rules).</p></li>
<li><p>MUST deliver inbound &MESSAGE; and &IQ; stanzas whose 'to' address is the full JID (&FULLJID;) corresponding to the resource of the client.</p></li>
<li><p>MUST deliver outbound &MESSAGE; and &IQ; stanzas generated by the client (for an important note regarding presence leaks, see the <link url='#security'>Security Considerations</link> section of this document).</p></li>
</ol>
<p>If after sending directed presence the client then sends &UNAVAILABLE;, the server MUST deliver that unavailable presence only to the entities to which the client sent directed presence after going invisible.</p>
</section2>
<section2 topic='User Becomes Visible' anchor='visible'>
<p>In order for a client to become visible again, it shall send an IQ-set with no 'to' address (thus handled by the user's server) containing a &lt;visible/&gt; element qualified by the 'http://jabber.org/protocol/invisibility' namespace:</p>
<p>In order for a client to become visible again, it shall send an IQ-set with no 'to' address (thus handled by the user's server) containing a &lt;visible/&gt; element qualified by the 'http://www.xmpp.org/extensions/xep-0186.html#ns' namespace:</p>
<example caption='Visible command'><![CDATA[
<iq type='set' id='vis1'>
<visible xmlns='http://jabber.org/protocol/invisibility'/>
<visible xmlns='http://www.xmpp.org/extensions/xep-0186.html#ns'/>
</iq>
]]></example>
<p>If the server can successfully process the visibility command, it MUST return an IQ-result:</p>
@ -141,7 +147,7 @@
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<section2 topic='Protocol Namespaces' anchor='registrar-ns'>
<p>The &REGISTRAR; shall include 'http://jabber.org/protocol/invisibility' in its registry of protocol namespaces (see &NAMESPACES;).</p>
<p>The &REGISTRAR; shall include 'http://www.xmpp.org/extensions/xep-0186.html#ns' in its registry of protocol namespaces (see &NAMESPACES;).</p>
</section2>
</section1>
<section1 topic='XML Schema' anchor='schema'>
@ -150,8 +156,8 @@
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/invisibility'
xmlns='http://jabber.org/protocol/invisibility'
targetNamespace='http://www.xmpp.org/extensions/xep-0186.html#ns'
xmlns='http://www.xmpp.org/extensions/xep-0186.html#ns'
elementFormDefault='qualified'>
<xs:element name='invisible' type='empty'/>