View
24
Download
0
Category
Preview:
Citation preview
1
Rafael Matito
Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL.
2
Objetivo
Sistema de mensajería instantánea corporativa basado en Software Libre.
Basado en estándares abiertos.
Facilidad de administración de los usuarios del sistema, de sus grupos y contactos.
Libertad de elección de servidor y clientes.
Bajo coste.
3
¿Qué necesitamos?
{Servidor JabberJabberd1
Jabberd2
Sistema Gestor de Bases de Datos (MySQL)
Aplicación de gestión de usuarios del sistema
Equipos clientes (PSI,Gaim,Kopete...)
4
Validacióny almacenamiento datos
Servidor
Cliente Cliente
Esquema de funcionamiento
Base de datos
Mensajes y autenticación Mensajes y
autenticación
5
¿Qué es Jabber?
Jabber es un protocolo libre gestionado por la Jabber Software Foundation basado en el estándar XML para mensajería instantánea.
Es una alternativa libre y segura a servicios como ICQ, AIM, MSN o Yahoo Messenger.
Más conocido como el Linux de la mensajería instantánea.
6
Características
Protocolo abierto: Con todas las ventajas del software libre, se puede programar un servidor o un cliente o ver el código, entre otras cosas.
Estándar: ha sido aprobado bajo el nombre de XMPP por el Internet Engineering Task Force (IETF). Sus especificaciones han sido publicadas como RFC 3920 y RFC 3921.
Descentralizado: Se puede crear un servidor para Jabber, y se puede interoperar o unirse al resto de la red Jabber. Similar al email.
Extensible: Se puede ampliar con mejoras sobre el protocolo original. Las extensiones comunes son manejadas por la Jabber Software Foundation.
7
Características
Seguro: Cualquier servidor Jabber puede estar aislado del exterior (intranet). Se permite SSL para comunicaciones servidor-cliente y algunos clientes aceptan GPG como encriptación de las comunicaciones usando cifrado asimétrico.
Multiredes: Un transporte o pasarela permite comunicarse con otros protocolos usados por clientes como MSN Messenger, ICQ, AOL o Yahoo!.
Flexible: los usos de Jabber más allá de la MI incluyen monitorización de red, sindicación de contenido, herramientas de colaboración, compartición de archivos, juegos, supervisión de sistemas remotos...
Diverso: una amplia gama de compañías y de proyectos de software libre utilizan los protocolos Jabber para construir y para desplegar sus productos y y servicios en tiempo real. Libertad de elección de proveedor.
8
cliente Jabber
Servidor Jabber
Pasarela Red MSN
Cliente MSN
Protocolo Jabber
Protocolo MSN
Ejemplo de comunicación
Servidor Jabber
cliente Jabber
cliente Jabber
9
Servidores Jabber
10
Implementaciones
Implementación con Jabberd1
Más probado, más tiempo de desarrollo y más estable.
Existen paquetes para la mayoría de distribuciones
No utiliza MySQL de forma nativa.
Implementación con Jabberd2
Tiene más características que Jabberd1
Versión menos probada y por lo tanto menos estable
Es más difícil encontrar paquetes para la mayoría de distribuciones
Utiliza MySQL de forma nativa para autenticación y almacenamientode datos
11
Implementación con Jabberd1
Jabberd1 no tiene almacenamiento de datos ni autenticación contra bases de datos de forma nativa. Se necesita descargar la extensión xdb_sql.
Para más información: http://libertonia.escomposlinux.org/story/2004/9/28/10813/1365
12
Implementación con Jabberd1
1. Instalar GNU Pth
2. Descargar Jabberd1 en /usr/local y compilar
3. Probamos el servidor
[root@server:/usr/local/jabberd-1.4.3]# ./jabberd/jabberd -h servidor.dominio
4. Descargamos xdb_sql dentro del directorio donde tenemos Jabberd1
5. Instalamos las cabeceras y ficheros de desarrollo de MySQL (mysql-devel)
13
Implementación con Jabberd1
6. Modificamos el fichero Makefile de xdb_sql
# Uncomment the file that corresponds to your DBxdb_sql_OBJECTS= \ xdb_sql_mysql.o \ xdb_sql.o \ xdb_sql_auth0k.o \ xdb_sql_auth.o \ xdb_sql_offline.o \ xdb_sql_register.o \ xdb_sql_config.o \ xdb_sql_querydef.o \ xdb_sql_roster.o \ xdb_sql_last.o \ xdb_sql_backend.o \ xdb_sql_vcard.o \ xdb_sql_filter.o \ xdb_sql_generic.o \# xdb_sql_pgsql.o# xdb_sql_odbc.oall: xdb_sql.so
14
7. Compilamos xdb_sql
Implementación con Jabberd1
8. Creamos la base de datos
[root@server:/usr/local/jabber-1.4.3/xdb_sql]# mysql -u root -p < sample_dabase.sql
9. Editamos el fichero xdb_sql.xml (sección connection)
<!-- Configure information about the SQL connection --><connection><host>servidor.dominio</host><db>jabber</db><user>jabber</user><pass>tuclave</pass></connection>
15
Implementación con Jabberd110. Editamos el fichero jabber.xml (sección xdb)
<xdb id="xdb"><host/><ns>jabber:iq:roster</ns><ns>jabber:x:offline</ns><ns>jabber:iq:filter</ns><ns>jabber:iq:last</ns><ns>jabber:iq:auth</ns><ns>jabber:iq:auth:0k</ns><ns>jabber:iq:register</ns><ns>vcard-temp</ns><load><xdb_sql>/usr/local/jabber-1.4.3/xdb_sql/xdb_sql.so</xdb_sql></load><jabberd:include>/usr/local/jabber-1.4.3/xdb_sql/xdb_sql.xml</jabberd:include><load><xdb_file>./xdb_file/xdb_file.so</xdb_file></load><xdb_file xmlns="jabber:config:xdb_file"><spool><jabberd:cmdline flag= s >./spool</jabberd:cmdline></spool></xdb_file></xdb>
16
Implementación con Jabberd2
De ahora en adelante se asumirá que se ha seguido esta implementación para la configuración del servidor, emisión de mensajes del sistema...
17
Requisitos de Jabberd2
OpenSSL (versión 0.96 o superior)
Libidn (versión 0.3 o superior)
BD para almacenar datos
MySQL
Berkeley DB PostgreSQL
Sistema para autenticar
MySQL
Berkeley DBOpenLDAP PAM
Oracle
PostgreSQL
Oracle
18
Instalar Jabberd2
1. Descargamos el código fuente
2. Configuramos
./configure −−enable−mysql −−enable−ssl −−enable−idn
3. Compilamos e instalamos
Los ficheros de configuración estarán en /usr/local/etc/jabberd
19
Configuración del servidor
1. Establecer el hostname en sm.xml y en c2s.xml
<!−− Session manager configuration −−><sm> <id>servidor.dominio</id>
<!−− Local network configuration −−><local> <id>servidor.dominio</id>
sm.xml
c2s.xml
20
Configuración del servidor
3. Configurar sm.xml para usar MySQL como sistema de almacenamiento.
2. Crear la base de datos jabberd2 y establecer la configuración del usuario
#mysql -u root -p < tools/db-setup.mysql
<!−− Storage database configuration −−> <storage> <!−− By default, we use the MySQL driver for all storage −−> <driver>mysql</driver>
21
Configuración del servidor
<!−− MySQL driver configuration −−><mysql> <!−− Database server host and port −−> <host>localhost</host> <port>3306</port> <!−− Database name −−> <dbname>jabberd2</dbname> <!−− Database username and password −−> <user>jabberd2</user> <pass>secret</pass> <transactions/></mysql>
3. Configurar sm.xml para usar MySQL como sistema de almacenamiento.
22
Configuración del servidor
4. Configurar c2s.xml para usar MySQL como sistema de autenticación
<!−− Authentication/registration database configuration −−><authreg> <!−− Backend module to use −−> <module>mysql</module>
23
Configuración del servidor
<!−− MySQL module configuration −−><mysql> <!−− Database server host and port −−> <host>localhost</host> <port>3306</port> <!−− Database name −−> <dbname>jabberd2</dbname> <!−− Database username and password −−> <user>jabberd2</user> <pass>secret</pass></mysql>
4. Configurar c2s.xml para usar MySQL como sistema de autenticación
24
Configuración del servidor
5. Probar el servidor
/usr/local/bin/jabberd
Existe un script llamado jabberd.rc en el directorio tools que nos permitirá arrancar y parar el servidor
automáticamente
25
Otras tareas de configuración
Crear un usuario administrativo
Deshabilitar el registro público de cuentas
Habilitar que los usuarios puedan cambiar las claves
Configurar Jabberd2 para conexiones SSL
26
Base de datos
authreg: almacena los usuarios registrados
queue: almacena los mensajes aún no entregados
roster-groups: almacena los grupos
roster-items: almacena los contactos
vcard: almacena la información personal de los usuarios
27
Gestión de usuarios y contactos
Aplicación de gestión de usuarios
Servidor Jabberd2
Scripts de sincronización
usuarios jabberd2
28
Ejemplo de script
29
Gestión de usuarios y contactos
jabberd2
Servidor Jabberd2
Aplicación sin desarrollar
- Gestión de los usuarios- Gestión de los contactos- Gestión de los grupos
30
Equipos clientes
Existen muchos clientes de Jabber
Fácil e intuitivo
Multiplataforma
Multiprotocolo
Otras características: grupos de conversación, envío de mensajes a grupos, grupos anidados...
31
Equipos clientes
32
Emisión de mensajes automáticos
Insertando registros en la tabla queue.
Programando un script en php que haga uso de la clase “class.jabber.php” http://cjphp.netflint.net
Utilizando jabberd_alert.pl
33
Insertar registros en la tabla queue
Es una tabla que usa internamente el servidor jabberd2, no se recomienda su alteración desde el exterior.Si el destinatario está conectado en el momento de la emisión del mensaje no lo recibirá hasta que desconecte y vuelva a conectar.
Es muy sencillo realizar un script que inserte registros en esta tabla con el formato de los mensajes.
La tabla queue mantiene una lista de todos los mensajes que aún no han sido entregados a sus destinatarios.
34
Utilizando jabberd_alert.pl
./jabber_alert.pl −e destinatario@dominio.com −n emisor@dominio.com −w clave
e = jid del receptorn = jid del emisorw = clave del usuario emisor
35
Utilizando la clase class.jabber.php
36
Un caso de éxito, Provivienda
Provivienda tiene sus empleados en muchos centros de trabajo.
Con el fin de ahorrar costes en teléfono y agilizar las comunicaciones se venía empleando otro sistema de mensajería instantánea.
Este sistema no permitía la sincronización con la aplicación de gestión de los empleados, de tal forma que todas las modificaciones habían de hacerse a mano y distribuir los cambios.
37
Un caso de éxito, Provivienda
Los usuarios usan Jabber de forma transparente, no necesitan conocer la tecnología subyacente.
Todos los empleados tienen todos los contactos en los grupos (departamentos y centros de trabajo) a los que pertenecen, sin importar los traslados, altas ni bajas.
Disponen de información actualizada sobre el resto de empleados (teléfonos, fax, dirección, email...).
Tienen una forma cómoda y rápida de compartir ficheros e información.
38
Dudas y preguntas
Recommended