colors! :) and documentation for tomb list

This commit is contained in:
Jaromil 2011-05-09 10:32:08 +02:00
parent 3ef6398019
commit 052549a4f9
3 changed files with 43 additions and 39 deletions

View File

@ -5,24 +5,10 @@ you are welcome to send patches to jaromil@dyne.org
* Release 1.0 :90%: * Release 1.0 :90%:
** [#A] fix operation without DISPLAY (over SSH) :hellekin: ** TODO [#C] make one single status handle more tombs
** TODO [#A] SLAM tomb and kill all applications using it ** TODO [#C] decorate creation wizard with ASCII art
using lsof and fuser(1) we can do that easily ** DONE [#B] remove gnome dependencies from tomb core :jaromil:
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
gksu is deeply connected to gnome in all its packages. actually gksu is deeply connected to gnome in all its packages. actually
libgksu2-dev is and that doesn't helps. 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 to sudo and provide it an interface to ask the password graphically
via pinentry via pinentry
** TODO [#C] make one single status handle more tombs ** DONE [#B] SLAM tomb and kill all applications using it :anathema:
** 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.
** DONE [#B] fix operation without DISPLAY (over SSH) :hellekin:
** DONE [#A] steganography to store tomb key :jaromil: ** DONE [#A] steganography to store tomb key :jaromil:
steghide can hide keys in JPG, BMP, WAV or AU files it also takes steghide can hide keys in JPG, BMP, WAV or AU files it also takes

View File

@ -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 where the tomb should be made accessible, if not then the tomb is
mounted in a directory named after the filename and inside /media. 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 .B
.IP "close" .IP "close"
Closes a currently open tomb. When \fIan argument\fR is specified, it Closes a currently open tomb. When \fIan argument\fR is specified, it

View File

@ -21,19 +21,21 @@
# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
VERSION=1.0 VERSION=1.0
DATE=Feb/2011 DATE=May/2011
TOMBEXEC=$0 TOMBEXEC=$0
TOMBOPENEXEC="tomb-open" TOMBOPENEXEC="tomb-open"
STEGHIDE=1 STEGHIDE=1
# PATH=/usr/bin:/usr/sbin:/bin:/sbin # PATH=/usr/bin:/usr/sbin:/bin:/sbin
autoload colors; colors
# standard output message routines # standard output message routines
# it's always useful to wrap them, in case we change behaviour later # it's always useful to wrap them, in case we change behaviour later
notice() { if ! [ $QUIET ]; then echo "[*] $1" >&2; fi } notice() { if ! [ $QUIET ]; then print "$fg_bold[green][*]$fg_no_bold[white] $1" >&2; fi }
act() { if ! [ $QUIET ]; then echo " . $1" >&2; fi } act() { if ! [ $QUIET ]; then print "$fg_bold[white] . $fg_no_bold[white] $1" >&2; fi }
error() { if ! [ $QUIET ]; then echo "[!] $1" >&2; fi } error() { if ! [ $QUIET ]; then print "$fg[red][!]$fg[white] $1" >&2; fi }
func() { if [ $DEBUG ]; then echo "[D] $1" >&2; fi } func() { if [ $DEBUG ]; then print "$fg[blue][D]$fg[white] $1" >&2; fi }
check_bin() { check_bin() {
@ -215,6 +217,7 @@ Commands:
create create a new tomb FILE and its keys create create a new tomb FILE and its keys
open open an existing tomb FILE on PLACE 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) close close the open tomb called FILE (or all)
slam close tomb FILE and kill all pids using it slam close tomb FILE and kill all pids using it
bury hide a tomb key FILE inside a jpeg PLACE bury hide a tomb key FILE inside a jpeg PLACE
@ -809,11 +812,11 @@ list_tombs() {
if ! [ $mounted_tombs ]; then if ! [ $mounted_tombs ]; then
if [ $1 ]; 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 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 fi
return exit 1
fi fi
@ -827,23 +830,23 @@ list_tombs() {
tombsince=`date --date=@${mapper[(ws:.:)3]} +%c` tombsince=`date --date=@${mapper[(ws:.:)3]} +%c`
# breaking up such strings is good for translation # breaking up such strings is good for translation
echo -n $tombname print -n "$fg[green]$tombname"
echo -n " open on " print -n "$fg[white] open on "
echo -n $tombmount print -n "$fg_bold[white]$tombmount"
echo -n " using " print -n "$fg_no_bold[white] using "
echo -n "$tombfs $tombfsopts" print -n "$fg_bold[white]$tombfs $tombfsopts"
echo -n " since " print -n "$fg_no_bold[white] since "
echo $tombsince print "$fg_bold[white]$tombsince$fg_no_bold[white]"
# now check hooks # now check hooks
mtomb=`sed 's:\/:\\\/:g' <<< $tombmount` mtomb=`sed 's:\/:\\\/:g' <<< $tombmount`
mounted_hooks=`mount | awk "/^$mtomb/"' {print $1 ";" $3}'` mounted_hooks=`mount | awk "/^$mtomb/"' {print $1 ";" $3}'`
for h in ${(f)mounted_hooks}; do for h in ${(f)mounted_hooks}; do
echo -n $tombname print -n "$fg[green]$tombname"
echo -n " hooks " print -n "$fg_no_bold[white] hooks "
echo -n `basename ${h[(ws:;:)1]}` print -n "$fg_bold[white]`basename ${h[(ws:;:)1]}`"
echo -n " on " print -n "$fg_no_bold[white] on "
echo ${h[(ws:;:)2]} print "$fg_bold[white]${h[(ws:;:)2]}$fg_no_bold[white]"
done done
done done
} }
@ -990,6 +993,7 @@ main () {
close) check_priv ; umount_tomb ${CMD2} ;; close) check_priv ; umount_tomb ${CMD2} ;;
slam) check_priv ; SLAM=1; umount_tomb ${CMD2} ;; slam) check_priv ; SLAM=1; umount_tomb ${CMD2} ;;
list) list_tombs ${CMD2} ;; list) list_tombs ${CMD2} ;;
help) usage ;;
bury) if [ "$STEGHIDE" = 0 ]; then bury) if [ "$STEGHIDE" = 0 ]; then
error "steghide not installed. Cannot bury your key" error "steghide not installed. Cannot bury your key"
return 1 return 1