itDelete mountpoint when tomb is closed (fix #149) - tomb - the crypto undertaker Err parazyd.org 70 hgit clone git://parazyd.org/tomb.git URL:git://parazyd.org/tomb.git parazyd.org 70 1Log /git/tomb/log.gph parazyd.org 70 1Files /git/tomb/files.gph parazyd.org 70 1Refs /git/tomb/refs.gph parazyd.org 70 1README /git/tomb/file/README.md.gph parazyd.org 70 1LICENSE /git/tomb/file/COPYING.gph parazyd.org 70 i--- Err parazyd.org 70 1commit eada0538c9c3bc67c376163f470d8bca7848e42e /git/tomb/commit/eada0538c9c3bc67c376163f470d8bca7848e42e.gph parazyd.org 70 1parent bfa77cc5934cf8b5ac43bd2f92dc5bd6a80c8e1c /git/tomb/commit/bfa77cc5934cf8b5ac43bd2f92dc5bd6a80c8e1c.gph parazyd.org 70 hAuthor: Jaromil URL:mailto:jaromil@dyne.org parazyd.org 70 iDate: Fri, 26 Jun 2015 11:47:19 +0200 Err parazyd.org 70 i Err parazyd.org 70 iDelete mountpoint when tomb is closed (fix #149) Err parazyd.org 70 i Err parazyd.org 70 ittwo bugs were left behind by the last refactoring, one about Err parazyd.org 70 iconsistency of the mountpoint naming (now using $TOMBNAME everywhere, Err parazyd.org 70 iwithout the added .tomb extension as per #180), the other about a Err parazyd.org 70 imissing _sudo to prefix rmdir commands. Err parazyd.org 70 i Err parazyd.org 70 iTest suite has been updated accordingly. Err parazyd.org 70 i Err parazyd.org 70 iThis fix introduces a mandatory condition for the next update: all Err parazyd.org 70 ittombs must be closed when upgrading the tomb script, else it will not Err parazyd.org 70 ibe able to correctly close them. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M extras/test/runtests | 24 ++++++++++++------------ Err parazyd.org 70 i M tomb | 19 ++++++++++++------- Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 24 insertions(+), 19 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/extras/test/runtests b/extras/test/runtests /git/tomb/file/extras/test/runtests.gph parazyd.org 70 it@@ -84,15 +84,15 @@ test-tomb-create() { Err parazyd.org 70 i Err parazyd.org 70 i test-bind-hooks() { Err parazyd.org 70 i notice "Testing bind hooks" Err parazyd.org 70 i- tt list test Err parazyd.org 70 i- [[ $? = 0 ]] || { Err parazyd.org 70 i- tt --ignore-swap --unsafe --tomb-pwd ${dummypass} \ Err parazyd.org 70 i- open /tmp/test.tomb -k /tmp/test.tomb.key } Err parazyd.org 70 i+ Err parazyd.org 70 i+ tt --ignore-swap --unsafe --tomb-pwd ${dummypass} \ Err parazyd.org 70 i+ open /tmp/test.tomb -k /tmp/test.tomb.key Err parazyd.org 70 i+ Err parazyd.org 70 i rnd=$RANDOM Err parazyd.org 70 i bindtest="dyne-tomb-bind-test-$rnd" Err parazyd.org 70 i- echo $rnd > /media/test.tomb/$bindtest Err parazyd.org 70 i- rm -f /media/test.tomb/bind-hooks Err parazyd.org 70 i- echo "$bindtest $bindtest" > /media/test.tomb/bind-hooks Err parazyd.org 70 i+ echo $rnd > /media/test/$bindtest Err parazyd.org 70 i+ rm -f /media/test/bind-hooks Err parazyd.org 70 i+ echo "$bindtest $bindtest" > /media/test/bind-hooks Err parazyd.org 70 i touch $HOME/$bindtest Err parazyd.org 70 i tt close test Err parazyd.org 70 i tt -k /tmp/test.tomb.key --unsafe --tomb-pwd ${dummypass} open /tmp/test.tomb Err parazyd.org 70 it@@ -104,7 +104,7 @@ test-bind-hooks() { Err parazyd.org 70 i else Err parazyd.org 70 i error "Bind hook on file reports incongruence" Err parazyd.org 70 i fi Err parazyd.org 70 i- rm -f "/media/test.tomb/$bindtest" Err parazyd.org 70 i+ rm -f "/media/test/$bindtest" Err parazyd.org 70 i tt close test Err parazyd.org 70 i # Remove test file in HOME Err parazyd.org 70 i rm -f "$HOME/$bindtest" Err parazyd.org 70 it@@ -186,10 +186,10 @@ notice "Generating content for file integrity test" Err parazyd.org 70 i Err parazyd.org 70 i tt -k /tmp/test.tomb.key --unsafe --tomb-pwd ${dummypass} open /tmp/test.tomb Err parazyd.org 70 i Err parazyd.org 70 i-tt dig -s 10 /media/test.tomb/datacheck.raw Err parazyd.org 70 i+tt dig -s 10 /media/test/datacheck.raw Err parazyd.org 70 i Err parazyd.org 70 i-crc="sha256 /media/test.tomb/datacheck.raw" Err parazyd.org 70 i-echo "$crc" > /media/test.tomb/datacheck.sha Err parazyd.org 70 i+crc="sha256 /media/test/datacheck.raw" Err parazyd.org 70 i+echo "$crc" > /media/test/datacheck.sha Err parazyd.org 70 i Err parazyd.org 70 i tt --unsafe close test Err parazyd.org 70 i Err parazyd.org 70 it@@ -208,7 +208,7 @@ tt -k /tmp/test.tomb.key --unsafe --tomb-pwd ${dummypass} open /tmp/test.tomb Err parazyd.org 70 i Err parazyd.org 70 i { test $? = 0 } && { Err parazyd.org 70 i Err parazyd.org 70 i- crc2="sha256 /media/test.tomb/datacheck.raw" Err parazyd.org 70 i+ crc2="sha256 /media/test/datacheck.raw" Err parazyd.org 70 i Err parazyd.org 70 i { test "$crc" = "$crc2" } && { results+=(chksum SUCCESS) } Err parazyd.org 70 i Err parazyd.org 70 1diff --git a/tomb b/tomb /git/tomb/file/tomb.gph parazyd.org 70 it@@ -230,6 +230,7 @@ _whoami() { Err parazyd.org 70 i Err parazyd.org 70 i # Define sepulture's plot (setup tomb-related arguments) Err parazyd.org 70 i # Synopsis: _plot /path/to/the.tomb Err parazyd.org 70 i+# Set TOMB{PATH,DIR,FILE,NAME} Err parazyd.org 70 i _plot() { Err parazyd.org 70 i Err parazyd.org 70 i # We set global variables Err parazyd.org 70 it@@ -1620,6 +1621,8 @@ change_tomb_key() { Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i _check_swap Err parazyd.org 70 i+ Err parazyd.org 70 i+ # this also calls _plot() Err parazyd.org 70 i is_valid_tomb $tombpath Err parazyd.org 70 i Err parazyd.org 70 i lo_mount $TOMBPATH Err parazyd.org 70 it@@ -1704,20 +1707,21 @@ mount_tomb() { Err parazyd.org 70 i Err parazyd.org 70 i _check_swap Err parazyd.org 70 i Err parazyd.org 70 i+ # this also calls _plot() Err parazyd.org 70 i is_valid_tomb $tombpath Err parazyd.org 70 i Err parazyd.org 70 i _load_key # Try loading new key from option -k and set TOMBKEYFILE Err parazyd.org 70 i Err parazyd.org 70 i tombmount="$2" Err parazyd.org 70 i [[ "$tombmount" = "" ]] && { Err parazyd.org 70 i- tombmount=/media/$TOMBFILE Err parazyd.org 70 i+ tombmount=/media/$TOMBNAME Err parazyd.org 70 i [[ -d /media ]] || { # no /media found, adopting /run/media/$USER (udisk2 compat) Err parazyd.org 70 i- tombmount=/run/media/$_USER/$TOMBFILE Err parazyd.org 70 i+ tombmount=/run/media/$_USER/$TOMBNAME Err parazyd.org 70 i } Err parazyd.org 70 i _message "Mountpoint not specified, using default: ::1 mount point::" $tombmount Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i- _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBFILE $tombmount Err parazyd.org 70 i+ _success "Opening ::1 tomb file:: on ::2 mount point::" $TOMBNAME $tombmount Err parazyd.org 70 i Err parazyd.org 70 i lo_mount $TOMBPATH Err parazyd.org 70 i nstloop=`lo_new` Err parazyd.org 70 it@@ -1799,7 +1803,7 @@ mount_tomb() { Err parazyd.org 70 i [[ $oldmountopts != $MOUNTOPTS ]] && \ Err parazyd.org 70 i _warning "Are mount options '::1 mount options::' valid?" $MOUNTOPTS Err parazyd.org 70 i # TODO: move cleanup to _endgame() Err parazyd.org 70 i- [[ -d $tombmount ]] && rmdir $tombmount Err parazyd.org 70 i+ [[ -d $tombmount ]] && _sudo rmdir $tombmount Err parazyd.org 70 i [[ -e /dev/mapper/$mapper ]] && _sudo cryptsetup luksClose $mapper Err parazyd.org 70 i # The loop is taken care of in _endgame() Err parazyd.org 70 i _failure "Cannot mount ::1 tomb name::" $TOMBNAME Err parazyd.org 70 it@@ -2275,7 +2279,8 @@ resize_tomb() { Err parazyd.org 70 i [[ -z "$newtombsize" ]] && { Err parazyd.org 70 i _failure "Aborting operations: new size was not specified, use -s" } Err parazyd.org 70 i Err parazyd.org 70 i- is_valid_tomb $tombpath # Set TOMB{PATH,DIR,FILE,NAME} Err parazyd.org 70 i+ # this also calls _plot() Err parazyd.org 70 i+ is_valid_tomb $tombpath Err parazyd.org 70 i Err parazyd.org 70 i _load_key # Try loading new key from option -k and set TOMBKEYFILE Err parazyd.org 70 i Err parazyd.org 70 it@@ -2414,8 +2419,8 @@ umount_tomb() { Err parazyd.org 70 i [[ $? = 0 ]] || { _failure "Tomb is busy, cannot umount!" } Err parazyd.org 70 i Err parazyd.org 70 i # If we used a default mountpoint and is now empty, delete it Err parazyd.org 70 i- [[ "$tombmount" -regex-match "[/run]?/media[/$_USER]?/$tombname.tomb" ]] && { Err parazyd.org 70 i- rmdir $tombmount } Err parazyd.org 70 i+ [[ "$tombmount" -regex-match "[/run]?/media[/$_USER]?/$tombname" ]] && { Err parazyd.org 70 i+ _sudo rmdir $tombmount } Err parazyd.org 70 i Err parazyd.org 70 i _sudo cryptsetup luksClose $mapper Err parazyd.org 70 i [[ $? == 0 ]] || { Err parazyd.org 70 .