lunes, 25 de febrero de 2013

servidor jabber con prosody


Lua, es uno de los tantos lenguajes interpretados que hay. Echo por los Brasileños; aunque lo de ellos definitivamente es la samba y el futboll. Lo digo porque ese fue uno de los primeros lenguajes que estuve manoseando y No creo que halla un buen motivo para escribir algo con él.

¡Pero Prosody, demuestra que me equivoco!

La robusteza, simplicidad y el rendimiento de este servidor quizás sean superiores a la de ejabberd (que está escrito en Erlang, un lenguaje aún más exótico que Lua). Por otra parte, su todo en uno, lo hace más versátil que otros cuantos. No tiene nada que envidiarle al cochino OpenFire y toda su parafernaria de Java.

Prosody cuenta de manera incorporada con servidor MUC (sala de charla), pasarelas hacia servicios, logger de error, loger normal, logger de debug, servidor BOSH, discovery, mensaje masivo, MOTD y todo lo que necesita un completo servidor jabber. Incluso un servidor http y una interfaz de telnet. No piense usted que todo eso es obligado e incluido por defecto.

En su estado natural, prosody solo viene con lo básico. Ampliarlo, es solo cuestión de modificar la configuración. No piense en una extraña interfaz web como la de ejabber, hablamos de un fichero de configuración ".lua" con todo comentado.  No necesitamos saber Lua para configurarlo porque hay mas
comentarios que código en dicho fichero. La exoticidad de Lua radica en que un comentario es "--" en vez de "#"

Prosody tiene un bonito esquema modular. Los módulos del llamado tipo "core", son lo básico del jabber: iq, precense, etc... No son funciones del servidor, son módulos, módulos base que incluso pueden ser deshabilitados. De forma que el servidor es un núcleo monolítico, compuesto por varios módulos. Ampliarlo, es solo cuestión de quitar comentarios y las cosas más específicas, como un roster compartido, es solo  uestión de insertarle un módulo y parametrisarlo; no hay compilar nada.

Comenzamos. En debian todo es muy fácil:

aptitude install prosody

Esto dará lugar un fichero de configuracion en: /etc/prosody/prosody.cfg.lua

De ahí modificaremos lo que necesitamos. Primero, poner la JID del admin, eso lo haremos aunque nuestro dominio no halla sido declarado.

admins = { 'tu_usaurio@tudominio.cu' }

Ahora vamos a la sesión modules_enabled. Todo bien comentadito. Yo lo habilito todo menos el servidor http y el telnet, como que no me da buena espina.

Si habilitamos el módulo "motd" nuestro servidor contará con un MOTD, pero debemos especificarlo. De esta forma cada módulo es una función que puede o no llevar parámetros de configuración. Para argumentar la configuración de motd, escribimos FUERA de las sesión de módulos.

motd_text = 'este es el motd de mi server'

Pero "motd_text" no estaba escrito en ninguna parte. Para ver si un módulo tiene o no configuración, sus detalles, que hace y hasta un ejemplo, podemos verlo en la lista de módulos.

http://prosody.im/doc/modules

Pero volvamos a la configuración. La siguiente linea de interés es la que permite el registro de usuarios.

allow_registration = true;

OJO! se requiere un ";" al final de la configuración (razón por la cual abandoné Lua). Si no quieres que los usuarios se registren déjalo en false. Puedes usar la aplicación de control para crear usuarios. Ejecuta prosodyctl sin parámetros y veras una pantalla aprueba de imbéciles que te dice como crear los usuarios y otras opciones interesantes. Lo bueno que tiene esa aplicación es que hace más cosas de la que dice.

Lo siguiente es el SSL, no es bueno desabilitarlo porque muchos cliente jabbers traen por definición usar ssl. Mejor seguir a las que dice:

c2s_require_encryption = false
s2s_require_encryption = false

Poniéndolas en false, el servidor usara lo mismo SSL que plana.

Pero aún no hemos declarado el dominio. Resulta que como te dije todo es modular. Los dominios son VirtualHost. Al igual que en apache, incluso el dominio por defecto, es un virtual host. Podemos declarar varios dominios y dejarlos deshabilitados.

VirtualHost "tudominio.cu"

Ya tenemos un dominio, podríamos tener más con solo agregarlos pero con eso ya tenemos un servidor con lo indispensable. Veamos en el próximo post, como es el caso de un servidor con sala de conferencias y con roster compartido, dos características que no faltan en servidor jabber corporativo.

No hay comentarios:

Publicar un comentario

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.