8.3 Directorio de Usuarios (JUD)

Hemos decidido utilizar para implementar este servicio un script perl llamado user-agent el cual es actualmente el utilizado en jabber.org y por ellos recomendados. Existen algunos otros como pueden ser JUD (el paquete esta nombrado como el servicio) pero actualmente son compatibles con las versiones 1.4.X del servidor jabberd.

User-agent tiene los siguientes requisitos

mysql

Net::Jabber v2.0 - for Jabber namespaces

Net::XMPP v1.0 - for core XMPP support

XML::Stream v1.22 - for handling the XML streams

DBI - for MySQL database access

Los últimos cuatro son módulos PERL y podrán ser obtenidos desde http://www.cpan.org.

MySQL es utilizado para almacenar la información de los usuarios incluidos en el directorio. Si existían usuarios registrados anteriormente, estos deberán ser incluidos en la base JUD de Users-Agent a mano (mediante scripts). Los usuarios que se creen posteriormente a tener este servicio levantado serán registrados en ambas bases: jabberd2 y JUD.

Detallamos ahora el proceso de instalación de Users-Agent

Primero debemos obtener el tarball de la distribución (al momento de realizarlo era la versión 1.2). El mismo puede ser descargado desde

http://www.jabberstudio.org/projects/users-agent/releases/

Se debe elegir el directorio donde se desea instalar este componente y allí lo guardaremos. Nos cambiamos a ese directorio, descomprimimos y listo

tar -zxvf users-agent-1.2.tar.gz

cd users-agent-1.2


Comenzamos la configuración creando la base de datos JUD. Para ello disponemos de un script llamado createDB que se encargará de crearla. El mismo deberá poder conectarse en forma temporaria a alguna base dentro del servidor MySQL. La forma más fácil será deshabilitar la clave del root temporalmente

mysqladmin -u root -p password ""


Como alternativa, se puede editar el script en las líneas 13 y 17 que contiene el usuario y la clave del root. De todas maneras, si no deshabilita la calve deberá exportar la variable de ambiente DBI_DRIVER ante de ejecutar createDB. La misma deberá estar seteada a un valor dbi:mysql:test:localhost, donde test es una base de datos MySQL en producción.

Luego de deshabilitada la clave o editado el script podrá ser ejecutado mediante

./createDB


En caso de haberla deshabilitada NO OLVIDAR resetear la clave de root.

Ahora se podrá chequear que la base fue creada desde la consola de mysql



mysql -u root -p

mysql> show databases;

+----------+

| Database |

+----------+

| JUD |

| jabberd2 |

| mysql |

| test |

+----------+

4 rows in set (0.00 sec)


Una vez fue verificada la creación, se procederá a otorgar los permisos sobre esta. En caso de usar MySQL con jabberd el comando para esta acción es


mysql> use JUD;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'jabberd2'@'localhost'

->WITH GRANT OPTION;


En caso contrario podrá crear el usuario al mismo tiempo que otorga los permisos mediante

mysql> use JUD;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'jabberd2'@'localhost'

-> IDENTIFIED BY 'secret_password' WITH GRANT OPTION;


Pasamos ahora a la edición del archivo de configuración de user-agent, config.xml .Los valores a setear se encuentran es estos tags:

<hostname>

nombre del servidor jabberd. Debe ser el valor del tag <id> al comienzo del archivo sm.xml

<port>

puerto donde escucha el router de jabberd. Por defecto es 5347

<secret>

es el secret compartido que el router de jabber usa para conectarse a componentes legados. Se encuentra dentro del tag <secret> en el archivo router.xml.

<name>

es el hostname para user-agent. Típicamente es algo del estilo users.somedomain.com, users.jabber.somedomain.com, jud.somedomain.com, etc.

<username>

nombre del usuario para conectarse a la base JUD

<password>

Clave del usuario

Una vez editado estos valores, user-agent está listo para ser usado. El servicio puede levantarse de la siguiente manera

su jabber

./users-agent

Para testear el componente basta con iniciar un cliente Jabber y chequear en la lista de servicios si user-agent esta disponible. Como muestre esta información depende del cliente pero user-agente provee servicios tanto de búsqueda como de registración.

La elección del cliente Jabber afecta el uso de este agente. Para Linux, PSI aparenta ser el de mejor respuesta; en tanto que para Windows el mejor fueron JAJC y Exodus. Exodus fue de mejor performance de todos los testeados (PSI, Gabber, Gnome-Gabber, Kopete, Exodus, JAJC and Neos).

Users-Agent soporta correspondencia parcial en las búsquedas por lo tanto no es necesario el uso de comodines. Podría buscarse un usuario cualquiera usando sola la primer letra de cualquiera de los campos completados.

Integración de Users-Agent con los datos vCard Este procedimiento es de uso recomendado exclusivamente en privados y requiere que se este usando MySQL como repositorio de datos.

Es una corrección (patch) escrito por Peter Saint André, que le permite al servidor jabberd2 usar los datos almacenados en la tabla vCards como fuente de datos de Users-Agent. Una vez aplicado, Users-Agent usará esta tabla para búsquedas y registración. De esta manera, la actualización realizada por los usuarios en su vCard será reflejada automáticamente en las búsquedas hechas en Users-Agent JUD . De todas formas, luego de aplicada , cada usuario deberá crear una vCard para estar visible en Users-agent JUD.

Se reitera que esta corrección no sea aplicado en servidores públicos, de lo contrario estaríamos exponiendo información pública de los usuarios sin requerir su autorización. Otra aclaración realizada por el autor es que este patch no ha sido testeado en situaciones de cargas altas.

Para aplicar esta corrección, se debe levantar el componente Users-agent. Luego, descargar el archivo de corrección users-agent.vcard.patch en el directorio donde se encuentra users-agent y aplicar el parche usando:

patch -p0 < users-agent.vcard.patch

Se debe de editar el archivo config.xml para cambiar el nombre de la base de datos pues ahora esta usando Jabberd2, se debe de editar también el nombre de usuario y clave de ser necesario. Luego se debe de reiniciar el componente users-agent.

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.