Herramientas de usuario

Herramientas del sitio


doc:freebsd:servicios003

Jabber + SSL + MySQL + Mu

Autor: ACMhUnTeR

Fecha 17/02/2004

INTRODUCCION

Este manual explicara como instalaremos un Servidor Jabber que no es mas que un servicio de mensajeria instantanea, con soporte para conexiones SSL, para el manejo de usuarios utilizando MySQL y permitir la creacion de Salas de Chat para conversaciones multiusuario.

QUE NECESITAMOS

Jabber 1.4.2

Necesitaremos instalar el demonio del servidor Jabber utilizaremos la version 1.4.2 y podemos instalarlo desde nuestro arbol de ports.

HellFire#cd /usr/ports/net/jabber && make install clean

MySQL 4.0.18

Instalamos el demonio de MySQL en su version stable 4.0.18 tambien lo haremos desde el arbol de ports

HellFire#cd /usr/ports/databases/mysql40 && make install clean

xdb_sql 1.3

Descargamos el componente para permitir la autentificacion hacia nuestro MySQL llamado xdb_sql y podemos encontrarlo en http://www.jabberstudio.org/projects/xdb_sql/releases/view.php?id=94

Una vez descargado necesitaremos contruir el respectivo modulo xdb_sql.so para esto necesitaremos una copia del source del jabber.

HellFire#cp /usr/ports/distfiles/jabber/jabber-1.4.2.tar.gz /home/acardenas/
HellFire#cd /home/acardenas/
HellFire#tar xvfz jabber-1.4.2.tar.gz
HellFire#tar xvfz xdb_sql-1.3.tar.gz
HellFire#mv xdb_sql jabber-1.4.2
HellFire#cd jabber-1.4.2
HellFire#./configure
HellFire#cd xdb_sql
HellFire#ee Makefile

Editaremos el archivo Makefile

# --------------------------------------------------------------------------
#
#  This program was developed by IDEALX (http://www.IDEALX.org), for
#  LibertySurf Télécom (http://www.libertysurftelecom.fr), based on
#  code developped by members of the Jabber Team in xdb/mysql.
#
#  Initial release in xdb_sql 1.0, (C) 2000 - 2001 LibertySurf
#  Télécom
#
#  Individual authors' names can be found in the AUTHORS file
#
#  Usage, modification and distribution rights reserved. See file
#  COPYING for details.
#
# --------------------------------------------------------------------------
  
# $Id: Makefile,v 1.2 2003/01/12 15:15:54 bobeal Exp $

#
# This Makefile is intended to be used in the Jabber environment
#

include ../platform-settings

VERSION = 1.3

# Debug version
CFLAGS += -DDEBUG -g

# Select backend type (POSTGRESQL_BACKEND, ODBC_BACKEND,
# MYSQL_BACKEND, ORACLE_BACKEND)
BACKEND = MYSQL_BACKEND

CFLAGS += -I. -I../jabberd -D$(BACKEND)

xdb_sql_OBJECTS= \
	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 

ifeq ($(BACKEND),ORACLE_BACKEND)
  CFLAGS += -I$(ORACLE_HOME)/rdbms/demo/ -I$(ORACLE_HOME)/rdbms/public 
  LIBS += $(ORACLE_HOME)/lib/libclntsh.so
  xdb_sql_OBJECTS += xdb_sql_oracle.o
endif

ifeq ($(BACKEND),POSTGRESQL_BACKEND)
  CFLAGS += -I/usr/include
  LIBS += -L/usr/lib -lpq
  xdb_sql_OBJECTS += xdb_sql_pgsql.o
endif

ifeq ($(BACKEND),MYSQL_BACKEND)
  CFLAGS += -I/usr/local/include/mysql
  LIBS += -L/usr/local/lib/mysql -lmysqlclient
  xdb_sql_OBJECTS += xdb_sql_mysql.o
endif

ifeq ($(BACKEND),ODBC_BACKEND)
  xdb_sql_OBJECTS += xdb_sql_odbc.o
endif

all: xdb_sql.so

xdb_sql.so: $(xdb_sql_OBJECTS)
	$(CC) $(CFLAGS) $(MCFLAGS) -o xdb_sql.so $(xdb_sql_OBJECTS) $(LDFLAGS) $(LIBS) -static 

clean:
	rm -f $(xdb_sql_OBJECTS) xdb_sql.so
	rm -rf xdb_sql.$(VERSION)

dist: all
	mkdir xdb_sql.$(VERSION)
	cat FILES | cut -d":" -f 1 | xargs cp --target-directory=xdb_sql.$(VERSION)/
	tar cvzf xdb_sql.$(VERSION).tar.gz xdb_sql.$(VERSION)

Grabamos los cambios y ejecutamos el GNU Make

HellFire#gmake

Veremos que se creo el archivo xdb_sql.so

HellFire#mkdir /usr/local/lib/jabber/xdb_sql
HellFire#mv xdb_sql.so /usr/local/lib/jabber/xdb_sql/
HellFire#mv xdb_sql.xml /usr/local/lib/jabber/xdb_sql/

Creamos las tablas que usaremos para este metodo de autentificacion para esto tenemos el archivo sample_database.sql con los sql ya preparados.

Mu-Conference 0.6

Descargamos Mu-Conference que nos permitira la creacion de Salas de Chat lo encontramos en http://www.jabberstudio.org/projects/mu-conference/releases/view.php?id=357 , tambien lo tenemos en el arbol de ports pero solo en la version 0.4.1.

HellFire#tar xvfz mu-conference-0.6.0.tar.gz
HellFire#mv mu-conference-0.6.0 jabber-1.4.2
HellFire#cd jabber-1.4.2/mu-conference-0.6.0/src
HellFire#gmake

Se creara el archivo mu-conference.so

HellFire#mkdir /usr/local/lib/jabber/mu-conference/
HellFire#mv mu-conference.so /usr/local/lib/jabber/mu-conference/

OpenSSL

Si no tuvieramos OpenSSL instalado procedemos a instalarlo para generar el certificado y la clave privada que necesitaremos para que nuestro jabber trabaje con encriptacion de datos ssl.

HellFire#cd /usr/ports/security/openssl && make install clean

Podemos utilizar este script para la creacion de nuestro key.pem

####################################################################################
OPENSSL=/usr/bin/openssl
## This generates the cert and key
## The key will be valid for 3650 days. 
## Be sure to enter the FQDN (hostname) of your Jabber server as
## the "Common Name" or the certificate check of the clients will fail.
$OPENSSL req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out key.pem
## This will remove the passphrase
$OPENSSL rsa -in privkey.pem -out privkey.pem
## Put it all together
cat privkey.pem >> key.pem
## Cleanup
rm privkey.pem
####################################################################################
HellFire#mv key.pem /usr/local/lib/jabber/

CONFIGURANDO

Insertaremos o Modificaremos los siguientes bloques en el archivo /usr/local/etc/jabber.xml, algunas secciones ya existen asi que solo tendremos que hacer en ellas modificaciones.

<!-- Puedes poner tu ip o tu dominio en este caso hellfire.no-ip.org-->
<host><jabberd:cmdline flag="h">hellfire.no-ip.org</jabberd:cmdline></host>
<!-- Datos Generales de tu Servidor Jabber-->
      <vCard>
        <FN>HellFire Jabber Server</FN>
        <DESC>FreeBSD HellFire</DESC>
        <URL>http://hellfire.no-ip.org/</URL>
      </vCard>
<!-- Mensaje de Bienvenida a nuevo usuario -->
      <welcome>
        <subject>Bienvenido al Poder de FreeBSD!</subject>
        <body>Bienvenido al Servidor Jabber HellFire.no-ip.org Para mayor informacion acerca de Jabber visita http://docs.jabber.org/</body>
      </welcome>
<!-- Con esto podras visualizar en la exploracion de servicios, el servicio de Salas de Chat -->
<browse>
      <conference type="public" jid="conference.hellfire.no-ip.org" name="Sala de Chat HellFire">
              <ns>jabber:iq:register</ns>
              <ns>gc-1.0</ns>
              <ns>http://jabber.org/protocol/muc</ns>
     </conference>
</browse>
<!-- Configuracion para el uso del modulo xdb_sql.so para la autentificacion con MySQL-->
  <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>./xdb_sql/xdb_sql.so</xdb_sql>
    </load>
    <jabberd:include>./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'>/var/spool/jabber</jabberd:cmdline></spool>
    </xdb_file>
  </xdb>
<!-- Configuracion para el soporte SSL en nuestor jabber-->
      <ip port="5222">hellfire.no-ip.org</ip>
      <ssl port='5223'>hellfire.no-ip.org</ssl>
<!-- Configuracion para el uso del modulo mu-conference para el soporte de Salas de Chat

fijarse en el tag service donde se especifica el host que se utilizara para la creacion de salas de chat, como en el tag defaults y public que permite a cualquier usuario crear una sala. Se puede configurar el mu-conference para ser ejecutado como un proceso aparte pero yo opte por ejecutarse en el mismo proceso del demonio jabberd–>

  <service id="conference.hellfire.no-ip.org">
    <load>
       <conference>./mu-conference/mu-conference.so</conference>
    </load>
    <conference xmlns="jabber:config:conference">
      <public/>
      <defaults/>
      <vCard>
        <FN>Sala de Chat Publica</FN>
        <DESC>Este servicio es para Sala des Chat publico.</DESC>
        <URL>http://conference.hellfire.no-ip.org/logs/</URL>
      </vCard>
      <history>20</history>
      <logdir>./logs/muc/</logdir>
      <sadmin>
        <user>admin@hellfire.no-ip.org</user>
      </sadmin>
      <notice>
        <join>has become available</join>
        <leave>has left</leave>
        <rename>is now known as</rename>
      </notice>
    </conference>
  </service>
  <pidfile>./mu-conference.pid</pidfile>
<!--Configuracion para el soporte de SSL en Jabber -->
    <io>
    <ssl>
      <key ip='hellfire.no-ip.org'>./key.pem</key>
    </ssl>
    </io>
  

Modificamos el archivo /usr/local/etc/xdb_sql/xdb_sql.xml

<!-- Si al crear las tablas y los permisos al usuario jabber especificamos otro password , especificarlo en el tag pass -->
    <connection>
      <host>localhost</host>
      <db>jabber</db>
      <user>jabber</user>
      <pass>secret</pass>
    </connection>

FINALES

Pueden descargarse su cliente de jabber favorito para probar nuestro servidor recien configurado a mi me gusto mucho el tkabber si duda muy configurable con muchas caracteristicas, se puede utilizar autentificacion simple o utilizando ssl , la configuracion que se explico permite registro en linea al ser nuevo usuario, como permite la creacion de salas de chat conectandonos segun el ejemplo a conference.hellfire.no-ip.org, cualquier duda, sugerencia o correcion son bienvenidos.

doc/freebsd/servicios003.txt · Última modificación: 2022/03/02 08:18 (editor externo)