mirror of
https://github.com/moparisthebest/xeps
synced 2024-12-22 07:38:52 -05:00
492 lines
43 KiB
HTML
492 lines
43 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!DOCTYPE html
|
||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html><head><title>XEP-0406: Mediated Information eXchange (MIX): MIX Administration</title><link rel="stylesheet" type="text/css" href="xmpp.css"/><link href="prettify.css" type="text/css" rel="stylesheet"/><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"/><script type="text/javascript" src="prettify.js"><!----></script><meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=2.0"/><meta name="DC.Title" content="Mediated Information eXchange (MIX): MIX Administration"/><meta name="DC.Creator" content="Kevin Smith"/><meta name="DC.Creator" content="Steve Kille"/><meta name="DC.Description" content="This document defines an extension to Mediated Information eXchange (MIX) specified in XEP-0369. This specification defines a framework for MIX administration and administration operations. "/><meta name="DC.Publisher" content="XMPP Standards Foundation"/><meta name="DC.Contributor" content="XMPP Extensions Editor"/><meta name="DC.Date" content="2018-05-14"/><meta name="DC.Type" content="XMPP Extension Protocol"/><meta name="DC.Format" content="XHTML"/><meta name="DC.Identifier" content="XEP-0406"/><meta name="DC.Language" content="en"/><meta name="DC.Rights" content="This XMPP Extension Protocol is copyright © 1999 – 2018 by the XMPP Standards Foundation (XSF)."/></head><body onload="prettyPrint()"><h1>XEP-0406: Mediated Information eXchange (MIX): MIX Administration</h1><table><tr valign="top"><td><strong>Abstract:</strong></td><td>This document defines an extension to Mediated Information eXchange (MIX) specified in XEP-0369. This specification defines a framework for MIX administration and administration operations. </td></tr><tr valign="top"><td><strong>Authors:</strong></td><td>Kevin Smith, Steve Kille</td></tr><tr valign="top"><td><strong>Copyright:</strong></td><td>© 1999 – 2017 XMPP Standards Foundation. <a href="#appendix-legal">SEE LEGAL NOTICES</a>.</td></tr><tr valign="top"><td><strong>Status:</strong></td><td>Experimental</td></tr><tr valign="top"><td><strong>Type:</strong></td><td>Standards Track</td></tr><tr valign="top"><td><strong>Version:</strong></td><td>0.1.0</td></tr><tr valign="top"><td><strong>Last Updated:</strong></td><td>2018-05-14</td></tr></table><hr/><p style="color:red">WARNING: This Standards-Track document is Experimental. Publication as an XMPP Extension Protocol does not imply approval of this proposal by the XMPP Standards Foundation. Implementation of the protocol described herein is encouraged in exploratory implementations, but production systems are advised to carefully consider whether it is appropriate to deploy implementations of this protocol before it advances to a status of Draft.</p><hr/><h2>Table of Contents</h2><div class="indent"><p><br/>1. <a href="#intro">Introduction</a><br/>2. <a href="#reqs">Requirements</a><br/>3. <a href="#concepts">Concepts</a><br/>
|
||
3.1. <a href="#concepts-nodes">Admin Nodes</a><br/>
|
||
3.1.1. <a href="#roles">Roles</a><br/>
|
||
3.1.2. <a href="#allowed-node">Allowed</a><br/>
|
||
3.1.3. <a href="#banned-node">Banned</a><br/>
|
||
3.1.4. <a href="#config-node">Configuration Node</a><br/>4. <a href="#usecases">Use Cases</a><br/>
|
||
4.1. <a href="#usecases-admin">Administrative Use Cases</a><br/>
|
||
4.1.1. <a href="#usecase-admin-create">Creating a Channel</a><br/>
|
||
4.1.2. <a href="#usecase-admin-information">Modifying Channel Information</a><br/>
|
||
4.1.3. <a href="#usecase-admin-information">Modifying Channel Configuration</a><br/>
|
||
4.1.4. <a href="#usecase-admin-participants">Controlling Channel Participants</a><br/>5. <a href="#i18n">Internationalization Considerations</a><br/>6. <a href="#security">Security Considerations</a><br/>7. <a href="#iana">IANA Considerations</a><br/>8. <a href="#registrar">XMPP Registrar Considerations</a><br/>9. <a href="#schema">XML Schema</a><br/>10. <a href="#ack">Acknowledgements</a></p><p><a href="#appendices">Appendices</a><br/> <a href="#appendix-docinfo">A: Document Information</a><br/> <a href="#appendix-authorinfo">B: Author Information</a><br/> <a href="#appendix-legal">C: Legal Notices</a><br/> <a href="#appendix-xmpp">D: Relation to XMPP</a><br/> <a href="#appendix-discuss">E: Discussion Venue</a><br/> <a href="#appendix-conformance">F: Requirements Conformance</a><br/> <a href="#appendix-notes">G: Notes</a><br/> <a href="#appendix-revs">H: Revision History</a></p></div><hr/><h2>1.
|
||
<a name="intro">Introduction</a></h2>
|
||
<p class="" style="">The Mediated Information eXchange (MIX) protocol framework and core capbilities are specified in <span class="ref" style=""><a href="https://xmpp.org/extensions/xep-0369.html">Mediated Information eXchange (MIX) (XEP-0369)</a></span> [<a href="#nt-d0e156">1</a>] (MIX-CORE).
|
||
|
||
</p>
|
||
|
||
<h2>2.
|
||
<a name="reqs">Requirements</a></h2>
|
||
|
||
<p class="" style=""/>
|
||
|
||
<h2>3.
|
||
<a name="concepts">Concepts</a></h2>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="indent"><h3>3.1 <a name="concepts-nodes">Admin Nodes</a></h3>
|
||
<p class="" style="">MIX defines a number standard nodes are as follows. Note that all nodes are OPTIONAL and that not every channel will necessarily use each node:</p>
|
||
<div class="indent"><p class="caption"><a name="table-1"/>Table 1: Standard MIX Nodes</p><table border="1" cellpadding="3" cellspacing="0">
|
||
|
||
<tr class="body"><td align="" colspan="" rowspan="">Allowed</td><td align="" colspan="" rowspan="">'urn:xmpp:mix:nodes:allowed'</td><td align="" colspan="" rowspan="">For storing JIDs that are allowed to be channel participants.</td><td align="" colspan="" rowspan="">PubSub</td><td align="" colspan="" rowspan="">PubSub</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Banned</td><td align="" colspan="" rowspan="">'urn:xmpp:mix:nodes:banned'</td><td align="" colspan="" rowspan="">For storing JIDs that are not allowed to be channel participants. </td><td align="" colspan="" rowspan="">PubSub</td><td align="" colspan="" rowspan="">PubSub</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Configuration</td><td align="" colspan="" rowspan="">'urn:xmpp:mix:nodes:config'</td><td align="" colspan="" rowspan="">For storing channel configuration. </td><td align="" colspan="" rowspan="">PubSub</td><td align="" colspan="" rowspan="">PubSub</td></tr>
|
||
</table></div>
|
||
<p class="" style="">
|
||
|
||
</p>
|
||
<div class="indent"><h3>3.1.1 <a name="roles">Roles</a></h3>
|
||
<p class="" style="">
|
||
There are a number of MIX roles for each channel, listed in the following table. Rights will be assigned to the various roles in the channel configuration node.
|
||
</p>
|
||
<div class="indent"><p class="caption"><a name="table-2"/>Table 2: Channel Roles</p><table border="1" cellpadding="3" cellspacing="0">
|
||
<tr class="body"><th colspan="" rowspan="">Role</th><th colspan="" rowspan="">Membership and Rights</th></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Owners</td><td align="" colspan="" rowspan="">These are owners of the channel, as specified in the channel configuration node. Only owners are allowed to modify the channel configuration node.</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Administrators</td><td align="" colspan="" rowspan="">Administrators are defined in the channel configuration node. Administrators have update rights to the Allowed Node and Banned Node, so they can control which users are allowed to participate in a channel. </td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Participants</td><td align="" colspan="" rowspan="">Participants are users listed by JID in the participants node.</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Allowed</td><td align="" colspan="" rowspan="">Allowed is the set of JIDs that are participants or are allowed to become participants. A JID is allowed if it does not match an entry in the banned node and either it matches an entry in the allowed node or the allowed node is not present. </td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">Anyone</td><td align="" colspan="" rowspan="">Any user, including users in the banned node.</td></tr>
|
||
</table></div>
|
||
<p class="" style="">
|
||
There MUST always be at least one Owner set for a Channel. Administrators are optional and do not need to be set. Administrators and Owners MAY be participants but are not required to be. Owners and Administrators are configured in the information node. Participants and Allowed are specified in separate nodes.
|
||
Rights are defined in a strictly hierarchical manner following the order of this table, so that for example Owners will always have rights that Administrators have.
|
||
</p>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="indent"><h3>3.1.2 <a name="allowed-node">Allowed</a></h3>
|
||
<p class="" style="">
|
||
This node represents a list of JIDs that are allowed to become participants. If the Allowed node is not present, all JIDs are allowed. This node is accessed and managed using standard pubsub. The Allowed list is always considered in conjunction with the banned list, stored in the banned node. Only Administrators and Owners have write permission to the Allowed node and are also the only roles that are allowed to subscribe to this node. The Allowed node is a permanent node. Each item contains a real bare JID. The following example shows how the Allowed list can specify single JIDs and domains.
|
||
</p>
|
||
<p class="caption"><a name="example-1"/>Example 1. Allowed Node</p><div class="indent"><pre class="prettyprint">
|
||
<items node='urn:xmpp:mix:nodes:allowed'>
|
||
<item id='shakespeare.example'/>
|
||
<item id='alice@wonderland.example'/>
|
||
</items>
|
||
</pre></div>
|
||
</div>
|
||
<div class="indent"><h3>3.1.3 <a name="banned-node">Banned</a></h3>
|
||
<p class="" style="">
|
||
This node represents a list of JIDs that are explicitly not allowed to become participants. The values in this list take priority over values in the Allowed node. This node is accessed and managed using standard pubsub Only Administrators and Owners have write permission to the Banned node and are also the only roles that are allowed to subscribe to this node. Each item contains a real bare JID. The Banned node can contain bare JIDs and/or domains. The Banned node is a permanent node.
|
||
</p>
|
||
<p class="caption"><a name="example-2"/>Example 2. Banned Node</p><div class="indent"><pre class="prettyprint">
|
||
<items node='urn:xmpp:mix:nodes:banned'>
|
||
<item id='lear@shakespeare.example'/>
|
||
<item id='macbeth@shakespeare.example'/>
|
||
</items>
|
||
</pre></div>
|
||
</div>
|
||
<div class="indent"><h3>3.1.4 <a name="config-node">Configuration Node</a></h3>
|
||
<p class="" style="">
|
||
The Configuration node holds the configuration of the channel as a single item, named by the date-time of the last update to the configuration. The Configuration node is a permanent node with a maximum of one item. Previous configuration history MAY be accessed by MAM. Users with read access to the configuration node MAY subscribe to the configuration node to get notification of configuration change. This node is accessed and managed using standard pubsub. The configuration node is OPTIONAL for a MIX channel. For example, configuration choices could be fixed and not exposed. A subset of the defined configuration options MAY be used and additional non-standard configuration options MAY be added. JIDs in the configuration MUST be real bare JIDs and not proxy JIDs. If configuration options to control functionality of the nature described here are provided, the options defined in this standard MUST be used. The following configuration attributes are defined:
|
||
</p>
|
||
<div class="indent"><p class="caption"><a name="table-3"/>Table 3: Configuration Node Attributes</p><table border="1" cellpadding="3" cellspacing="0">
|
||
<tr class="body"><th colspan="" rowspan="">Name</th><th colspan="" rowspan="">Description</th><th colspan="" rowspan="">Field Type</th><th colspan="" rowspan="">Values</th><th colspan="" rowspan="">Default</th></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Last Change Made By'</td><td align="" colspan="" rowspan="">Bare JID of the user making the last change.</td><td align="" colspan="" rowspan="">jid-single</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">-</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Owner'</td><td align="" colspan="" rowspan="">Bare JIDs with Owner rights as defined in ACL node. When a channel is created, the JID creating the channel is configured as an owner, unless this attribute is explicitly configured to another value.</td><td align="" colspan="" rowspan="">jid-multi</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">-</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Administrator'</td><td align="" colspan="" rowspan="">Bare JIDs with Administrator rights.</td><td align="" colspan="" rowspan="">jid-multi</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">-</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'End of Life'</td><td align="" colspan="" rowspan="">The date and time at which the channel will be automatically removed by the server. If this is not set, the channel is permanent.</td><td align="" colspan="" rowspan="">text-single</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">-</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Nodes Present'</td><td align="" colspan="" rowspan="">Specifies which nodes are present. Presence of config nodes is implicit. Jidmap node MUST be present if participants node is present. 'avatar' means that both Avatar Data and Avatar Metadata nodes are present.</td><td align="" colspan="" rowspan="">list-multi</td><td align="" colspan="" rowspan="">'participants'; 'presence'; 'information'; 'allowed'; 'banned'; 'jidmap-visible'; 'avatar'</td><td align="" colspan="" rowspan="">'participants'; 'presence'; 'information'; 'allowed'; 'banned'; 'jidmap-visible'; 'avatar'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Messages Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to messages node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'anyone'</td><td align="" colspan="" rowspan="">'participants'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Presence Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to presence node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'anyone'</td><td align="" colspan="" rowspan="">'participants'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Participants Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to participants node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'anyone'; 'nobody'; 'admins'; 'owners'</td><td align="" colspan="" rowspan="">'participants'</td></tr>
|
||
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Information Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to the information node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'anyone'</td><td align="" colspan="" rowspan="">'participants'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Allowed Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to allowed node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'nobody'; 'admins'; 'owners' </td><td align="" colspan="" rowspan="">'admins'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Banned Node Subscription'</td><td align="" colspan="" rowspan="">Controls who can subscribe to banned node.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'nobody'; 'admins'; 'owners' </td><td align="" colspan="" rowspan="">'admins'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Configuration Node Access'</td><td align="" colspan="" rowspan="">Controls who can subscribe to configuration node and who has read access to it.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'allowed'; 'nobody'; 'admins'; 'owners' </td><td align="" colspan="" rowspan="">'owners'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Information Node Update Rights'</td><td align="" colspan="" rowspan="">Controls who can make changes to the information node</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'admins'; 'owners' </td><td align="" colspan="" rowspan="">'admins'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Avatar Nodes Update Rights'</td><td align="" colspan="" rowspan="">Controls who can make changes to the avatar data and metadata nodes</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'participants'; 'admins'; 'owners' </td><td align="" colspan="" rowspan="">'admins'</td></tr>
|
||
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Open Presence'</td><td align="" colspan="" rowspan="">If selected, any client MAY register presence. If not selected, only clients with bare JID in the participants list are allowed to register presence.</td><td align="" colspan="" rowspan="">boolean</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">false</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Participants Must Provide Presence'</td><td align="" colspan="" rowspan="">If selected, all channel participants are REQUIRED to share presence information with the channel.</td><td align="" colspan="" rowspan="">boolean</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">false</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'User Message Retraction'</td><td align="" colspan="" rowspan="">If this option is selected users will be able to retract messages that they have sent to the MIX channel.</td><td align="" colspan="" rowspan="">boolean</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">false</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Administrator Message Retraction Rights'</td><td align="" colspan="" rowspan="">This controls which group is able to retract any message sent to the MIX channel.</td><td align="" colspan="" rowspan="">list-single</td><td align="" colspan="" rowspan="">'nobody'; 'admins'; 'owners'</td><td align="" colspan="" rowspan="">'owners'</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Participation Addition by Invitation from Participant'</td><td align="" colspan="" rowspan="">This option extends a channel so that a channel participant has rights to invite and enable other users as participants.</td><td align="" colspan="" rowspan="">boolean</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">false</td></tr>
|
||
<tr class="body"><td align="" colspan="" rowspan="">'Private Messages'</td><td align="" colspan="" rowspan="">If this option is selected, private messages MAY be used with the channel.</td><td align="" colspan="" rowspan="">boolean</td><td align="" colspan="" rowspan="">-</td><td align="" colspan="" rowspan="">true</td></tr>
|
||
</table></div>
|
||
<p class="" style="">
|
||
The configuration node is in <span class="ref" style=""><a href="https://xmpp.org/extensions/xep-0004.html">Data Forms (XEP-0004)</a></span> [<a href="#nt-d0e550">2</a>] format and includes all of the options used by the channel, including values for options using default values. This means that the value in the form can be directly mapped with the form returned by configuration administration commands. Configuration nodes will typically have a large number of elements. The following short example is provided to illustrate the syntax of the configuration node.
|
||
</p>
|
||
<p class="caption"><a name="example-3"/>Example 3. Configuration Node</p><div class="indent"><pre class="prettyprint">
|
||
<items node='urn:xmpp:mix:nodes:config'>
|
||
<item id='2016-05-30T09:00:00'>
|
||
<x xmlns='jabber:x:data' type='result'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<field var='Owner'>
|
||
<value>hecate@shakespeare.example</value>
|
||
<value>greymalkin@shakespeare.example</value>
|
||
</field>
|
||
<field var='Messages Node Subscription'>
|
||
<value>allowed</value>
|
||
</field>
|
||
<field var='No Private Messages'>
|
||
<value>true</value>
|
||
</field>
|
||
</x>
|
||
</item>
|
||
</items>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
|
||
<h2>4.
|
||
<a name="usecases">Use Cases</a></h2>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="indent"><h3>4.1 <a name="usecases-admin">Administrative Use Cases</a></h3>
|
||
|
||
|
||
<div class="indent"><h3>4.1.1 <a name="usecase-admin-create">Creating a Channel</a></h3>
|
||
|
||
<p class="caption"><a name="example-4"/>Example 4. Creating a Channel with Client Specified Parameters</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='set'>
|
||
<create channel='coven' xmlns='urn:xmpp:mix:1'>
|
||
<x xmlns='jabber:x:data' type='submit'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<field var='Owner'>
|
||
<value>hecate@shakespeare.example</value>
|
||
<value>greymalkin@shakespeare.example</value>
|
||
</field>
|
||
<field var='Messages Node Subscription'>
|
||
<value>allowed</value>
|
||
</field>
|
||
<field var='JID Visibility'>
|
||
<value>jid-mandatory-visible</value>
|
||
</field>
|
||
<field var='No Private Messages'>
|
||
<value>true</value>
|
||
</field>
|
||
</x>
|
||
</create>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<create channel='coven' xmlns='urn:xmpp:mix:1'/>
|
||
</iq>
|
||
</pre></div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="indent"><h3>4.1.2 <a name="usecase-admin-information">Modifying Channel Information</a></h3>
|
||
<p class="" style="">Authorized users, typically owners and sometimes administrators, MAY modify the channel information. The client MAY issue a pubsub get command to obtain a form that will facilitate update of the information node. The values in the form show current values, which be defaults or MAY have been explicitly set. In the following example, the channel name was previously set, but other values were not. </p>
|
||
<p class="caption"><a name="example-5"/>Example 5. Getting Information Form</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='get'>
|
||
<pubsub xmlns='http://jabber.org/protocol/'>
|
||
<items node='urn:xmpp:mix:nodes:info'/>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/'>
|
||
<items node='urn:xmpp:mix:nodes:info'>
|
||
<item>
|
||
<x xmlns='jabber:x:data' type='form'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<title>Information Node Modification</title>
|
||
<field type='text-multi'
|
||
label='Channel Name'
|
||
var='Name'>
|
||
<value>Witches Coven</value>
|
||
</field>
|
||
<field type='text-multi'
|
||
label='Channel Description'
|
||
var='Description'/>
|
||
<field type='jid-single'
|
||
label='Channel Administrative Contact'
|
||
var='Contact'/>
|
||
</x>
|
||
</item>
|
||
</items>
|
||
</pubsub>
|
||
</iq>
|
||
</pre></div>
|
||
<p class="" style=""> Updating the information node is done using a pubsub set command. The MIX channel MUST update the fields with values provided, leaving other fields unchanged. The result returns the id used in the information node item, which is the date/time of the modification. </p>
|
||
<p class="caption"><a name="example-6"/>Example 6. Modifying Channel Information</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='set'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<publish node='urn:xmpp:mix:nodes:info'>
|
||
<items>
|
||
<item>
|
||
<x xmlns='jabber:x:data' type='submit'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<field var='Name'>
|
||
<value>Witches Coven</value>
|
||
</field>
|
||
<field var='Description'>
|
||
<value>A location not far from the blasted heath where
|
||
the three witches meet</value>
|
||
</field>
|
||
<field var='Contact'>
|
||
<value>greymalkin@shakespeare.example</value>
|
||
</field>
|
||
</x>
|
||
</item>
|
||
</items>
|
||
</publish>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<publish node='urn:xmpp:mix:nodes:info'>
|
||
<items>
|
||
<item id='2016-05-30T09:00:00' xmlns='urn:xmpp:mix:1'/>
|
||
</items>
|
||
</publish>
|
||
</pubsub>
|
||
</iq>
|
||
</pre></div>
|
||
</div>
|
||
<div class="indent"><h3>4.1.3 <a name="usecase-admin-information">Modifying Channel Configuration</a></h3>
|
||
<p class="" style="">Channel owners are allowed to modify the channel configuration. The client MAY issue a pubsub get command to obtain a form that will facilitate update of the configuration node. Other clients MAY be authorized to use this command to see the channel configuration, but only owners MAY update the configuration. The values in the form show current values, which MAY be defaults or MAY have been explicitly set. The following example shows a short form returned to illustrate the syntax. A typical configuration form will be much larger with many fields. Modifying channel configuration is done directly by a client. Note that an Owner MUST be specified. When the configuration node is modified, the server MUST set the 'Last Change Made By' attribute to the JID of the user making the change.
|
||
</p>
|
||
<p class="caption"><a name="example-7"/>Example 7. Getting Configuration Form</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='get'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<items node='urn:xmpp:mix:nodes:config'/>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<items xmlns='urn:xmpp:mix:1' node='urn:xmpp:mix:nodes:config'>
|
||
<item>
|
||
<x xmlns='jabber:x:data' type='form'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<title>Configuration Node Modification</title>
|
||
<field type='jid-multi'
|
||
label='Channel Administrator'
|
||
var='Administrator'/>
|
||
</x>
|
||
</item>
|
||
</items>
|
||
</pubsub>
|
||
</iq>
|
||
</pre></div>
|
||
<p class="" style=""> Updating the information node is done using a pubsub set command. The MIX channel MUST update the fields with values provided, leaving other fields unchanged. The result returns the id used in the configuration node item, which is the date/time of the modification. </p>
|
||
<p class="caption"><a name="example-8"/>Example 8. Modifying Channel Configuration</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='set'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<publish node='urn:xmpp:mix:nodes:config'>
|
||
<items>
|
||
<item>
|
||
<x xmlns='jabber:x:data' type='submit'>
|
||
<field var='FORM_TYPE' type='hidden'>
|
||
<value>urn:xmpp:mix:1</value>
|
||
</field>
|
||
<field var='Owner'>
|
||
<value>hecate@shakespeare.example</value>
|
||
<value>greymalkin@shakespeare.example</value>
|
||
</field>
|
||
<field var='Messages Node Subscription'>
|
||
<value>allowed</value>
|
||
</field>
|
||
<field var='JID Visibility'>
|
||
<value>jid-mandatory-visible</value>
|
||
</field>
|
||
<field var='No Private Messages'>
|
||
<value>true</value>
|
||
</field>
|
||
</x>
|
||
<item/>
|
||
<items/>
|
||
</publish>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<publish node='urn:xmpp:mix:nodes:config'>
|
||
<item id='2016-05-30T09:00:00' xmlns='urn:xmpp:mix:1'/>
|
||
</publish>
|
||
</pubsub>
|
||
</iq>
|
||
</pre></div>
|
||
</div>
|
||
<div class="indent"><h3>4.1.4 <a name="usecase-admin-participants">Controlling Channel Participants</a></h3>
|
||
<p class="" style="">
|
||
Owners and Administrators are allowed to control which users can participate in a channel by use of Allowed and Banned lists using PubSub. These operations follow <span class="ref" style=""><a href="https://xmpp.org/extensions/xep-0060.html">Publish-Subscribe (XEP-0060)</a></span> [<a href="#nt-d0e611">3</a>] which sets out detailed protocol use and error handling.
|
||
Allowed and Banned lists MAY be read by PubSub get of the Banned and Allowed Nodes. This operation MAY be used by users as controlled by 'Allowed Node Subscription' and 'Banned Node Subscription' configuration node options (default Administrators).
|
||
</p>
|
||
<p class="caption"><a name="example-9"/>Example 9. Client Reads Allowed Node</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='get'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<items node='urn:xmpp:mix:nodes:allowed'/>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<items node='urn:xmpp:mix:nodes:allowed'>
|
||
<item id='shakespeare.example'/>
|
||
<item id='alice@wonderland.example'/>
|
||
</items>
|
||
</pubsub>
|
||
</iq>
|
||
</pre></div>
|
||
<p class="" style="">
|
||
JIDs can be added to the Allowed and Banned nodes by a pubsub set command. This is used to add one item to a node.
|
||
</p>
|
||
<p class="caption"><a name="example-10"/>Example 10. Client Adds a JID to the Allowed Node</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='set'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<publish node='urn:xmpp:mix:nodes:allowed'>
|
||
<item id='marlow.example'/>
|
||
</publish>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'/>
|
||
</iq>
|
||
</pre></div>
|
||
<p class="" style="">
|
||
JIDs can be removed from the Allowed and Banned nodes by pubsub retract command.
|
||
</p>
|
||
<p class="caption"><a name="example-11"/>Example 11. Client Removes a JID from the Banned Node</p><div class="indent"><pre class="prettyprint">
|
||
<iq from='hag66@shakespeare.example/UUID-a1j/7533'
|
||
id='lx09df27'
|
||
to='mix.shakespeare.example'
|
||
type='set'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
|
||
<retract node='urn:xmpp:mix:nodes:banned'>
|
||
<item id='lear@shakespeare.example'/>
|
||
</retract>
|
||
</pubsub>
|
||
</iq>
|
||
|
||
<iq from='mix.shakespeare.example'
|
||
id='lx09df27'
|
||
to='hag66@shakespeare.example/UUID-a1j/7533'
|
||
type='result'>
|
||
<pubsub xmlns='http://jabber.org/protocol/pubsub'/>
|
||
</iq>
|
||
</pre></div>
|
||
<p class="" style="">
|
||
When the MIX channel adds a JID to the banned node, other nodes in the MIX channel will be appropriately updated to reflect this change. In particular, the participants nodes and presence nodes will be updated to remove matching JIDs. This will have the effect of immediately removing the user from the channel. For this reason, there is no requirement to have the "kick" functionality of MUC, as this is achieved by banning the user.
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<h2>5.
|
||
<a name="i18n">Internationalization Considerations</a></h2>
|
||
<p class="" style="">See considerations in MIX-CORE.
|
||
</p>
|
||
|
||
<h2>6.
|
||
<a name="security">Security Considerations</a></h2>
|
||
<p class="" style="">See considerations in MIX-CORE.</p>
|
||
|
||
|
||
|
||
<h2>7.
|
||
<a name="iana">IANA Considerations</a></h2>
|
||
<p class="" style="">None.</p>
|
||
<h2>8.
|
||
<a name="registrar">XMPP Registrar Considerations</a></h2>
|
||
<p class="" style="">The urn:xmpp:mix namespace needs to be registered.</p>
|
||
<h2>9.
|
||
<a name="schema">XML Schema</a></h2>
|
||
<p class="" style="">To be supplied when MIX progresses to proposed standard.</p>
|
||
<h2>10.
|
||
<a name="ack">Acknowledgements</a></h2>
|
||
<p class="" style="">See MIX-CORE for a list of contributors to the MIX Family of specifications.</p>
|
||
<hr/><a name="appendices"/><h2>Appendices</h2><hr/><a name="appendix-docinfo"/><h3>Appendix A: Document Information</h3><p class="indent">
|
||
Series: <a href="http://xmpp.org/extensions/">XEP</a><br/>
|
||
Number: 0406<br/>
|
||
Publisher: <a href="/xsf/">XMPP Standards Foundation</a><br/>
|
||
Status:
|
||
<a href="http://xmpp.org/extensions/xep-0001.html#states-Experimental">Experimental</a><br/>
|
||
Type:
|
||
<a href="http://xmpp.org/extensions/xep-0001.html#types-Standards Track">Standards Track</a><br/>
|
||
Version: 0.1.0<br/>
|
||
Last Updated: 2018-05-14<br/>
|
||
Approving Body: <a href="http://xmpp.org/council/">XMPP Council</a><br/>Dependencies: XMPP Core, XMPP IM, XEP-0004, XEP-0030, XEP-0054, XEP-0060, XEP-0084, XEP-0128, XEP-0198, XEP-0292, XEP-0297, XEP-0313, XEP-0372<br/>
|
||
Supersedes: None<br/>
|
||
Superseded By: None<br/>
|
||
Short Name: MIX-ADMIN<br/>
|
||
Source Control:
|
||
<a class="standardsButton" href="https://github.com/xsf/xeps/blob/master/xep-0406.xml">HTML</a><br/>
|
||
This document in other formats:
|
||
<a class="standardsButton" href="http://xmpp.org/extensions/xep-0406.xml">XML</a>
|
||
<a class="standardsButton" href="http://xmpp.org/extensions/xep-0406.pdf">PDF</a></p><hr/><a name="appendix-authorinfo"/><h3>Appendix B: Author Information</h3><div class="indent"><h3>Kevin Smith</h3><p class="indent">
|
||
Email:
|
||
<a href="mailto:kevin.smith@isode.com">kevin.smith@isode.com</a><br/>
|
||
JabberID:
|
||
<a href="xmpp:kevin.smith@isode.com">kevin.smith@isode.com</a><br/></p><h3>Steve Kille</h3><p class="indent">
|
||
Email:
|
||
<a href="mailto:steve.kille@isode.com">steve.kille@isode.com</a><br/>
|
||
JabberID:
|
||
<a href="xmpp:steve.kille@isode.com">steve.kille@isode.com</a><br/></p></div><hr/><a name="appendix-legal"/><h3>Appendix C: Legal Notices</h3><div class="indent"><h4>Copyright</h4>This XMPP Extension Protocol is copyright © 1999 – 2018 by the <a href="https://xmpp.org/">XMPP Standards Foundation</a> (XSF).<h4>Permissions</h4>Permission is hereby granted, free of charge, to any person obtaining a copy of this specification (the "Specification"), to make use of the Specification without restriction, including without limitation the rights to implement the Specification in a software program, deploy the Specification in a network service, and copy, modify, merge, publish, translate, distribute, sublicense, or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the condition that the foregoing copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification. Unless separate permission is granted, modified works that are redistributed shall not contain misleading information regarding the authors, title, number, or publisher of the Specification, and shall not claim endorsement of the modified works by the authors, any organization or project to which the authors belong, or the XMPP Standards Foundation.<h4>Disclaimer of Warranty</h4><span style="font-weight: bold">## NOTE WELL: This Specification is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. ##</span><h4>Limitation of Liability</h4>In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the XMPP Standards Foundation or any author of this Specification be liable for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the XMPP Standards Foundation or such author has been advised of the possibility of such damages.<h4>IPR Conformance</h4>This XMPP Extension Protocol has been contributed in full conformance with the XSF's Intellectual Property Rights Policy (a copy of which can be found at <<a href="https://xmpp.org/about/xsf/ipr-policy">https://xmpp.org/about/xsf/ipr-policy</a>> or obtained by writing to XMPP Standards Foundation, P.O. Box 787, Parker, CO 80134 USA).</div><hr/><a name="appendix-xmpp"/><h3>Appendix D: Relation to XMPP</h3><p class="indent">The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 6120) and XMPP IM (RFC 6121) specifications contributed by the XMPP Standards Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this document has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.</p><hr/><a name="appendix-discuss"/><h3>Appendix E: Discussion Venue</h3><p class="indent">The primary venue for discussion of XMPP Extension Protocols is the <<a href="http://mail.jabber.org/mailman/listinfo/standards">standards@xmpp.org</a>> discussion list.</p><p class="indent">Discussion on other xmpp.org discussion lists might also be appropriate; see <<a href="http://xmpp.org/about/discuss.shtml">http://xmpp.org/about/discuss.shtml</a>> for a complete list.</p><p class="indent">Errata can be sent to <<a href="mailto:editor@xmpp.org">editor@xmpp.org</a>>.</p><hr/><a name="appendix-conformance"/><h3>Appendix F: Requirements Conformance</h3><p class="indent">The following requirements keywords as used in this document are to be interpreted as described in <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".</p><hr/><a name="appendix-notes"/><h3>Appendix G: Notes</h3><div class="indent"><p><a name="nt-d0e156">1</a>. XEP-0369: Mediated Information eXchange (MIX) <<a href="https://xmpp.org/extensions/xep-0369.html">https://xmpp.org/extensions/xep-0369.html</a>>.</p><p><a name="nt-d0e550">2</a>. XEP-0004: Data Forms <<a href="https://xmpp.org/extensions/xep-0004.html">https://xmpp.org/extensions/xep-0004.html</a>>.</p><p><a name="nt-d0e611">3</a>. XEP-0060: Publish-Subscribe <<a href="https://xmpp.org/extensions/xep-0060.html">https://xmpp.org/extensions/xep-0060.html</a>>.</p></div><hr/><a name="appendix-revs"/><h3>Appendix H: Revision History</h3><p>Note: Older versions of this specification might be available at <a href="http://xmpp.org/extensions/attic/">http://xmpp.org/extensions/attic/</a></p><div class="indent"><h4>Version 0.1.0 (2018-05-14)</h4><div class="indent"><p class="" style="">
|
||
Split out from MIX 0.10.0;
|
||
</p> (sek)
|
||
</div></div><hr/><p>END</p></body></html> |