Blackhold

qwebirc

Posted on novembre 7th, 2010 by admin

qwebirc es un cliente de irc via web.
Lo descubrí hace un tiempo buscando una forma de acceder al irc cuando todos los puertos estaban capados excepto el 80, por la red vi algunos pero no me gustaba mucho su estética, además de que todos precisaban de tener la maquina virtual de java instalada y a veces con openjdk la cosa no andaba muy bien. Así que en la web de freenode hallé la solución, el qwebirc, simple, con una buena estética y basado en ajax.


Lo primero que tenemos que hacer es instalar algunas dependencias y el mercurial para poder descargar las fuentes.

# apt-get install mercurial python-simplejson python-twisted

Escojamos un directorio víctima a instalar el qwebirc, por ejemplo /var. En contra de lo que podríamos pensar al instalar una aplicación web este, al igual que el etherpad lo compilas, lo ejecutas y te crea una nueva conexión en un puerto especial, en este caso el 9090.

# cd /var
# hg clone http://hg.qwebirc.org/qwebirc qwebirc
# cd qwebirc/
# hg up -C stable
# hg pull
# hg up

Luego copiamos el fichero de configuración config.py.default a config.py

# cp config.py.default config.py

Y lo editamos con los datos requeridos

# vi config.py

# cat config.py |egrep -v "(^#.*|^$)"
from qwebirc.config_options import *
IRCSERVER, IRCPORT = "irc.guifi.net", 6667
REALNAME = "http://irc.marsupi.org/"
IDENT = "webchat"
WEBIRC_MODE = None
BASE_URL = "http://irc.marsupi.org/"
STATIC_BASE_URL = "http://irc.marsupi.org/"
DYNAMIC_BASE_URL = "http://irc.marsupi.org/"
NETWORK_NAME = "Guifi.net"
APP_TITLE = NETWORK_NAME + " Web IRC"
FEEDBACK_FROM = "mail@contacto"
FEEDBACK_TO = "mail@contacto"
FEEDBACK_SMTP_HOST, FEEDBACK_SMTP_PORT = "127.0.0.1", 25
ADMIN_ENGINE_HOSTS = ["127.0.0.1"]
UPDATE_FREQ = 0.5
MAXBUFLEN = 100000
MAXSUBSCRIPTIONS = 1
MAXLINELEN = 600
DNS_TIMEOUT = 5
HTTP_AJAX_REQUEST_TIMEOUT = 30
HTTP_REQUEST_TIMEOUT = 5
HMACKEY = "mrmoo"
HMACTEMPORAL = 30
AUTHGATEDOMAIN = "webchat_test"
QTICKETKEY = "boo"
AUTH_SERVICE = "Q!TheQBot@CServe.quakenet.org"
AUTH_OK_REGEX = "^You are now logged in as [^ ]+\.$"
import dummyauthgate as AUTHGATEPROVIDER

Es importante definir correctamente el parámetro BASE_URL que es desde que URL se accederá al webchat de irc.
En esta configuración nos estamos conectando al chat de guifi.net.

Ahora tenemos que configurar, si lo deseamos, qué canales nos va a conectar de forma automática y 4 cosas sobre los nombres a mostrar y tal. Esto lo hacemos en js/qwebircinterface.js

# vi js/qwebircinterface.js
[...]
qwebirc.ui.Interface = new Class({
  Implements: [Options],
  options: {
    initialNickname: "qwebirc" + Math.ceil(Math.random() * 100000),
    initialChannels: "#guifi,#ateneu217",
    networkName: "irc.guifi.net",
    networkServices: [],
    loginRegex: null,
    appTitle: "guifi.net Web IRC",
[...]

A continuación ejecutamos ./clean.py (para estos guarretes que ejecutáis los scripts sin antes leer la documentación) y luego ./compile.py.

Con el compile.py a mi me salen una ristra de errores de java que me quedo a cuadros, pero leyendo la documentación dice que qwebirc puede funcionar perfectamente sin usar java, así que seguimos adelante sin el java.

Finalmente para arrancar el cliente web ./run.py.

Esto nos creará una conexión al puerto 9090. Este puerto se puede cambiar por el 80 o el que queramos. También es posible meter un certificado y varias cosas mas, para mas dudas ./run.py -h

En algunos sitios he visto que ponen por defecto un usuario y una contraseña, de momento he llegado a que lo hacen con un iframe, pero como este servidor ya tiene otro servicio web funcionando por el puerto 80 he arrancado el qwebirc por su puerto por defecto y he usado apache para hacer un apache proxy.

# vi /etc/apache2/sites-available/irc.marsupi.org



        ServerName irc.marsupi.org
        ServerAlias *.irc.marsupi.org

        ProxyRequests off
        
                Order deny,allow 
                Allow from all 
        

        ProxyPreserveHost On

        ProxyPass / http://irc.marsupi.org:9090/
        ProxyPassReverse / http://irc.marsupi.org:9090/


# ln -s /etc/apache2/sites-available/irc.marsupi.org /etc/apache2/sites-enabled/

He tratado por otro lado de meter el ?channels=guifi por http redirect y varias formas, para no tener que recurrir al iframe obligaría a conectar a otro puerto distinto al 80, pero se me ha resistido, así que he dejado un precioso mensaje de bienvenida:

NETWORK_NAME = "Guifi.net<br>(channel #guifi)<br>welcome to "

Solucionado: en js/qwebircinterface.js puedes definir los canales por defecto. Gracias locke! ;)

Para aquellos que os dedicáis a modificar el fichero de configuración cada dos por tres, comentar que cada vez que lo modifiquéis tendréis que ejecutar clean.py y compile.py.

Y desde aquí a disfrutar del nuevo cliente :)

Nota: para hacer que arranque al iniciarse al sistema será necesario añadir un script en /etc/init.d/ que llame a run.sh y lo ejecute al arrancar el sistema en los niveles init.

2 Responses to “qwebirc”

Charlie Vegannovembre 12th, 2010 at 23:02

Hola, gracias por el mini tutorial, en mi localhost lo tengo funcionando pero quiero acceder desde otra forma que no sea por el 9090 pero no he podido, si me pudieras explicar te lo agradecería :)

Leave a Response

« »

guy fawkes