Danielside

informática softwarelibre divagaciones música

Configurar (bien) Gajim con BOSH

Los mejores clientes XMPP que conozco hasta ahora son Gajim y Conversations [1]. Lo bueno de Gajim es que si te ves condenado a usar Windows, también lo tienes y funciona exactamente igual. Me gustan Gajim y Conversations porque tienen dos cosas importantes: la sincronización de los mensajes entre todos los clientes que uses y la subida de imágenes con HTTPUpload.

Hasta ahora, cuando me encontraba un firewall que no dejaba pasar tráfico por el 5222, terminaba usando una instalación de Jappix [2] que tengo en mi servidor. Es una aplicación web y como tal no tiene la posibilidad de realizar una conexión directa contra un servidor XMPP, ya que las aplicaciones web utilizan el transporte HTTP.

Los gestores de conexión BOSH como Punjab [3] son conocidos en el mundillo XMPP porque sirven para que un cliente web como Jappix pueda realizar una conexión XMPP persistente al servidor sobre HTTP. Es el que venía usando desde hace bastante tiempo con Jappix. El problema de Jappix es que no es capaz de leer los mensajes enviados desde otros clientes, no se sincroniza desde el servidor. Conversations y Gajim leerán los que envias desde Jappix, pero no al contrario.

Y digo: como puedo montar un proxy hacia Punjab por el puerto 80 para que lo use Jappix ¿por qué no puede usarlo directamente Gajim?

Este artículo presupone que controlas tu propio servidor XMPP (en mi caso Prosody) y el DNS, ya que tiene recetillas por aquí y por allá. Son bastantes piezas. La instalación de Prosody y Punjab quedan fuera del alcance.

Apache

Lo primero que necesitamos es tener un apache o un nginx (la configuración es similar) en el servidor donde está Prosody o similar. Punjab escucha normalmente en el 5270 que también estará cortado. Así que lo que hacemos es montar proxy inverso escuchando en el 443. Asumimos que para Prosody tenemos montado un virtual host y sería la cosa así:

<VirtualHost *:443>
ServerName proxy.dnlsd.nom.es:443
ProxyRequests Off
ProxyPass /http-bind http://localhost:5270/http-bind/
ProxyPassReverse /http-bind http://localhost:5270/http-bind/
</VirtualHost>

Activa el sitio, recarga el apache y visita https://proxy.dnlsd.nom.es/http-bind en el navegador, te debe salir un mensaje tal que “XEP-0124 – BOSH”.

DNS

Necesitamos un registro de tipo TXT con la clave _xmppconnect apuntando hacia _xmpp-client-xbosh=https://proxy.dnlsd.nom.es/http-bind/. Esto lo que hará es decirle a Gajim que tiene ahí un método alternativo de conexión hacia el servidor Prosody, a través de BOSH. Todo el meollo está mejor explicado aquí en la configuración DNS para XMPP de Prosody[4]

Gajim

Ahora lo interesante, porque no es muy intuitivo. Tenemos que tocar en dos partes de la configuración de la cuenta.

Por un lado modificamos el tipo de conexión creando una nueva conexión de tipo BOSH apuntando directamente hacia el connection manager Punjab a través del proxy BOSH. Nos aseguramos de que la cuenta queda configurada para conectarse con ese proxy. Esto se hace en Gajim > Cuentas > clic en cuenta > Conexión > Proxy.

Por otro lado y aquí está el truquillo, le decimos a la cuenta que su hostname, en lugar de ser el del virtual host de prosody (por ejemplo danielside@gs.dnlsd.nom.es) será el del dominio raíz (es decir, dnlsd.nom.es). Esto se hace también en Conexión, en la parte Nombre del servidor. Se pone el dominio raíz y el puerto de prosody, por ejemplo dnlsd.nom.es:5222.

Esto hace que Gajim pregunte al DNS que como se puede conectar y éste le dice que por un proxy BOSH. Como Gajim ve que tiene ese proxy BOSH en su conexión, se conecta, y lo hace a través del puerto 443, que está abierto siempre.

Me parece raro que si ya le has dicho en la parte del proxy que se conecte por BOSH, se lo tengas que decir aquí otra vez, como diciendo “Sí, que no es broma, que vamos por BOSH”. Pero bueno, así lo pensaron.

Referencias

  1. Gajim y Conversations
  2. Cliente XMPP Jappix
  3. Punjab BOSH connection manager
  4. Documentación DNS Prosody para XMPP

Archivado en categoría(s) Internet, XMPP

Enlace permanente



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *