MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

PyPersistente aplicación para crear, montar y desmontar sistemas de archivos encriptados.
Llevo unos días desarrollando una nueva aplicación que crea, monta y desmonta un sistema encriptado (mediante cryptsetup) en un archivo para el uso de homes persistentes desde metadistros USB. ¿Había dicho antes que PYTHON MOLA?

La idea es tener un archivo ( llamado secret.img ) en el directorio meta del pendrive del tamaño que queramos, (entre 64 Mb mínimo y el espacio libre disponible en el pendrive ) este archivo se monta como un dispositivo de bloques y contiene una partición en formato ext3 que es montada (si existe y la contraseña es correcta) durante el arranque de la metadistro USB, dando una ventaja muy importante que es que toda la configuración de programas que tengamos y archivos sobre los que hayamos trabajado no se perderán entre reinicios.

El sistema persistente se puede hacer de todo el sistema de archivos en vez de sólo la home, pero esto aumenta considerablemente el número de escrituras en el pendrive, por tanto limitando su vida máxima. La home también tiene muchas escrituras pero muchas de ellas son de archivos de configuración o del árbol gconf de gnome lo que se convierte en guardar configuraciones.

Bueno sin más voy a poner unas jugosas capturillas.

Ubicación en el menú de gnome, el icono es un pendrive con unas llaves encima:



Interfaz del programa nada más abrirlo:


Cuando creamos un nuevo archivo se nos preguntará por el tamaño con una sencilla barra deslizante, el tamaño está comprendido entre 64 Mb y el espacio disponible en el pendrive.


A continuación se nos pide la contraseña:



Una vez creado lo podemos montar en /mnt/secret para poder guardar cosas (o leerlas), montar y desmontar no es necesario si se arranca el USB live con la opción secret ya que el archivo se montará en /home/$USERNAME y será totalmente trasnparente al usuario.



Cuando se desmonta se liberá el dispositivo loop ocupado ( en linux hay por defecto soporte para 8 dispositivos )



Ventana "Sobre PyPersistente":



En mi lista TODO faltan cosas como limpiar un poco más el código y hacer más comprobaciones para que antes de montar o crear se compruebe que no va a fallar nada.

Tiene soporte para ser traducido (mediante archivos po) y está programado en pygtk + glade lo que hace que ocupe muy poco.

El código está diponible en el svn: pypersistent svn trunk

El nombre PyPersistente viene de PYthon + Persistente, creo que no tiene ningún misterio...

No se si había dicho ya que PYTHON MOLA.




Usa python
Siguiendo el consejo del sabio Javier Santana, me he puesto a familiarizarme con python unido con interfaces gráficas GTK.

Como lo del hola mundo era algo sencillo he decidido darle tres vueltas de tuerca.

He estado trabajando en un pequeño programa que consiste en leer de una base de datos un conjunto de actividades poder hacer búsquedas y luego mostrar una descripción y una foro de la actividad. Todo esto está pensado para JClic pero es válido (cambiando alguna cosilla) para cualquier otro proyecto.

Este programa lo he bautizado como JClicBrowser (navegador de JClic) y es básicamente un interfaz en glade y un archivo jclic_browser.py que carga la interfaz y crea las señales para los controles. La base de datos seleccionada es sqlite por ser muy sencillo su uso y no necesitar servidor. El código es bastante mejorable y seguramente tenga que pensar en partirlo ern varios archivos (clases) si lo voy a ahcer un poco más grande. Tiene soporte para gettext para poder ser traducido de manera sencilla.

Todavía faltan algunas cosillas pero ya tiene buen aspecto y es totalmente usable.

Capturillas:









En resumen, me queda muy buen sabor de boca de python, contando que hace 10 días no tenía ni idea y aunque hoy sigo sin tener mucha, entre google el manual de pygtk y algún ejemplo que he encontrado por ahí he conseguido que el programa haga lo que quiero.

Cosas que me faltan:

* Generar un xml en la home de los usuarios seleccionados (ver captura 2)
* No perder las casillas de selección cuando se hacen otrras búsquedas. (al borrar el model del treeview principal)
* Descargar tanto las actividades (zip) como las imágenes desde la interfaz gráfica, ahora lo hacen unos scripts en bash (que se me da un pelín mejor).
* Regenerar la base de datos de actividades de manera automática.
* Hacer más y mejores filtros ya que por ejemplo "español" "Español" es lo mismo.
* Algo que se me queda en el tintero, seguro.