Oct 11

python: Abyss Webserver start and stop host from CLI

Reading time: 1 – 2 minutes

Petit script en python per iniciar/parar el Abyss Webserver des de la línia de comandes. Només hem de posar la URL d’on es troba la web de la consola de l’Abyss i l’ususari i el password per entrar-hi. Com que esta fet ràpid i corrents, no es suporta el pas de paràmetres per indicar si s’ha d’engegar i/o parar el servei en cada moment. Així que si algú s’anima a afegir-hi les 4 línies de codi que hi falten que me les digui, que jo encara no domino prou el python com per fer-ho en 1s i avui ja estic cansat.

import urllib2

theurl = 'http://127.0.0.1:9999' username = 'theuser' password = 'thepass'
passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, theurl, username, password) authhandler = urllib2.HTTPBasicAuthHandler(passman) opener = urllib2.build_opener(authhandler)
data_start = "%2Fhosts%2Fhost%400%2Fstart=Start" data_stop = "%2Fhosts%2Fhost%400%2Fstop=Stop"
data = data_start
request = urllib2.Request(theurl,data) response = opener.open(request)
print response.readlines()
Oct 06

python: Generar passwords d’usuaris per l’Abyss Webserver

Reading time: < 1 minute

L’Abyss Webserver guarda en un fitxer de configuració en format XML els usuaris i passwords. Doncs bé el format en que estan enmagatzemats els passwords en el fitxer XML és:

usercode = nom_usuari + ":" + plaintext_password
encoded_password = md5(base64(usercode))

Doncs bé aquí ve el petit trick de com fer això amb python:

#!/usr/bin/env python
import md5
import base64
import re

def genera_pass_abyss(usercode): b64usercode = base64.encodestring(usercode) b64usercode = re.sub('\n','',b64usercode) hash = md5.new(b64usercode) return hash.hexdigest()
user = 'usuari1' passw = 'password1' usercode = user + ":" + passw print usercode print genera_pass_abyss(usercode)
Oct 04

Ubuntu Adding Startup Daemon/Process

Reading time: 2 – 4 minutes

Aquest és un d’aquells articles que mai sé com titular en català. Així doncs s’ha quedat en anglès. Bàsicament es tracta de documentar una miqueta les suors que em va costar saber quin carai era l’equivalent al /etc/conf.d/local.start de Gentoo en Ubuntu. De fet, al final no el vaig trobar. El que he hagut de fer és crear un fitxer a /etc/init.d i llençar-lo com un dimoni d’arrancada en els runlevels que m’interessen. De fet, aquesta solució és més neta que la que jo volia aplicar inicialment però al final he perdut una bona estona per saber-ho fer i per això he decidit documentar-ho.

El problema concret que tenia és que volia llençar el Abyss Webserver al iniciar la màquina. Concretament l’ordre per llençar-lo és:

# su usuari /opt/abyssws/abyssws -d

Doncs bé per crear el fitxer que fes aquesta crida t’has de basar en el fitxer /etc/init.d/skeleton. Skeleton usa el mateix script que en Gentoo el start-stop-daemon per fer la crida del dimoni d’Abyss. Per saber més detalls sobre com funciona aquest complert script us recomano mirar el man de la comanda.

La comanda anterior per llençar l’Abyss basada en start-stop-daemon seria així:

start-stop-daemon --start --quiet --pidfile /var/run/abyssws.pid -u usuari --exec /opt/abyssws/abyssws -- -d

Pel que fa a l’script sencer també podeu usar un generador de fitxers d’inici de dimonis que he trobat a Robert Pectol’s Ubuntu Linux Projects Website – Startup Script Generator el problema és que aquest generador és molt bàsic i no suporta el pas de paràmetres contra el start-stop-daemon. O sigui, que no podriem definir quin és l’usuari que ha de llençar el dimoni.

Després de crear l’script que llençarà el dimoni només cal afegir-lo als runlevels que ens interessin. Per exemple, si volem que estigui disponible en qualsevol runlevel podem fer:

# update-rc.d script defaults

Si el que volem és iniciar-lo l’últim (posició 99) de la seqüència d’arrancada en els runlevels 2, 3, 4 i 5 la comanda seria així:

# update-rc.d -f script start 99 2 3 4 5

Si el que no sabeu és en quin runlevel esteu treballant és tan senzill com escriure runlevel i us informarà del runlevel actual. Una petita referència de quins són els runlevels existents la podeu trobar aquí.

Oct 16

TinyGentoo i Abyss WebServer

Reading time: 2 – 2 minutes

g.png
TinyGentoo: Un petit howto de com ens podem montar una gentoo ben petitona tan pels nostres projectes embeded com per posar dins d’un DOM o un pendrive.

Parlant de coses petites no em podia oblidar parlar del Abyss Web Server un petit servidor web que vaig descobrir fa molt de temps. Malgrat podria servir per molts petits sistemes de producció el trobo l’eina perfecte per ’embedir’ dins d’un dispositiu mòbil o petit.

Algunes de les seves funcions són més que interessants com per exemple els S.O. soportats: Windows, MacOS X, Linux i FreeBSD. Suporta HTTP/1.1 i a més pot generar continguts amb temps d’execusió amb múltiples sistemes: CGI/1.1 scripts, ISAPI extensions, Server Side Includes (SSI). O sigui, que si voleu també hi podeu instal·lar un motor de PHP. Suporta pàgines d’error personalitzades, protecció per password, control d’accés per IP, anti-leeching i control d’ampla de banda. També diposa d’una interficie via web per configurar el servidor i moltíssimes més coses.

Ara bé lo dolent, la versió més completa és de pagament la versió X2, però la versió X1 és gratuïta i jo diria que és més que suficient per moltíssims projectes. Per cert, per instal·la-lo és tan senzill com descarregar-lo, descomprimir-lo i executar-lo. Connectem al port 9999 a través del navegador: http://localhost:9999 i a configurar-lo via web. Jo diria que no esta disponible el codi font :'(

Un parell de servers web molt lleugers també són: