A proposito di GPGKeyOnUsbDrive

Già da tempo utilizzavo il metodo descritto nella guida GPGKeyOnUsbDrive (qui la guida originale in lingua inglese) e pubblico qui di seguito le versioni migliorate (o, meglio, adattate alle mie esigenze) dei due script mount.sh e umount.sh proposti.

Il primo crea automaticamente i link alle proprie cartelle .gnupg e .ssh, dopo averne creato delle copie di backup, e l’altro ripristina lo stato originale. A voi il codice!

mount.sh

#!/bin/bash

dir=`dirname $0`
loopdev=$(sudo losetup -f)
sudo -p "Password (sudo): " modprobe cryptoloop && \
sudo modprobe dm-crypt && \
sudo modprobe aes_generic && \
sudo mkdir -p /media/encrypted && \
sudo losetup $loopdev $dir/disk.img && \
sudo cryptsetup -c aes -s 256 -h sha256 create usbkey $loopdev && \
sudo mount -t ext3 /dev/mapper/usbkey /media/encrypted && \
sudo chown -R $UID.$UID /media/encrypted/

ask_yesno () {
  REPLY=
  while [ "$REPLY" != "y" ] && [ "$REPLY" != "n" ] ; do
    echo -n "$1 "
    read -N 1
    echo
  done
  if [ "$REPLY" = "y" ]; then
    return 0
  fi
  return 1
}

backup_olddir () {
  directory="$1"
  mv "$HOME"/."$directory" "$HOME"/."$directory".BACKUP
}

create_link () {
  directory="$1"
  ln -s /media/encrypted/."$directory" "$HOME"/."$directory"
}

link_directory () {
  directory="$1"
  if [ -d "$HOME"/."$directory" ]; then
    echo "Moving ~/.$directory to ~/.$directory.BACKUP... "
    if [ -d "$HOME"/."$directory.BACKUP" ]; then
      if ask_yesno "The directory $HOME/.$directory.BACKUP already exists, overwrite? [y/n]"
      then
        rm -rf "$HOME"/."$directory".BACKUP
        backup_olddir "$directory"
        create_link "$directory"
      else
        return 1
      fi
    else
      backup_olddir "$directory"
      create_link "$directory"
    fi
  else
    create_link "$directory"
  fi
}

for dir in gnupg ssh
do
  ask_yesno "Do you want to link your private $dir keys? [y/n]" && link_directory $dir
done

umount.sh

#!/bin/bash

loopdev=$(sudo cryptsetup status usbkey | grep device | sed -e "s/ *device:[ \t]*//")

sync
sudo umount /media/encrypted
sudo cryptsetup remove usbkey
sudo losetup -d $loopdev

restore_olddir () {
  directory="$1"
  mv "$HOME"/."$directory".BACKUP "$HOME"/."$directory"
}

for directory in gnupg ssh
do
  if [ -L "$HOME"/."$directory" ] && \
     [ "`readlink ${HOME}/.${directory}`" = "/media/encrypted/.${directory}" ]
  then
    echo "Restoring ~/.${directory}"
    rm "$HOME"/."$directory"
    restore_olddir "$directory"
  fi
done

 

AGGIORNAMENTO (30/01/2012): Corretto un errore nello script mount.sh.

Lo sviluppo di Installation Report Generator, il merge di gtk2hs, Universe Contributor Application, e….

…lo studio, le lezioni, gli esami, la mia candidatura a presidente degli Stati Uniti, e… e… m’hanno fatto Papa!

Ok, mi fermo.

Rifletto, mi rilasso.

DEVO cercare di abbassare la pressione arteriosa, non DEVO dimenticarmi mai di avere solo due mani, due piedi e un numero limitato, seppur alto, di neuroni, che sarebbe il caso cercassi di preservare per quando arriverò all’età pensionabile (aurea mediocritas, il mio unico grande obiettivo): di questo passo rischio di esplodere.

Procediamo con ordine:

  1. Installation Report Generator: lo sviluppo al momento è fermo, stiamo attendendo che il pacchetto faccia il suo ingresso in universe (clicca).
  2. gtk2hs: DONE, i problemi di building dipendevano dal fatto che nella nuova versione di cairo non ci sono più funzioni che restituiscono void, ho risolto con un workaround trovato nella rete (DktrKranz, grazie!)
  3. Alla fine Luca mi ha convinto: ho deciso di intraprendere la strada che porta a MOTU: speriamo bene 🙂
  4. La documentazione in italiano di Intrepid: stiamo per pubblicarla, sarà presto raggiungibile da questo indirizzo. Questo invece è un link che dovrebbe velocizzare il caching delle nuove pagine, al fine di mettere a disposizione degli utenti un motore per la ricerca dei termini all’interno della documentazione.

Ok, posso tornare a lezione.

Scrivere un’applicazione in C con le GTK+ (Prima parte)

Quello che segue è un breve tutorial introduttivo alla programmazione in ambiente GNOME con le librerire GTK+. Benchè sia possibile scrivere applicazioni con le GTK+ in diversi linguaggi per i quali vengono forniti binding sempre aggiornati, ho scelto il C come linguaggio per gtk-foobar, l’applicazione d’esempio di questo tutorial, poiché garantisce maggiori potenza e stabilità.

Soddisfiamo le dipendenze

Prima di installare le dipendenze necessarie alla nostra nuova applicazione, è bene scegliere i nostri strumenti con grande cura: personalmente mi trovo benissimo con Anjuta IDE, un ambiente di sviluppo open source completo di tutto ciò che ci servirà in questo tutorial (e non solo). Per installarlo su Ubuntu 8.04 «Hardy Heron» è sufficiente digitare il seguente comando in una finestra di terminale:

sudo aptitude install anjuta

Ecco uno screenshot dell’ambiente di sviluppo:

Una schermata di Anjuta IDE

Continua a leggere

Ancora sull’autenticatore…

È disponibile una nuova versione, contenente vari bugfix, compreso quello riguardante la funzionalità di log-in automatico. La modifica più interessante (e più evidente) riguarda comunque l’interfaccia: niente più finestra in primo, al suo posto una simpatica icona residente traybar!

Ecco uno screenshot della nuova versione (non fate caso al timeout, era un test!):

aggiornamento_gtk-rm3wifi-authenticator

La procedura di installazione è descritta nella relativa pagina su questo blog. Per commenti e segnalazione fate riferimento alla pagina del progetto.

L’autenticatore per GNOME è su Google Code

Il codice sorgente del mio autenticatore per GNOME è disponibile su Google Code! Ecco la pagina del progetto, chiunque voglia contribuire è benvenuto!

Inoltre vorrei lanciare un appello, diretto ai ragazzi di Ubuntu-it-dev: ho necessità di un bel pacchetto per l’autenticatore, c’è qualche anima pia disposta a darmi una mano?

Link al precedente articolo.