Welcome to the Multi-User Conferencing component for Jabber.
------------------------------------------------------------

Introduction:
---

This is based on the existing conference component, now designed
to support JEP-0045 (http://www.jabber.org/jeps/jep-0045.html)

The currently existing components are conference v0.4 and conference-v2.
These both implement the GroupChat protocol (gc-1.0) and a test
conferencing protocol which never really was adopted. The aim of the JEP
and this project was to take the gc-1.0 protocol and extend it to become
a more flexible and featureful conferencing system, superceeding the
implementations that came before.

Thanks to Peter Saint-Andre for getting this cleanup done.
Thanks to Alexey Shchepin for the support in tkabber during development
Thanks to Paul Curtis for debug help and running the alpha copy for testing
Thanks to Peter Millard for help debugging whilst adding support in Exodus

Requirements:
---
* You will need a copy of libglib-2 installed, along with the development package (for packaged based solutions, such as Debian, Mandrake and RedHat)

* You will either need access to the jabberd v1.4.x source code (preferably the same source that the server was compiled with) or a copy of JCR. See the README.jcr file for more details.

New Features:
---
Note: This is not an exhaustive list. For a complete overview of the feature
      set, check out the JEP link given in the introduction

* Backward compatibility with gc-1.0
* User 'levels' (known as roles and affiliations)
* Native Room logging
* Dynamic room configuration
* Moderated rooms
* Password protected rooms
* Non-anonymous rooms
* Member-only rooms
* Room bans
* "Kick" user
* Persistant reconfigurable rooms

Comments:
---

Unlike the original conference component, rooms can now be dynamically set public or private.

* A Public room is a room which can be found by anyone browsing the conference component.

* A Private room is a room which can only be browsed for by a user already in the room. 

Installation:
---

* If compiling against the jabberd 1.4 source code:

Unpack it into your 1.4 server source folder, and type 'make' to build the mu-conference.so.

* See README.jcr for instructions regarding installing with the Jabber Component Runtime

Configuration:
---

Add this section to the browse area of the jsm service to advertise it to your users:

[Note: if you want this service to be accessible from other servers,
       change any 'conference.localhost' listed below to a fully
       qualified domain name!]

-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
<item category="conference" type="public" jid="conference.localhost" name="Public Conferencing" version="0.6.0">
  <ns>http://jabber.org/protocol/muc</ns>
</item>
-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----

If you wish to have mu-conference running in a seperate jabberd process (advised)

  * Add the following section into the 'Service' section of the jabber.xml file:

  ---8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
  <service id="muclinker">
    <host>conference.localhost</host>
    <accept>
      <ip>127.0.0.1</ip>
      <port>31518</port>
      <secret>secret</secret>
    </accept>
  </service>
  ---8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----

  * Change the port and secret to your own preferences.
  * Copy the muc.xml file to the same directory as your jabber.xml file
  * Edit muc.xml, and ensure that the settings are the same as you defined in the jabber.xml file

If you wish to have mu-conference loaded into the main jabberd process:

  * Add the following section into the 'Service' section of the jabber.xml file:

  ---8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----
  <service id='conference.localhost'>
    <load>
      <conference>./mu-conference-0.6.0/src/mu-conference.so</conference>
    </load>
    <conference xmlns="jabber:config:conference">
      <public/>		
      <vCard>
        <FN>Public Chatrooms</FN>
        <DESC>This service is for public chatrooms.</DESC>
        <URL>http://foo.bar/</URL>
      </vCard>
      <history>20</history>
      <logdir>./logs/</logdir>
      <sadmin>
         <user>admin@localhost</user>
      </sadmin>
      <notice>
        <join>has become available</join>
        <leave>has left</leave>
        <rename>is now known as</rename>
      </notice>
    </conference>
  </service>
  ---8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----8<-----

Settings:
---

  Note: These will be stored either in the muc.xml file, or the jabber.xml
  file, depending on whether you are running MU-Conference in a seperate 
  jabberd process or the main jabberd process

Global Settings:

* The <public/> tag makes all rooms default to Public when first created.
  Simply remove this tag for rooms to default to Private

* The <history> tag specifies the maximum number of lines to be held as a room
  history.

* The <logdir> tag specifies the direction in which log files will be stored. 
  The directory must exist, and will default to the current working directory.

* The <defaults/> tag makes a room have defaults set up automatically, so the
  the room creator doesn't have to submit the configuration form to unlock 
  the room.

* The <roomlock/> tag stops users from creating any new rooms. Only persistent
  rooms will be created on startup. Note: the service admin (sadmin) is 
  unaffected by this directive. This flag overrides the <defaults/> flag, if
  set.

* The <dynamic/> tag specifies that no persistent rooms can be created. Rooms
  will exist only as long as there is at least one user in the room. Once a 
  room is empty, the room will be destroyed after approximately 5 minutes.

* The <persistent/> tag specifies that persistent rooms will be created 
  rather than dynamic ones. This flag will override the <dynamic/> flag, if 
  set.

* The <sadmin> tag specifies users who are considered an owner of all rooms. 
  You can specify multiple <user> tags. Each <user> tag must contain the bare
  jid of the user.

Notice Settings:

* The <join> tag specifies the message shown when someone enters a room
* The <leave> tag specifies the message shown when someone leaves a room
* The <rename> tag specifies the message shown when someone changes their nick

Note: All persistant rooms are now stored when created. This replaces the old system
of configuring persistant rooms in the jabber.xml file

Starting:
---

This will depend on how you have installed MU-Conference.

* For installs where MU-Conference is running in a seperate jabberd process:

    o Start the main jabberd as normal
    o Start an additional jabberd process, with the command:
       ./jabberd/jabberd -c muc.xml &
      (Fixing paths as necessary. Use the main jabberd command as a reference)

* For installs where MU-Conference is running in the main jabberd process:

    o Start the main jabberd as normal

---

David Sutton
jid: peregrine@legend.net.uk
