martes, diciembre 2

Problema compilando Ruby/openSSL en CentOS 3.1

Intentando compilar Ruby-1.8.6 para una instalacion antigua de CentOS, concretamente una 3.1 me encuentro con el problema de que no es capaz de darle soporte SSL.Mirando dentro de ruby-1.86/ext/openssl el mkmf.log veo que el problema viene porque no encuentra la cabecera de kerberos krb5.h...pero deberia, porque si esta instalada.

/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory

Al parecer el problema viene porque algunas versiones antiguas de RedHat anteriores a la 8, tienen cambiada la ubicacion de esta libreria que en vez de estar en /usr/include/kerberos esta en /usr/kerberos/include

Para solucionarlo lo que hay que hacer es pasarle la ubicacion de la libreria al compilador.

/src/ruby-1.8.7 # CPPFLAGS=-I/usr/kerberos/include ./configure

Con esto solucionamos el problema.

viernes, octubre 24

Problemas al subir videos FLV grandes a MediaWiki

Hoy me he estado peleando con el MediaWiki porque tras haber instalado un plugin para que acepte videos FLV, cuando intentaba subir un video de mas de 2Mb,mostaraba una pantalla en blanco.

Lo primero que he hecho ha sido modificar en el php.ini las siguientes directivas:

upload_max_filesize,max_execution_time, max_input_time, memory_limit y post_max_size

Sin embargo, tras probar distintas configuraciones he acabado pensando que me sucedia un Out Of Memory al subir los archivos grandes, pero no ha sido asi.Seguidamente he seguido buscando y me he encontrado con que en los casos de archivos grandes, MediaWiki hace uso de includes/specials/SpecialUpload.php, y en el la funcion detectScript($file, $mime, $extension).

Al parecer, lo unico que pasaba es que estaba reconociendo el tipo MIME del flv como text/plaintext.Para cambiarlo he ido a /usr/share/file/magic.mime y he añadido el tipo MIME para los flv.

0    string        FLV            video/x-flv
 

sábado, septiembre 6

Problemas con iPatcher en Leopard

Problema 1) (solo ocurre en Mac Intel)

Leopard (incluso con el update 10.5.1) tiene una versión de una biblioteca que tiene solo la arquitectura PowerPC, por lo cual cuando alguna aplicación la usa se cae sin remedio. El error que van a ver es como este:

-------------------------------------
Dyld Error Message:
  Library not loaded: /usr/lib/libcrypto.0.9.dylib
  Referenced from: /Library/Frameworks/net.juniper.DSCoreServices.framework/Versions/5.5.0/net.juniper.DSCoreServices
  Reason: no suitable image found.  Did find:
    /usr/lib/libcrypto.0.9.dylib: mach-o, but wrong architecture
    /usr/lib/libcrypto.0.9.dylib: mach-o, but wrong architecture
-------------------------------------

Solución:

Abrir la terminal.app y ejecutar esta secuencia de comandos:

cd /usr/lib
sudo cp libcrypto.0.9.dylib libcrypto.0.9.dylib.old
sudo cp libssl.0.9.dylib libssl.0.9.dylib.old
sudo ln -sf libcrypto.0.9.7.dylib libcrypto.0.9.dylib
sudo ln -sf libssl.0.9.7.dylib libssl.0.9.dylib



Problema 2)

Si utilizan algún parche hecho con iPatcher en Leopard nunca funciona dando un error: SHA1 error.

Para solucionarlo hay que "Mostrar el contenido del paquete" de la app del parche, ir a la subcarpeta Contents/MacOS y sustituir el binario iPatcher por este:
http://rs206.rapidshare.com/files/66524321/iPatcher.zip

Luego de eso ejecutan el app parcheador y funciona.

Enjoy si a alguno le sirve la info.

viernes, septiembre 5

Proxy SOCKS

Para empezar, un proxy SOCKS  nos permite realizar las conexiones de cualquier servicio a traves de una maquina que realiza la tarea de servidor proxy.A partir de ese momento, es el servidor el que "da la cara" a la hora de conectar.

SSH nos ofrece la posibilidad de crear un proxy SOCKS a traves de un tunnel de una manera muy sencilla:

ssh -fN -D 9999 user@server

Con esto le estamos diciendo que haga un fork del proceso(-f) y se ejecute en segundo plano, tambien le decimos que no permita la ejecucion de comandos (-N) y por ultimo le decimos que cree el proxy socks en el puerto 9999 de localhost(-D 9999).El ultimo parametro son las credenciales para acceder al servidor ssh de la maquina remota (la que "dara la cara" por nosotros).

Las ventajas que tenemos con esto es que las comunicaciones iran siempre cifradas entre nosotros y el servidor,y las comunicaciones con el exterior se haran de la misma manera que si se hicieran desde el servidor.Obviamente, nos interesa un servidor que nos de alguna ventaja, imagina por ejemplo que donde trabajas te filtran contenidos mediante un Web Proxy, pero sin embargo, las conexiones desde el servidor no pasan por el(por politica o porque esta en otra red).En este caso, navegarias sin pasar por el proxy.Tambien te permitiria cifrar un segmento de la comunicacion.Por ultimo decir que tiene todas las desventajas de un proxy, por lo que apartir del momento de la creacion, dejas de ser reconocido como cliente y sera el servidor el que adquiera ese rol por ti.

Espero no haberlo liado demasiado.


martes, abril 29

Administracion remota de servidores X

Existen un monton de herramientas para administracion remota, sin embargo, una de las caracteristicas mas interesantes de las que dispone el entorno Linux es la lanzar las X en cualquier lugar.

Existe una manera muy sencilla de administrar el servidor server.foo.com con la aplicacion Ejemplo.bin,si este corre un servidor SSH (y este lo permite).

Se le da permisos al Host remoto con xhost:
xhost +server.foo.com

Se ejecuta un gestor de ventanas sencillo.Yo he tenido problemas al lanzar KDE desde un ordenador con dos monitores, asi que me he pasado a wmaker

ssh -fY user@server.foo.com /usr/bin/wmaker -display localhost:1

Despues puedo lanzar las aplicaciones que quiera

ssh -fY user@server.foo.com /usr/bin/Ejemplo.bin

Si nos fijamos la variable de entorno DISPLAY guardara la informacion de la sesion.
Para hacerlo mas comodo, se puede guardar en el ~/.ssh/authorized_keys del servidor nuestra llave publica y asi no tendremos que poner el password cada vez...bueno, si usas MacOS 10.4 o anterior deberas ejecutar el agente ssh y añadirle una llave.Si no se le pasa argumento cojera el .ssh/id_rsa.pub

eval $(ssh-agent)
ssh-add    

En MacOS 10.5 (Leopard) el llavero del sistema se encarga de esto.

Y aun nos podemos ahorrar algunas teclas añadiendo el usuario, host, puerto (y resto de configuraciones) en el .ssh/config

Host server.foo.com
User usuario
Port 666


lunes, marzo 10

0x0D,0A o Ruby en Windows (CR LF)

Hoy he llevado al entorno de pruebas un script que se encargaba de descargar un PDF de la AEAT a partir de una referencia y como no, al ponerlo sobre un windows me he econtrado con el tipico problema de poner algo que funciona sobre el Engendro de Redmond: No funciona.Mejor dicho, todo funcionaba, a diferencia que el PDF que se descargaba no se podia abrir.

He decidido comparar el mismo PDF ejecutando el script sobre MacOS,Linux y Windows cuando me he dado cuenta que Windows añadia un bonito 0x0D (retorno de carro) antes de cada 0x0A (fin de linea). La solucion al problema pasaba por intentar cambiar los CR/LF por LF con una funcion como esta:

def removeCR(line)
line = line[0..-3]+line[-1..-1] if line[-2]==0xD
return line
end

pero realmente, los CR/LF los metia la funcion File::print o puts...¿como solventarlo?
Al final la solucion pasa por abrir el fichero en modo w+b

file=File.new("#{filename}.pdf","wb")

Podemos leer de la clase IO la descripcion de cada uno de los modos

Mode | Meaning
-----+--------------------------------------------------------
"r" | Read-only, starts at beginning of file (default mode).
-----+--------------------------------------------------------
"r+" | Read-write, starts at beginning of file.
-----+--------------------------------------------------------
"w" | Write-only, truncates existing file
| to zero length or creates a new file for writing.
-----+--------------------------------------------------------
"w+" | Read-write, truncates existing file to zero length
| or creates a new file for reading and writing.
-----+--------------------------------------------------------
"a" | Write-only, starts at end of file if file exists,
| otherwise creates a new file for writing.
-----+--------------------------------------------------------
"a+" | Read-write, starts at end of file if file exists,
| otherwise creates a new file for reading and
| writing.
-----+--------------------------------------------------------
"b" | (DOS/Windows only) Binary file mode (may appear with
| any of the key letters listed above).

martes, marzo 4

Instalar la gema de MySQL en Leopard

LLevo toda la tarde peleandome para instalar la gema de mysql en Leopard, lo hice por ultima vez en Tiger y no hubo ningun problema, asi que lo primero que he pensado es que el problema era mio, pro despues me doy cuenta de que no, que hay mas gente con problemas.

Al final he conseguido instalar la gema poniendo
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config

Teniendo las librerias de mysql instaladas con macports, claro.

Como referencias he utilizado:
Este que le cascaba al compilar y lo arregla a lo bruto
Este que es mas bruto todavia y saca un parch
Este otro que se le ocurre la forma elegante de arreglarlo, aunque el no utiliza macports

viernes, febrero 29

El sabor de Debian en el iPhone

Leo en el blog de Jay Freeman como portar el sabor de Debian, mas concretamente de su apt , al iPhone.
Cuando entras por primera vez en la consola de esta maravillosa maquinaita de 667Mhz con 128Mb de RAM y un "monton" de gigas de disco, te crees que vas a poder conquistar el mundo.Yo personalmente lo primero que hice fue instalar un interprete de Ruby para correr Metasploit,pero cual fue mi decepcion al ver que el paquete de Ruby estaba roto.Mas adelante te vas dando cuenta de las carencias que tienen las herramientas del BSD Subsystem y al final acabas un poco decepcionado... o motivado, como Jay Freeman y decides portar el apt y sustituir el Installer.app.

Ahora es momento de leer este articulo y probar esta inciativa que considero de lo mas acertada.