2012-12-29 17:33:25 +0000

Backport de mod_authnz_ldap de apache 2.4 a 2.2

Lo primero decir que ha costado dios y ayuda.

Como pro-tip, la siguiente vez que queráis compilar algo, mirad si tiene algo especial en el linkado. este modulo necesita -lldap y -llber -llber (2 veces o así lo dice apr-config --with-ldap).

Otro inconveniente que me he encontrado es que han hecho un cambio brutal en los modulos auth, básicamente porque ya distinguen entre authn y authz (authentication y authorization respectivamente). Y eso en el código se nota demasiado.

No tengo tiempo para documentar el proceso, pero puedo decir pestes de todo tipo sobre ubuntu. Odio que no tengan una rama experimental.

2012-12-14 01:16:18 +0000

Install bugzilla in ubuntu 12.04


Now will document the process to install bugzilla.

I will follow several docs, which I wont put here because I am lazy atm.

First of all, we create our folder, named consultas (I am spanish as many know and I dont want to be all the time doing transcriptions/translations).

mkdir -p proyectos/consultas
cd proyectos/consultas

MariaDB system configuration and apache2 install

Then we start to configure the system to install mariadb (I don't like anymore mysql), we go here https://downloads.mariadb.org/mariadb/repositories/ and we just copy what they output for us.

# MariaDB 5.5 repository list - created 2012-12-13 18:13 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb http://mirror2.hs-esslingen.de/mariadb/repo/5.5/ubuntu precise main
deb-src http://mirror2.hs-esslingen.de/mariadb/repo/5.5/ubuntu precise main

And we put it in a new file in /etc/apt/sources.list/mariadb.list

Now we run a command to add the key as we are told in (https://kb.askmonty.org/en/installing-mariadb-deb-files/):

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

And now we are prepared to install mariadb:

sudo apt-get update && sudo apt-get install mariadb-server apache2 -y
#We enter here the root password...

Installing bugzilla

I didn't have very clear in which order must be done, but as I like seeing my results, I will make the installation before.

So, we download bugzilla, untar it, and modify to fix it to be able to connect to gmail:

wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.2.4.tar.gz
tar xf bugzilla-4.2.4.tar.gz
cd bugzilla-4.2.4
vim Bugzilla/Mailer.pm #Edit line 166 to be: if($method eq "SMTP" || $method eq "Gmail"){

And now, we have to check about the perl modules, etc.

./checksetup.pl --check-modules
sudo cpan CPAN YAML Email::Send::Gmail
sudo apt-get install libgd2-xpm-dev libapache2-mod-perl-dev libapache2-mod-auth-mysql patchutils# this is for GD, mod_perl and mysql. patchutils is for later use in configuring bugzilla
sudo a2enmod headers expires # mod_headers and mod_expires dependencies have to be enabled
sudo perl install-modules.pl --all #I don't care of this, just want bugzilla get installed!

In theory, you should have everything installed. Sample output here:

./checksetup.pl --check-modules
* This is Bugzilla 4.2.4 on perl 5.14.2
* Running on Linux 3.2.0-34-generic #53-Ubuntu SMP Thu Nov 15 10:48:16 UTC 2012

Checking perl modules...
Checking for CGI.pm (v3.51) ok: found v3.62
Checking for Digest-SHA (any) ok: found v5.61
Checking for TimeDate (v2.21) ok: found v2.24
Checking for DateTime (v0.28) ok: found v0.78
Checking for DateTime-TimeZone (v0.71) ok: found v1.56
Checking for DBI (v1.614) ok: found v1.622
Checking for Template-Toolkit (v2.22) ok: found v2.24
Checking for Email-Send (v2.00) ok: found v2.198
Checking for Email-MIME (v1.904) ok: found v1.911
Checking for URI (v1.37) ok: found v1.59
Checking for List-MoreUtils (v0.22) ok: found v0.33
Checking for Math-Random-ISAAC (v1.0.1) ok: found v1.004

Checking available perl DBD modules...
Checking for DBD-Pg (v1.45) not found
Checking for DBD-mysql (v4.001) ok: found v4.020
Checking for DBD-SQLite (v1.29) ok: found v1.37
Checking for DBD-Oracle (v1.19) not found

The following Perl modules are optional:
Checking for GD (v1.20) ok: found v2.46
Checking for Chart (v2.1) ok: found v2.4.6
Checking for Template-GD (any) ok: found v1.56
Checking for GDTextUtil (any) ok: found v0.86
Checking for GDGraph (any) ok: found v1.44
Checking for MIME-tools (v5.406) ok: found v5.503
Checking for libwww-perl (any) ok: found v6.03
Checking for XML-Twig (any) ok: found v3.42
Checking for PatchReader (v0.9.6) ok: found v0.9.6
Checking for perl-ldap (any) ok: found v0.51
Checking for Authen-SASL (any) ok: found v2.16
Checking for RadiusPerl (any) ok: found v0.22
Checking for SOAP-Lite (v0.712) ok: found v0.715
Checking for JSON-RPC (any) ok: found v1.03
Checking for JSON-XS (v2.0) ok: found v2.33
Checking for Test-Taint (any) ok: found v1.06
Checking for HTML-Parser (v3.67) ok: found v3.69
Checking for HTML-Scrubber (any) ok: found v0.09
Checking for Encode (v2.21) ok: found v2.42_01
Checking for Encode-Detect (any) ok: found v1.01
Checking for Email-MIME-Attachment-Stripper (any) ok: found v1.316
Checking for Email-Reply (any) ok: found v1.202
Checking for TheSchwartz (any) ok: found v1.10
Checking for Daemon-Generic (any) ok: found v0.82
Checking for mod_perl (v1.999022) ok: found v2.000005
Checking for Apache-SizeLimit (v0.96) ok: found v0.96
Checking for mod_headers (any) ok
Checking for mod_expires (any) ok
Checking for mod_env (any) ok

So, with all this in OK state, we now continue to configure mariadb and apache.

Configure apache for use of ssl always

Now, I want to have everything under ssl. The first thing is to create all the redirects from 80 to 443, and set up virtualhosts, etc. For that, I create a file named delegación in /etc/apache2/sites-available with this content:

<VirtualHost *:80>
ServerName u102508.ehu.es
Redirect permanent / https://u102508.ehu.es/

<VirtualHost *:443>
ServerName u102508.ehu.es
# Normal config here
DocumentRoot /var/www/

# SSL configuration here
SSLEngine On
SSLCertificateFile /etc/apache2/private/delegacion.crt
SSLCertificateKeyFile /etc/apache2/private/delegacion.key


Create the certificate, move it to a private folder, I also disable default site, add a ServerName directive to the ports.conf file, and disable the NameVirtualHost *:80 in there also.

openssl req -x509 -nodes -days 10000 -newkey rsa:8192 -keyout delegacion.key -out delegacion.crt
sudo mkdir -p /etc/apache2/private
sudo mv delegacion* /etc/apache2/private
sudo chown -R www-data:www-data /etc/apache2/private
sudo chmod 500 -R /etc/apache2/private
sudo a2enmod ssl
sudo a2ensite delegacion
sudo a2dissite default
sudo apachectl restart

And now in theory everything should work correctly. Now we will add bugzilla's dir etc. to the apache conf, and also move the dir to where we will work:

sudo mkdir -p /smb/web # Here we host the files
cd ..
sudo mv bugzilla-4.2.4 /smb/web/tracker
sudo chown -R administrador:www-data /smb/web #administrador is root user

Also we modify /etc/apache/sites-available/delegacion to add the directory entry...

Alias /tracker "/smb/web/tracker/"
<Directory /smb/web/tracker/>
AddHandler cgi-script .cgi
Options +Indexes +ExecCGI +FollowSymLinks
Allow from all
DirectoryIndex index.cgi
AllowOverride Limit FileInfo Indexes

And it is in theory complete. Now we have to configure the mariadb user/password and modify /smb/web/tracker/localconfig

MariaDB user creation

Now, we create the user bugs, and give him access:

mysql -uroot -e "GRANT ALL ON bugs.* TO 'bugs'@'localhost' IDENTIFIED BY 'aspdofihapson1234o8y2e3';" -p

just enter root password and work done. Remember password ('aspdofihapson1234o...') because that is what we have to put in the localconfig file.

So now edit localconfig, you will just need to change:

  • $webservergroup="www-data"
  • $db_pass (to the pass we used)
  • $db_sock = "/var/run/mysqld/mysqld.sock"
  • $interdiffbin="/usr/bin/interdiff"

and now run sudo ./checksetup.pl, and ingress al what you need.

And now, we are in theory done with the shell.

Configure Bugzilla and Gmail

Now we enter in the web page (for me u102508.ehu.es) and go straigth to configure email:

  1. mailfrom: gmail address <whatever>@gmail.com
  2. smtpserver: smtp.gmail.com
  3. smtp_username: gmail address
  4. smtp_password: gmail password

And click on save. Now go straight to LDAP:

  1. LDAPserver: ldaps://ldaps.lg.ehu.es/ in my case
  2. LDAPstarttls: off (for me)
  3. LDAPBaseDN: ou=people,dc=ehu,dc=es
  4. Didnt touch LDAPuidattribute nor LDAPmailattribute
  5. LDAPFilter: in my case, I just want the ones in my faculty => (SambaDomainName=345)

And click on save. Now go to user authentication:

  1. user_verify_class: put LDAP the first (just move ldap with the up arrow, leave the other like they are)
  2. createemailregexp: set to blank ( =>  ) ((XD))

And its all done. Now you may have profit modifying all bugzilla to fix your needs




2012-12-13 16:40:12 +0000

Reverse engineering the authentication of your University

Well, In order to use ldap in my university, I have to learn how ldap works.

I first read LDAP intro, http://www.davidpashley.com/articles/ldap-basics.html

And then, went to http://www.openldap.org/doc/admin23/

There, in the quick start guide, I could get this command:

ldapsearch -h adm.uni.com -x -b '' -s base '(objectclass=*)' namingContexts

I got the output:

# extended LDIF
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts 
namingContexts: DC=adm,DC=uni,DC=com
namingContexts: CN=Configuration,DC=adm,DC=uni,DC=com
namingContexts: CN=Schema,CN=Configuration,DC=adm,DC=uni,DC=com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1

So now, I continue reading...

Well, at the end, I found that I had to ask for uid=<username>,ou=people,dc=uni,dc=com to the server ldaps.lg.uni.com

There I can check a user exists, but I can't auth him yet...

Ok, I found the way. With this line I can query for the user's info

ldapsearch -x -H ldaps://ldaps.lg.uni.com/ -b ou=people,dc=uni,dc=com uid=jdomingo002

If I add this args:

-D uid=jdomingo002,ou=people,dc=uni,dc=com -W

I would try to identify as jdomingo002. (prompting for password)

2012-11-29 22:40:46 +0000

How to use nvidia and nouveau in same debian/ubuntu and don't get nut

Buenas a los que sea que me leáis,

Estoy escribiendo esto para que le sirva como una referencia a cualquiera, lo traduciría a ingles... de hecho igual lo escribo en ingles.

I am going to explain how we can get nvidia driver and nouveau driver working in the same debian installation. I needed this because in the actual testing kernel (wheezy 3.2) my graphic card isn't supported, and the nvidia driver has a bug when trying to start maya.

Whatever you are here for, this is how:

We all start with running nouveau driver, if you have very bad luck like I had, your system after installation doesn't even boot. I switched to nomodeset run going to the grub menu entry (on boot) and adding in the linux line at the end (after quiet)


after that, I was able to boot. With that, I followed http://wiki.debian.org/NvidiaGraphicsDrivers  in the debian way installation. After that, and getting nut on how to create a xorg.conf file:

nvidia-xconfig -o xorg.conf

Yes, i know it was easy, but I started to read about a lot of solutions, and messed up. The idea is that after having the xorg.conf created, and in /etc/X11, I got it running.

I just rebooted and it worked.

Then, I found the bug that it didn't allow me to open maya files (SIGSEGV in their libGl1.so dll)

So I decided to go for a newer kernel (v3.6[1])  which also I had patched for work reasons, and compiled it. Well, you all must get aware that if you make a menuconfig, you have to be aware of enabling graphic drivers. I mean, go to graphic drivers, and remember to enable them:

Graphics support --->
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
<M>   Nouveau (nVidia) cards
[*]     Support for backlight control #optional
[*]     Build in Nouveau's debugfs support #optional but if you encounter errors, its easier like this to send bugs
{*} Support for frame buffer devices  --->
<M>   nVidia Framebuffer Support # I saw this and enabled it just in case
[*]     Enable DDC Support #same
[*]     Lots of debug output #same
[*]     Support for backlight control #same


I forgot to enable the first section (the real important in which you enable the driver nouveau) because I didn't think about the meaning of  Direct Rendering Manager, neither knew it was important, etc. So the case is I compiled and installed, and now I had the problem:

How to switch between one and the other? the installation following the Debian wiki didn't allow me to use nouveau if I didn't uninstall nvidia one. So I started to research about it, asked a lot in #debian #debian-next etc. And babilen told me that the only thing that said xorg to use nvidia, was that xorg.conf file.

So from there, the solution was simple, to switch from nvidia to nouveau:

mv /etc/X11/xorg.conf /etc/X11/xorg.conf.nvidia
vim /etc/modprobe.d/nvidia-kernel-common.conf # here comment all the lines and add a line that blacklists nvidia ( blacklist nvidia )
update-alternatives --config glx #choose mesa

And now, you can reboot into nouveau. To change from nouveau to nvidia, mv the xorg.conf, unblacklist nvidia and blacklist nouveau (what you commented) and restore the other lines you commentes, and finally use update-alternatives command to use nvidia one. And reboot.

I hope it helps anyone, just to not keep installing/uninstalling the nvidia driver.

Cheers to anyone that really needs, and if you need help, I can help you, contact me on twitter (@txomon), or find my mail somewhere :D tip: <domain>@<domain>.com =) ]

[1]: if I say a kernel is v3.6, its from linus' repo, if I say it is 3.6, it is from linux-stable repo (they are different)

2012-01-11 19:59:13 +0000


He hecho muchas cosas hoy. Empezando ayer a las 23:50 después de llegar de casa de nerea (si tarda 10 mins ¬¬ ella sabe a que me refiero).

Empecé a investigar sobre el algoritmo aho-corasick, que según tenía entendido, era un modelo de Luis para el algoritmo. Aunque por lo que me he enterado más tarde, solo interesa la problemática del acceso a memoria compartida que utiliza por debajo el algoritmo. Por lo tanto, puedo directamente, hacer un testcase que haga eso en el Adviser y a correr. De todos modos, me he estudiado el algoritmo, ya que mi PFC y lo de Luis no es lo mismo, y he ideado unos cuantos métodos para hacer el algoritmo más rápido, aunque aún hay que probar mis varias teorias.

Sea lo que sea, aún tengo que poner las cosas en Github, evidentemente, si hago algo va a ser sobre GPL, por que para mí el mundo libre... Ha sido de gran ayuda.

He pasado toda la mañana haciendo cosas sobre el algoritmo, hasta después de comer. Que por cierto, les he dado la caca con mis ideas en gran medida. Y luego me he puesto a hacer cosas que tenía pendientes, por ejemplo, de la banda. He empezado a crear el repositorio del aho-corasick, pero ya seguiré. Lo cierto es que ahora hecho la vista hacia atrás y no se que he hecho.

Mirando mi explorador, que si que sabe lo que he hecho, he estado hasta las 15:30 buscando cosas sobre aho-corasick, después he actualizado, a raíz de un código que he encontrado sobre este algoritmo (en verdad a su licencia adjunta), mis conocimientos sobre licencias de lo que haga.

Después, el chrome dice que he estado en IRC, hablando sobre una alternativa a OpenWRT, FreeWRT, despué he asistido a una reunion de ubuntu qa (sí, estoy metido ahí). Y luego por último, me he puesto a mirar cosas sobre automatización, desde IronAHK, luego Jenkins (mi gran coloso), hasta llegar a la automatización de Instalación de sistemas operativos, entonces, he empezado a caer en el fondo de un pozo que me llevaba a sistemas cada vez mejores hasta tocar fondo, Orchestra.

Por ello, al final, he tenido que mandarle un correo al del CIDIR, Jesus, para comentarle lo de Orchestra y Armando por todo lo que he descubierto.

Buenas Armando,


Aclaro que no espero respuesta vía correo electrónico.


He asistido via IRC a la reunión de QA de ubuntu, y ha salido el tema de los tests de las isos, la automatización, y eso me ha recordad algunas cosas que se y que nos podrían venir bien. Antes de mandarte un mail con mis ideas, me he puesto a buscar y a refrescar el mundo sobre la distribución de sistemas operativos, instalación automatizada, y todas esas cosas de grandes empresas.


Y bueno, también ya de paso, he vuelto a darme con uno de mis grandes colosos que todavía me quedan por derrotar (hay muchos). Jenkins [1]. Es una plataforma para lanza pruebas, y que está muy muy especializada. Puede que cuando se hizo la arquitectura de pruebas no existiera, pero este programa es una pasada (y como he dicho, un coloso).


Esto lo he ido viendo a lo largo de mi corta vida de informática (4~5 años) en varios sitios, y funciona genial, al menos si lo sabes configurar, por que yo lo he intentado (también decir que no me puse en serio), y fracase.


Pero visto que me tengo que aprender la arquitectura de pruebas y como funciona, porque no, aprender a utilizar este programa? Al fin y al cabo, el Adviser en verdad no necesita toda la test-arch, de hecho, con solo el adviser me basto para hacer pruebas de captura (al menos hasta lo que se yo). Es cierto que necesita el Manager, los demonios y todas esas cosas...


Si puedo conseguir todo de un plumazo con Jenkins, por que no intentarlo? no creo que se tarde más de un día en aprender a dominarlo, y la opción de automatizar pruebas, desde que pongo una nueva versión en el repositorio hasta la ejecución del adviser, con resultados de pruebas y logs es demasiado tentadora para mí. Dicho esto, en mi tiempo libre, estudiaré como hacer esto.


Ya que estaba con esto, pues he seguido mirando, y he hablando con uno de QA de xubuntu, me ha comentado que se estaba rompiendo la cabeza con el jenkins que no lo entendía etc. (Debe ser mayor ya por lo que ha dicho) y eso me ha recordado que en los laboratorios de QA de ubuntu, tienen algún tipo de sistema para automatizar las pruebas de ISO, lo que significa, que tienen la capacidad de hasta instalar sistemas automatizadamente.


Y eso me ha llevado a algo sorprendente. Mucho más allá de la replicación de sistemas, Ubuntu, con su intención de introducirse en el mundo de los servidores, de los de verdad, ha desarrollado el tambien llamado The Ubuntu Orchestra Project, que para el común de los mortales se conoce como Orchestra. La carta de presentación[2] no deja lugar a dudas, es un pedazo de proyecto de tres pares. Lo mejor de todo es que está en desarrollo activo, que es software libre, y que me da ideas sobre lo que te he dicho de hacerle la vida más facil a Edu (y al resto de paso también) sobre la instalación de sistemas automatizada.


Pues bueno, esos son mis avances de hoy.


Javier Domingo


[1] Jenkins: https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

[2] Orchestra: http://blog.dustinkirkland.com/2011/08/formal-introduction-to-ubuntu-orchestra.html

Y bueno, eso ha sido todo por hoy, marcho a donde Nerea,


2011-10-25 11:10:44 +0000


Bueno, ahora estoy intentando encontrar algún tipo de interfaz para una base de datos. La idea es que sea facil de configurar. Habia empezado a hacer la interfaz en PHP y tenia intencion de hacer o integrarla de alguna manera con AJAX, JQuery, o tecnologias similares que me permitan hacerlo un poco más manejable para que no esté actualizando la página todo el rato.
No se me ocurre una forma facil de hacerlo. Podría desarrollar una aplicacion que consistiera en algo parecido a lo que existe en Vfront o en dadabik... Ya vere.. Comento (escribo) con lo que sea.

2011-10-13 10:19:40 +0000


Bueno, al final he migrado a mariadb... Y se me ha petado todo, ya que mysql esta en la 5.5.3 y mariadb en la 5.3.

No tenía nada muy importante gracias a dios, y no se si me molestaré en poner todo otra vez como antes, ya que de todos modos, estoy utilizando de test, y el resto de cosas las tengo en el server oficial (txomon.com).

Ahora marcho para clase a otra clase de bases de datos que está genial. Se aprende mucho la verdad. A ver que nos cuenta!

2011-10-02 19:15:06 +0000

Git vs SVN

Pues como se puede apreciar en el titulo, si, esto es una comparativa. Lo primero es decir que git mola más, y lo segundo, que tengo que hacer una comparativa real de los dos para que sea un PFC xD.

En estos momentos estoy intalando redmine. Y se antoja chungo. Sobretodo por que lo tengo que hacer en Hostgator. Además, tengo que aprender para que demonios sirve el ruby on rails y el ruby gems. Creo que son como administradores de modulos. Pero no me convence mucho esto de ruby on rails.

De todos modos, hay tutoriales y esas cosas.

Despues de ojear un poco con google, he encontrado que RoR es para hacer apps webs facil facil y mucho mas simple que con el resto de lenguajes. Pues nada, a seguir instalando redmine.

Añadir a esto que me da una especie de... no se, mal rollete el redmine. Parece mucho y poco a la vez... ya veremos que tal sale.

2011-09-27 10:55:02 +0000

Hablando del PFC

Bueno, pues he hablado con Armando, y me ha dicho que es posible que se pueda hacer un PFC con todo lo de la gestión documental, etc. No tengo del todo claro como, pero creo conseguiré algo relacionado con el kernel o si no, gestión documental, que es lo que me mola.

Desde luego, voy a utilizar git, aunque sea en un mal arreglo con el git svn... pero por lo menos, sabré utilizarlo. A ver si lo que me ha pedido armando le convence...


2011-09-26 21:43:48 +0000

Casi acabado

Bueno, pues parece que ya casi he acabado el sistema de administración del control de versiones.

Es muy muy malo, pero es una forma eficaz de poder empezar a trabajar, ya que hay otras prioridades.

Lo que hace este script en python, es primero comprobar todos los grupos que existen en: /etc/groups y mirar cuales tienes svn en su nombre, y empiezan a partir del 9999  (el gid). Despues mira los directorios en la raiz que se halla especificado (mejor que sea en / y no por ahí suelto, por que los grupos se crean con los path completos.

Después de encontrar las diferencias, se dispone a corregir. Como es mas fácil crear una carpeta que un grupo, pues mira todas las carpetas que hay, y crea los grupos correspondientes. Si luego ve que hay un grupo que sobra, pregunta para borrarlo.

Una vez visto que es consistente, se dispone a poner los permisos a todas las carpetas. Como no me quería andar con milongas, he hecho que cada vez que se ejecute, ponga en orden todas los chown de las carpetas y que cambie los permisos a g+s de tal manera que todo aquel que haga algo en el repositorio, imaginando que la prevención del umask ha sido salteada, pueda ser arreglada para el resto. Eso me falta por comprobar.

Saber si de verdad funciona todo este garigay. Por que en verdad os digo que no hay nadie con más ganas de acabar de programar algo para un control de versiones que no me gusta.

Por cierto, los repositorios se crean con svn-admin create y el servidor es svnserve -t o eso espero que sea.

De todos modos, me voy a sobar que en 6 horas me levanto.

Resumen del día más o menos hecho.

Bueno, en verdad falta añadir que he estado haciendo problemas de TC y que son horribles y tengo mogollón de dudas, por lo que mañana intentaré encontrar a Luis y pedirle ayuda (Luis: un tio muy majo que da una asignatura que te deja majo, pero interesante eso si)