8.2 Instalación y Configuración de mu-conference



8.2.1 Extensión JEP-0045

A modo de introducción a la implementación de el componente MU-Conference presentamos la extensión LEP-0045. En la misma se discuten aspectos relacionados a la configuración, participación y administración de salas de conferencia basadas en texto. Los requerimientos planteados fueron bien tratados dentro de la comunidad Jabber o familiares en ambientes del estilo como en el Internet Relay Chat (IRC).



8.2.1.1 Requerimientos

En el momento de plantear esta extensión se utilizo como punto de partida las funcionalidades ofrecidas por los servicios de multiconferencia para Jabber existentes al momento los cuales utilizaban el protocolo original “groupchat 1.0”. Esos requerimientos fueron extendidos hasta alcanzar la siguiente lista:

Requerimiento

Tipo

Los mensajes dentro de las salas de chat son del tipo especial “groupchat”

B

Cada sala esta identificada como sala@servicio donde “sala” es el nombre de la misma y “servicio” es el nombre del servidor en el cual esta corriendo el servicio de multiconferencia.

B

Cada ocupante de la sala es identificado por sala@servicio/apodo. Apodo (nick en inglés) es especificado por el usuario al entrar a la sala y puede cambiarlo en el transcurso de la “visita” a la misma

B

El usuario entra a una sala (convirtiéndose en ocupante de la misma) enviando “presence” a la misma.

B

El usuario sale de una sala enviando “unaviable” a la misma

B

El usuario puede cambiar su nick o estado de disponibilidad dentro de la sala enviado “update”

B

Logeo nativo de las conversaciones

E

Habilitar que el usuario solicite membresía a la sala

E

Habilitar a los ocupantes para que puedan ver la JID completa de otro ocupante en salas no anónimas.

E

Habilitar a los moderadores ver el JID completo de un ocupante de forma semi anónima

E

Permitir que solo los moderadores cambien el tema de la sala

E

Habilitar a los moderadores a expulsar temporalmente a participantes y visitantes de las salas

E

Habilitar a los moderadores a otorgar y revocar el derecho a voz (es decir a hablar) en las salas moderadas y manejar la “lista de voces”

E

Habilitar a los administradores otorgar y revocar permisos de moderador y manejar la lista de moderadores

E

Habilitar a los administradores a expulsar definitivamente a usuarios de una sala y manejar la lista de expulsados definitivos

E

Habilitar a los administradores a otorgar y revocar privilegios de membresía y manejar la lista de miembros en las salas exclusivas

E

Habilitar a los dueños de la sala limitar el número de ocupantes

E

Habilitar a los dueños especificar otros dueños

E

Habilitar a los dueños otorgar y revocar privilegios de administración y manejar las lista de administradores

E

Habilitar a los dueños de las salas destruirlas

E

Las salas podrán ser publicas o escondidas

E

Persistentes o temporales

E

Protegidas por clave o inseguras

E

Abiertas o solo para miembros

E

Moderadas o no

E

No anónimas o semi anónimas

E

B significa funcionalidad Básica y E propuesta como extensión por la JEP-0045

Por otro lado se establecieron dos dimensiones mutuamente ortogonales que permiten determinar la calidad de un usuario, la cual dura el tiempo de visita a la sala por parte del usuario. No hay mapeo uno a uno entre estas afiliaciones y los roles de los ocupantes de una sala. Las afiliaciones son otorgadas, revocadas y mantenidas en base al JID común de cada usuario. Ellas son:

Si un usuario entra a una sala sin una afiliación definida estos se le define como “none” pero esta afiliación no persiste durante la visita.

Dueños (Owners) y administradores (admins) son inmunes por definición a ciertas acciones. Específicamente no pueden ser expulsados temporal (kicked) o definitivamente (banned) de las salas. Un administrador debe perder su afiliación como tal antes de ser sujeto a tales acciones.

Las afiliaciones permiten a los administradores mantener “whitelists” en salas con membresía y a los usuario en salas abiertas un registro efectivo en las mismas.

Información sobre la afiliación debe ser enviada en todas las stanzas de presencia generadas por la sala y enviadas a los ocupantes de la misma

Privilegios asociados a los Roles

Privilegio

Ninguno1

Visitante

Participante

Moderador

Presencia en la sala

No

Si

Si

Si

Recibir mensajes

No

Si

Si

Si

Cambiar el estado de disponibilidad

No

Si

Si

Si

Cambiar el Nick de la Sala

No

Si*

Si

Si

Envío de mensajes privados

No

Si*

Si

Si

Invitar a otros usuarios

No

Si*

Si*

Si*

Enviar mensajes a todos

No

No**

Si

Si

Modificar el tema de la sala

No

No

Si*

Si

Expulsar visitantes y participantes

No

No

No

Si

Otorgar derecho de voz

No

No

No

Si

Revocar derecho de voz

No

No

No

Si***

* Por defecto; los seteos de configuración podrían restringir más aún estos privilegios

** Una implementación puede otorgar derecho de voz por defecto a los visitantes en salas no moderadas

*** Un moderador NO DEBE ser capaz de revocar el derecho a voz de un administrador o de un dueño de sala.


Privilegios asociados a la afiliación

Privilegio

Descastado

Ninguno

Miembro

Administrador

Dueño

Entrar a salas abiertas

No

Si**

Si

Si

Si

Registrarse en salas abiertas

No

Si

N/A

N/A

N/A

Entrar a salas exclusivas

No

No

Si*

Si

Si

Expulsar (ban) miembros y usuarios no afiliados

No

No

No

Si

Si

Editar la lista de miembros

No

No

No

Si

Si

Editar la lista de moderadores

No

No

No

Si**

Si**

Editar la lista de administradores

No

No

No

No

Si

Editar la lista de dueños

No

No

No

No

Si

Cambiar las definiciones de la sala

No

No

No

No

Si

Destruir la sala

No

No

No

No

Si

* Por defecto, usuarios no afiliados entran en salas moderadas como visitantes, y a salas abiertas como participantes. Un miembro entra a salas como participante. Administradores y dueños como moderadores.

** Un administrador o un dueño NO DEBE ser capaz de revocar privilegios de moderación de otro administrador o dueño.



8.2.1.2 Consideraciones adicionales

En cualquiera de estos casos se notificará adecuadamente del motivo de la negación.

Como se puede apreciar, esta extensión posee funcionalidades y mecanismos que permiten uso más que adecuado de un servicio de estas características. Si el lector desea profundizar en el tema, sobre todo en el modo que se implementan los distintos casos de usuario con las stanzas, deberá referirse al texto de la JEP-0045



8.2.1.3 Glosario de términos usados en Multiconferencia



8.2.2 Instalación y configuración del componente

Este componente se puede descargar de http://jabberstudio.org/projects/mu-conference/releases/ y al momento de realizar la instalación la última versión estable era la 0.6.0.

Como único requisito requiere el JCR (Jabberd Component Runtime library), la cual se puede obtener desde http://jabber.terrapin.com/JCR/ la versión disponible al momento de realizar la instalación era la 0.2.4.

Lo que sigue es una breve secuencia de pasos a seguir para compilar e instalar el componente mu-conference.

tar -zxvf jcr-0.2.4.tar.gz

cd jcr-0.2.4

make


Luego copiamos el mu-conferece.0.6.0.tar.gz dentro del directorio actual y lo descomprimimos

tar -zxvf mu-conference-0.6.0.tar.gz


Copiamos los siguientes archivos dentro del directorio con los fuentes de mu-conference

cp src/main.c mu-conference-0.6.0/src

cp src/jcomp.mk mu-conference-0.6.0/src


Cambiamos de directorio y compilamos

cd mu-conference-0.6.0/src

make -f jcomp.mk


Esto generará el ejecutable de mu-conference el cual habrá que copiar al directorio donde se encuentran el resto de los componentes del servidor jabber (/usr/local/bin).

Luego deberemos copiar el archivo de configuración muc-jcr.xml provisto en la distribución de mu-conference al directorio donde se encuentran los archivos de configuración de jabberd /etc/jabberd.

Incluimos en Apéndices archivo de configuración muc-jcr.xml

Modificaciones en los demás archivos de configuración de jabber



8.2.2.1 Archivo router-users.xml.

<user>

<!-- corresponde al valor de tag <name> en la sección <jcr> de

muc-jcr.xml -->

<name>mu-conference</name>

<!-- corresponde al valor del tag <secret> de la sección <jcr> de

muc-jcr.xml y al tag <secret> de la seccion <router>

subsección <local> de de router.xml -->

<secret>secret</secret>

</user>


8.2.2.2 Archivo router.xml.

Agregar la siguiente línea en la seccion <aliases>.

<alias name='conference.tortuga.fing.edu.uy' target='mu-conference'/>

donde name se corresponde con el valor del tag <host> de la sección <jcr> y target con el valor de <name> en la misma sección.



8.2.2.3 Archivo sm.xml.

Agregar las siguientes líneas en la seccion <agents>

<agent jid='conference.fing.edu.uy'>

<name>Public Conferencing</name>

<description>Public chatrooms for users.</description>

<service>public</service>

<groupchat/>

</agent>


Una vez, configurado el servicio y con el servidor jabberd levantado lo iniciamos con el comando

/usr/local/bin/mu-conference -c /etc/jabberd/muc-jcr.xml &



8.2.3 Creación de salas persistentes

Las salas de conferencia en Jabber pueden ser persistentes o no. Por defecto son no persistentes y pueden ser creadas por los distintos usuarios los cuales, una vez creada la sala, podrán invitar a sus “amigos” a participar en ella.

Las salas permanentes son creadas una sola vez y permanecen abiertas hasta que se las de baja. La distribución de mu-conference facilita un script perl para su creación. El mismo tiene los siguientes módulos como dependencias.

XML::Simple

Digest::MD5


El proceso general de instalación de módulos perl desde los fuentes y el enlace al sitio donde poder descargarlos se encuentra en el Apéndice B

Este script es de muy fácil manejo, simplemente hay que seguir las instrucciones. Incluimos los pasos seguidos por uno de los integrantes durante una prueba realizada con este script.

[root@tortuga rooms]# ./roommaker.pl

Please enter spool directory path (e.g. /usr/local/jabber/spool): /usr/local/var/jabberd/spool

Please enter jid for the room: chat1@tortuga.fing.edu.uy

/usr/local/var/jabberd/spool/tortuga.fing.edu.uy/ doesn't exist - Create? (Y/N) Y

Creating Directory


Configuring room chat1@ tortuga.fing.edu.uy

Filename: /usr/local/var/jabberd/spool/tortuga.fing.edu.uy/2402f2f44290e8505ddac91e3a0aad89e6ed079a.xml


General Options

---

Room name (text) [Default: chat1]: Chat1

Password (text) [Default: ]: pwdchat1

Room description/MOTD (text) [Default: ]: Sala 1 de prueba - creado por mario

Room subject (text) [Default: ]: proyecto GNU/Linux

Bare JID of room creator (text)[Default: ]: mario@tortuga.fing.edu.uy

Is room public (0/1) [Default: 0]: 0

Maximum Users (value) [Default: 0]: 20


Permission Options

---

Allow non-admins to see real jids (0/1) [Default: 0]: 0

Can users change subject (0/1) [Default: 0]: 0

Allow users to IQ query other users (0/1) [Default: 0]: 0


Legacy Options:

---

Consider all clients legacy (0/1) [Default: 0]: 1

Legacy join message (text) [Default: ]: join

Legacy leave message (text) [Default: ]: leave

Legacy rename message (text) [Default: ]: rename


Moderation Options:

---

Is room moderated (0/1) [Default: 0]: 1

Default entry type of participant (0/1) [Default: 0]: 0

Default entry type of participant (0/1) [Default: 0]: 0


Member-Only Options:

---

Make room member-only (0/1) [Default: 0]: 1

Allow members to send invites (0/1) [Default: 0]: 0


Logging Options:

---

Enable native room logging (0/1) [Default: 0]: 0

Skipping Logging options


Owner List:

---

JID of owner (Empty line to exit): mario@tortuga.fing.edu.uy

JID of owner (Empty line to exit):


Admin List:

---

JID of admin (Empty line to exit): mario@tortuga.fing.edu.uy

JID of admin (Empty line to exit):


Member List:

---

JID of member (Empty line to exit): mario@tortuga.fing.edu.uy

JID of member (Empty line to exit): daniel@tortuga.fing.edu.uy

JID of member (Empty line to exit):


Outcast List:

---

JID of outcast (Empty line to exit):


Writing Room definition file

Room registry not found. Creating


Writing updated Room registry file


Luego de terminado el script dentro del directorio spool se habrá creado un directorio tortuga.fing.edu.uy y dentro de el se hallan los archivos de configuración de la sala y el de registro de salas del servidor.

1Significa la ausencia de Rol.

Estudio del Open/Free (GNU/Linux) como plataforma de servicios de red en entornos empresariales
Daniel Caraballo - Mario Madera - Marcelo Odin
Tutor: Ariel Sabiguero Yawelak
2004 - 2005.