38
1 Rafael Matito Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL.

Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

Embed Size (px)

Citation preview

Page 1: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

1

Rafael Matito

Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL.

Page 2: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 3: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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...)

Page 4: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

4

Validacióny almacenamiento datos

Servidor

Cliente Cliente

Esquema de funcionamiento

Base de datos

Mensajes y autenticación Mensajes y

autenticación

Page 5: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 6: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 7: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 8: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

8

cliente Jabber

Servidor Jabber

Pasarela Red MSN

Cliente MSN

Protocolo Jabber

Protocolo MSN

Ejemplo de comunicación

Servidor Jabber

cliente Jabber

cliente Jabber

Page 9: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

9

Servidores Jabber

Page 10: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 11: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 12: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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)

Page 13: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 14: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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>

Page 15: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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>

Page 16: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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...

Page 17: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 18: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 19: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 20: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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>

Page 21: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 22: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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>

Page 23: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 24: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 25: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 26: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 27: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

27

Gestión de usuarios y contactos

Aplicación de gestión de usuarios

Servidor Jabberd2

Scripts de sincronización

usuarios jabberd2

Page 28: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

28

Ejemplo de script

Page 29: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 30: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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...

Page 31: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

31

Equipos clientes

Page 32: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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

Page 33: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 34: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

34

Utilizando jabberd_alert.pl

./jabber_alert.pl −e [email protected] −n [email protected] −w clave

e = jid del receptorn = jid del emisorw = clave del usuario emisor

Page 35: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

35

Utilizando la clase class.jabber.php

Page 36: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 37: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

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.

Page 38: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL - Rafael Matito.pdf

38

Dudas y preguntas