diff --git a/TODO.org b/TODO.org index 7d4a58d..8da88e8 100644 --- a/TODO.org +++ b/TODO.org @@ -5,24 +5,10 @@ you are welcome to send patches to jaromil@dyne.org * Release 1.0 :90%: -** [#A] fix operation without DISPLAY (over SSH) :hellekin: -** TODO [#A] SLAM tomb and kill all applications using it +** TODO [#C] make one single status handle more tombs +** TODO [#C] decorate creation wizard with ASCII art - using lsof and fuser(1) we can do that easily - - we should ask user confirmation when closing a tomb if to slam - - tomb-askpass will become tomb-ask managing such user interaction, - using libassuan and pinentry from the gpg project. - -** [#A] incremental backup system using bup :jaromil: - - tombs are modifed only where needed so file changes are local to - the file segment where data is stored. duplicity handles this using - gpg for backup sets and rdiff for incremental storage. its more - stable than bup at this moment. - -** TODO [#B] remove gnome dependencies from tomb core +** DONE [#B] remove gnome dependencies from tomb core :jaromil: gksu is deeply connected to gnome in all its packages. actually libgksu2-dev is and that doesn't helps. @@ -35,10 +21,16 @@ you are welcome to send patches to jaromil@dyne.org to sudo and provide it an interface to ask the password graphically via pinentry -** TODO [#C] make one single status handle more tombs -** TODO [#C] decorate creation wizard with ASCII art +** DONE [#B] SLAM tomb and kill all applications using it :anathema: + using lsof and fuser(1) we can do that easily + we should ask user confirmation when closing a tomb if to slam + + tomb-askpass will become tomb-ask managing such user interaction, + using libassuan and pinentry from the gpg project. + +** DONE [#B] fix operation without DISPLAY (over SSH) :hellekin: ** DONE [#A] steganography to store tomb key :jaromil: steghide can hide keys in JPG, BMP, WAV or AU files it also takes diff --git a/doc/tomb.1 b/doc/tomb.1 index 255ed35..76964c3 100644 --- a/doc/tomb.1 +++ b/doc/tomb.1 @@ -48,6 +48,14 @@ a \fIsecond argument\fR is given it will indicate the \fImountpoint\fR where the tomb should be made accessible, if not then the tomb is mounted in a directory named after the filename and inside /media. +.B +.IP "list" + +List all the tombs found open, including information about the time +they were opened and the hooks that they mounted. If the \fIfirst +argument\fR is present, then shows only the tomb named that way or +returns an error if its not found. + .B .IP "close" Closes a currently open tomb. When \fIan argument\fR is specified, it diff --git a/src/tomb b/src/tomb index e44af69..4916f52 100755 --- a/src/tomb +++ b/src/tomb @@ -21,19 +21,21 @@ # Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. VERSION=1.0 -DATE=Feb/2011 +DATE=May/2011 TOMBEXEC=$0 TOMBOPENEXEC="tomb-open" STEGHIDE=1 # PATH=/usr/bin:/usr/sbin:/bin:/sbin +autoload colors; colors + # standard output message routines # it's always useful to wrap them, in case we change behaviour later -notice() { if ! [ $QUIET ]; then echo "[*] $1" >&2; fi } -act() { if ! [ $QUIET ]; then echo " . $1" >&2; fi } -error() { if ! [ $QUIET ]; then echo "[!] $1" >&2; fi } -func() { if [ $DEBUG ]; then echo "[D] $1" >&2; fi } +notice() { if ! [ $QUIET ]; then print "$fg_bold[green][*]$fg_no_bold[white] $1" >&2; fi } +act() { if ! [ $QUIET ]; then print "$fg_bold[white] . $fg_no_bold[white] $1" >&2; fi } +error() { if ! [ $QUIET ]; then print "$fg[red][!]$fg[white] $1" >&2; fi } +func() { if [ $DEBUG ]; then print "$fg[blue][D]$fg[white] $1" >&2; fi } check_bin() { @@ -215,6 +217,7 @@ Commands: create create a new tomb FILE and its keys open open an existing tomb FILE on PLACE + list list all open tombs or the one called FILE close close the open tomb called FILE (or all) slam close tomb FILE and kill all pids using it bury hide a tomb key FILE inside a jpeg PLACE @@ -809,11 +812,11 @@ list_tombs() { if ! [ $mounted_tombs ]; then if [ $1 ]; then - notice "There seems to be no open tomb engraved as [${1}]" + error "There seems to be no open tomb engraved as [${1}]" else - notice "I can't see any open tomb, may they all rest in peace." + error "I can't see any open tomb, may they all rest in peace." fi - return + exit 1 fi @@ -827,23 +830,23 @@ list_tombs() { tombsince=`date --date=@${mapper[(ws:.:)3]} +%c` # breaking up such strings is good for translation - echo -n $tombname - echo -n " open on " - echo -n $tombmount - echo -n " using " - echo -n "$tombfs $tombfsopts" - echo -n " since " - echo $tombsince + print -n "$fg[green]$tombname" + print -n "$fg[white] open on " + print -n "$fg_bold[white]$tombmount" + print -n "$fg_no_bold[white] using " + print -n "$fg_bold[white]$tombfs $tombfsopts" + print -n "$fg_no_bold[white] since " + print "$fg_bold[white]$tombsince$fg_no_bold[white]" # now check hooks mtomb=`sed 's:\/:\\\/:g' <<< $tombmount` mounted_hooks=`mount | awk "/^$mtomb/"' {print $1 ";" $3}'` for h in ${(f)mounted_hooks}; do - echo -n $tombname - echo -n " hooks " - echo -n `basename ${h[(ws:;:)1]}` - echo -n " on " - echo ${h[(ws:;:)2]} + print -n "$fg[green]$tombname" + print -n "$fg_no_bold[white] hooks " + print -n "$fg_bold[white]`basename ${h[(ws:;:)1]}`" + print -n "$fg_no_bold[white] on " + print "$fg_bold[white]${h[(ws:;:)2]}$fg_no_bold[white]" done done } @@ -990,6 +993,7 @@ main () { close) check_priv ; umount_tomb ${CMD2} ;; slam) check_priv ; SLAM=1; umount_tomb ${CMD2} ;; list) list_tombs ${CMD2} ;; + help) usage ;; bury) if [ "$STEGHIDE" = 0 ]; then error "steghide not installed. Cannot bury your key" return 1