Merge Configuration and ACL nodes as separation is awkward

Add information node
Add Avatar to information node
This commit is contained in:
Steve Kille 2016-09-19 11:42:58 +01:00
parent 6009d8af9f
commit 74dde17408
1 changed files with 55 additions and 37 deletions

View File

@ -260,21 +260,21 @@
<p>The standard nodes are as follows (although note that not every channel will necessarily use each node):</p>
<table caption="Standard Nodes">
<tr><th>Node</th><th>Description</th></tr>
<tr><th>Name</th><th>Node</th><th>Description</th></tr>
<tr><td>'urn:xmpp:mix:nodes:messages'</td><td>For publishing messages. Each item of this node will contain a message sent to the channel.</td></tr>
<tr><td>Messages</td><td>'urn:xmpp:mix:nodes:messages'</td><td>For publishing messages. Each item of this node will contain a message sent to the channel.</td></tr>
<tr><td>'urn:xmpp:mix:nodes:subject'</td><td>For publishing the subject of the channels</td></tr>
<tr><td>Subject</td><td>'urn:xmpp:mix:nodes:subject'</td><td>For publishing the subject of the channels</td></tr>
<tr><td>'urn:xmpp:mix:nodes:participants'</td><td>For publishing the list of participants (identified by anonymized bare proxy JID), and identifying the nick. This is a list of users who would receive messages (by subscription to the messages node) and/or would receive presence (by subscription to the presence node).</td></tr>
<tr><td>Participants</td><td>'urn:xmpp:mix:nodes:participants'</td><td>For publishing the list of participants (identified by anonymized bare proxy JID), and identifying the nick. This is a list of users who would receive messages (by subscription to the messages node) and/or would receive presence (by subscription to the presence node).</td></tr>
<tr><td>'urn:xmpp:mix:nodes:jidmap'</td><td>For publishing a list of anonymized bare JIDs from the participants node with a 1:1 mapping to the corresponding real JIDs.</td></tr>
<tr><td>JID Map</td><td>'urn:xmpp:mix:nodes:jidmap'</td><td>For publishing a list of anonymized bare JIDs from the participants node with a 1:1 mapping to the corresponding real JIDs.</td></tr>
<tr><td>'urn:xmpp:mix:nodes:presence'</td><td>For publishing information about the availability status of online participants, which may include multiple clients for a single participant.</td></tr>
<tr><td>Presence</td><td>'urn:xmpp:mix:nodes:presence'</td><td>For publishing information about the availability status of online participants, which may include multiple clients for a single participant.</td></tr>
<tr><td>'urn:xmpp:mix:nodes:config'</td><td>For storing configuration information.</td></tr>
<tr><td>Configuration</td><td>'urn:xmpp:mix:nodes:config'</td><td>For storing channel configuration. This information will generally be restricted to authorized users.</td></tr>
<tr><td>'urn:xmpp:mix:nodes:acl'</td><td>For storing information about access control lists (such as the list of owners and administrators). This information will generally be restricted to authorized users.</td></tr>
<tr><td>Information</td><td>'urn:xmpp:mix:nodes:info'</td><td>For storing general channel information, such as description and avatar. </td></tr>
</table>
@ -346,39 +346,58 @@
</items>
]]></example>
</section3>
<section3 topic="Configuration Node" anchor="config-node">
<section3 topic="Information Node" anchor="info-node">
<p>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. A single item is stored in the node at a time, with previous configuration history accessed by MAM. Users subscribed to the configuration node will enable notification of configuration change. 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. 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 options are provided:</p>
<p>The Information node holds information about the channel. The information node is named by the name of the node, which must be present. Other elements of the information node are optional. Information history is stored in MAM. The name and description values MUST contain a "text" element and MAY contain additional text elements. Where multiple text elements are provided, each MUST posses an xml:lang attribute that describes the natural language of the subject. Users MAY subscribe to this node to receive information updates. The Information node has the following attributes:
</p>
<ul>
<li>'Date of Configuration Change'. Encoded as the item ID.</li>
<li>'Last Change Made By'. Bare JID of the user making the last change.</li>
<li>'Name'. The name of the channel</li>
<li> 'Members'. List of JIDs with member rights. The rights of members are configured in the ACL node. </li>
<li>'Outcast'. List of JIDs banned from subscribing to any nodes in the MIX channel. </li>
<li>'Name'. A short string providing a name for the channel</li>
<li>'Description'. A longer description of the channel.</li>
<li>'Administrator'. The person or role responsible for the channel, using vCard format following &xep0054;.</li>
<li>'Avatar'. An Avatar associated with the channel. This MAY be used in rosters that hold information on the channel and MAY be displayed by clients using the channel. The avatar is stored using the format defined in &xep0084;</li>
</ul>
<p>TEMPORARY NOTE AND QUESTION: This is currently work in progress. Suggestions for other items to be included in configuration are welcome.</p>
<p>The format of the Configuration node follows &xep0004;. This allows configuration to be updated by MIX defined commands and that the results of update commands can be directly written to the PubSub node. Updates to the Configuration may use these commands or direct writing to the PubSub node.</p>
<example caption="Configuration Node"><![CDATA[
<items node='urn:xmpp:mix:nodes:config'>
<item id='2016-05-30T09:00:00'
name='A Dark Cave'>
*** TBS ****
<p>The format of the Information node follows &xep0004;. This allows configuration to be updated by MIX defined commands and that the results of update commands can be directly written to the PubSub node.
The following example shows the format of a item in the information node for the example coven@mix.shakespeare.example channel.
</p>
<example caption="Information Node"><![CDATA[
<items node='urn:xmpp:mix:nodes:info'>
<item id='2016-05-30T09:00:00' xmlns='urn:xmpp:mix:0'>
<name>Witches Coven</name>
<description>A location not far from the blasted heath where the three witches meet</description>
<administrator>
<vCard xmlns='vcard-temp'>
<FN>Hecate</FN>
<TITLE>Chief Witch</TITLE>
</vCard>
</administrator>
<avatar>
<data xmlns='urn:xmpp:avatar:data'>
qANQR1DBwU4DX7jmYZnncm...
</data>
</avatar>
</item>
</items>
]]></example>
</section3>
<section3 topic="ACL Node" anchor="acl-node">
<p>The ACL node is closely related to the configuration node, and contains more information that will generally be more restricted as to who can access and modify. An anticipated configuration reflected in the defaults has ACL node configured so that it can be modified by channel owners and read only by channel owners and administrators. The default for the configuration node is update by owners or administrators and visibility to list members. Split of functionality has been made on the basis of this model. </p>
<p>TEMPORARY NOTE AND QUESTION: The split of configuration/acl is arbitrary. It would be possible to merge them, or to split into more nodes, giving finer control granularity. Input is solicited on the split an detailed assignment of items to nodes.</p>
<p>The ACL node holds access control related configuration of the channel as a single item, named by the date-time of the last update to the ACL. History MUST be set to 1. Previous ACL history is accessed by MAM. Users may subscribe to the ACL node if allowed using bare JID. The ACL node is optional for a MIX channel. For example, ACL choices could be fixed and not exposed. A subset of the defined ACL options may be used and additional non-standard ACL options may be added. If configuration options to control functionality of the nature described here are provided, the options defined in this standard MUST be used. The following ACL options are provided:</p>
<section3 topic="Configuration Node" anchor="config-node">
<p>
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. A single item is stored in the node at a time, with previous configuration history accessed by MAM. Users MAY subscribe to the configuration node to get notification of configuration change. 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. 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 options are provided:
</p>
<ul>
<li>'Date of Configuration Change'. Encoded as the item ID.</li>
<li>'Last Change Made By'. Bare JID of the user making the last change.</li>
<li>'Owners'. List of bare JIDs with Owner rights as defined in ACL node. When a list is created, the JID creating the list is configured as an owner, unless this attribute is explicitly configured to another value. Owners will generally have full rights to make changes to channel configuration and access control.</li>
<li>'Administrators'. List of bare JIDs with Administrator rights. An Administrator has rights to make changes to channel access control and configuration as defined in ACL node. An Administrator also has operational right on a channel, such a kicking users out of the channel. These rights are analogous to moderator rights defined in <cite>Multi-User Chat</cite>.</li>
<li>'Administrators'. List of bare JIDs with Administrator rights. An Administrator has rights to make changes to channel access control and configuration as defined in ACL node. An Administrator also has operational right on a channel, such a kicking users out of the channel. These rights are analogous to moderator rights defined in &xep0045;.</li>
<li> 'Members'. List of JIDs with member rights. The rights of members are configured in the configuration node. </li>
<li>'Outcast'. List of JIDs banned from subscribing to any nodes in the MIX channel. </li>
<li>'End of Life'. The date and time at which the channel will be automatically removed by the server. If this is not set, the channel is permanent.</li>
<li>'Nodes Present'. Specifies which nodes are present: "participants"; "presence"; "subject"; "acl". Note that "config" is implicit, and "jidmap" is implied by "participants". </li>
<li>'Message Node Subscription'. Controls who can subscribe to messages node: "members-only"; "participants-only"; "anyone". Users with banned affiliation may not subscribe. Default "participants-only".</li>
@ -387,10 +406,9 @@
<li>'Presence Node Subscription'. Controls who can subscribe to presence node: "members-only"; "participants-only"; "anyone"; "nobody". Users with banned affiliation may not subscribe. Default "participants-only".</li>
<li>'Subject Node Subscription'. Controls who can subscribe to subject node: "members-only"; "participants-only"; "anyone"; "nobody". Users with banned affiliation may not subscribe. Default "participants-only".</li>
<li>'Configuration Node Access'. Controls who can subscribe to and has read access configuration node: "members-only"; "participants-only"; "admins-and-owners"; "owners-only"; "anyone"; "nobody". Default "admins-and-owners".</li>
<li>'ACL Node Access'. Controls who can subscribe to and has read access acl node: "members-only"; "admins-and-owners"; "owners-only"; "anyone"; "nobody". Default "admins-and-owners".</li>
<li>'Information Node Access'. Controls who can subscribe to and has read access acl node: "members-only"; "participants-only"; "admins-and-owners"; "owners-only"; "anyone"; "nobody". Default "participants-only".</li>
<li>'Configuration Node Update'. Controls who can modify configuration node: "owners-only"; "admins-and-owners". Default "admins-and-owners".</li>
<li>'ACL Node Update'. Controls who can modify acl node: "owners-only"; "admins-and-owners". Default "owners-only".</li>
<li>'JID Visibility'. Choice of "jid-hidden", "jid-optionally-visible", "jid-mandatory-visible". </li>
<li>'Open Presence'. If selected, any client may register presence. If not selected, only clients with bare JID in the participants list may register presence.</li>
<li>'Allow Message Retraction'. If this option is selected users will be able to retract messages sent to the MIX channel.</li>
@ -399,10 +417,10 @@
<li>'No Private Messages'. If this option is selected, private messages may not be used with the channel.</li>
</ul>
<p>TEMPORARY NOTE: This is currently work in progress. Suggestions for other items to be included in ACL are welcome.</p>
<p>AUTHOR'S NOTE AND QUESTION: Detailed review of this section is solicited, and requirements for any additional configuration control.</p>
<p>The format of the ACL node follows &xep0004;. </p>
<example caption="ACL Node"><![CDATA[
<items node='urn:xmpp:mix:nodes:acl'>
<example caption="Configuration Node"><![CDATA[
<items node='urn:xmpp:mix:nodes:config'>
<item id='2016-05-30T09:00:00'>
*** TBS ****
</item>
@ -1034,7 +1052,7 @@
</p>
<p>
AUTHOR'S NOTE: Allow configuration by direct writes to 'urn:xmpp:mix:nodes:config' and ACL node. Also specify MIX XEP-0004 commands to achieve this.
AUTHOR'S NOTE: Allow configuration by direct writes to 'urn:xmpp:mix:nodes:config' . Also specify MIX XEP-0004 commands to achieve this.
</p>