PDF de programación - Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL

Imágen de pdf Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL

Sistema de Mensajería Instantánea Corporativa con Jabber y MySQLgráfica de visualizaciones

Actualizado el 21 de Marzo del 2020 (Publicado el 8 de Mayo del 2017)
1.394 visualizaciones desde el 8 de Mayo del 2017
507,3 KB
38 paginas
Creado hace 18a (17/03/2006)
Sistema de Mensajería Instantánea Corporativa con 

Jabber y MySQL.

Rafael Matito

1

Objetivo

Sistema de mensajería instantánea corporativa
basado en Software Libre.

Basado en estándares abiertos.

Libertad de elección de servidor y clientes.

Facilidad de administración de los usuarios del
sistema, de sus grupos y contactos.

Bajo coste.

2

¿Qué necesitamos?

Servidor Jabber

{

Jabberd1

Jabberd2

Sistema Gestor de Bases de Datos (MySQL)

Aplicación de gestión de usuarios del sistema

Equipos clientes (PSI,Gaim,Kopete...)

3

Esquema de funcionamiento

Servidor

Mensajes y
autenticación

Validación

y almacenamiento datos

Mensajes y
autenticación

Cliente

Base de datos

Cliente

4

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

5

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.

6

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.

7

Ejemplo de comunicación

Servidor Jabber

Servidor Jabber

cliente Jabber

cliente Jabber

Pasarela

Red MSN

Cliente MSN

cliente Jabber

Protocolo Jabber

Protocolo MSN

8

Servidores Jabber

9

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 almacenamiento
de datos

10

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

11

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)

12

Implementación con Jabberd1

6. Modificamos el fichero Makefile de xdb_sql

# Uncomment the file that corresponds to your DB
xdb_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.o
all: xdb_sql.so

13

Implementación con Jabberd1

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

14

Implementación con Jabberd1

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

15

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

16

Requisitos de Jabberd2

OpenSSL (versión 0.96 o superior)
Libidn (versión 0.3 o superior)

BD para almacenar datos

MySQL
Berkeley DB

Oracle
PostgreSQL

Sistema para autenticar

MySQL
Berkeley DB
OpenLDAP

Oracle
PostgreSQL
PAM

17

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

18

Configuración del servidor

1. Establecer el hostname en sm.xml y en c2s.xml

sm.xml
<!−− Session manager configuration −−>
<sm>
<id>servidor.dominio</id>

c2s.xml
<!−− Local network configuration −−>
<local>
<id>servidor.dominio</id>

19

Configuración del servidor

2. Crear la base de datos jabberd2 y establecer la
configuración del usuario

#mysql -u root -p < tools/db-setup.mysql

3. Configurar sm.xml para usar MySQL como sistema de
almacenamiento.

<!−− Storage database configuration −−>
<storage>
<!−− By default, we use the MySQL driver for all
storage −−>
<driver>mysql</driver>

20

Configuración del servidor

3. Configurar sm.xml para usar MySQL como sistema de
almacenamiento.
<!−− 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>

21

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>

22

Configuración del servidor

4. Configurar c2s.xml para usar MySQL como sistema de
autenticación

<!−− 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>

23

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

24

Otras tareas de configuración

Configurar Jabberd2 para conexiones SSL

Crear un usuario administrativo

Deshabilitar el registro público de cuentas

Habilitar que los usuarios puedan cambiar las
claves

25

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

26

Gestión de usuarios y contactos

usuarios

jabberd2

Scripts de

sincronización

Aplicación de gestión

de usuarios

Servidor Jabberd2

27

Ejemplo de script

28

Gestión de usuarios y contactos

jabberd2

Aplicación sin desarrollar

- Gestión de los usuarios
- Gestión de los contactos
- Gestión de los grupos

Servidor Jabberd2

29

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

30

Equipos clientes

31

Emisión de mensajes automáticos

Insertando registros en la tabla queue.

Utilizando jabberd_alert.pl

Programando un script en php que haga uso de la
clase “class.jabber.php” http://cjphp.netflint.net

32

Insertar registros en la tabla queue

La tabla queue mantiene una lista de todos los
mensajes que aún no han sido entregados a sus
destinatarios.
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.

33

Utilizando jabberd_alert.pl

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

e = jid del receptor
n = jid del emisor
w = clave del usuario emisor

34

Utilizando la clase class.jabber.php

35

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
  • Links de descarga
http://lwp-l.com/pdf3377

Comentarios de: Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad