ittrailings, final uninstall - coffin - secure lan file storage on a device Err parazyd.org 70 hgit clone git://parazyd.org/coffin.git URL:git://parazyd.org/coffin.git parazyd.org 70 1Log /git/coffin/log.gph parazyd.org 70 1Files /git/coffin/files.gph parazyd.org 70 1Refs /git/coffin/refs.gph parazyd.org 70 1Submodules /git/coffin/file/.gitmodules.gph parazyd.org 70 1README /git/coffin/file/README.md.gph parazyd.org 70 1LICENSE /git/coffin/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit 684ad7d8211acbe52c4f37b3bc6fb501e0888340 /git/coffin/commit/684ad7d8211acbe52c4f37b3bc6fb501e0888340.gph parazyd.org 70 1parent 2489bcfa1b54399971404925ef9e3d379133e5cb /git/coffin/commit/2489bcfa1b54399971404925ef9e3d379133e5cb.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Tue, 29 Mar 2016 21:53:28 +0200 Err parazyd.org 70 i Err parazyd.org 70 ittrailings, final uninstall Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M README.md | 16 ++++++++-------- Err parazyd.org 70 i M conf/README | 5 ++--- Err parazyd.org 70 i M conf/config.sh | 19 +++++++++++++------ Err parazyd.org 70 i M src/coffinrc | 2 +- Err parazyd.org 70 i M src/zlibs/config | 4 ++-- Err parazyd.org 70 i M src/zlibs/features | 8 ++++---- Err parazyd.org 70 i M src/zlibs/hooks | 18 +++++++++--------- Err parazyd.org 70 i M src/zlibs/keyfiles | 12 ++++++------ Err parazyd.org 70 i M src/zlibs/ttab | 8 ++++---- Err parazyd.org 70 i Err parazyd.org 70 i9 files changed, 49 insertions(+), 43 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/README.md b/README.md /git/coffin/file/README.md.gph parazyd.org 70 it@@ -6,7 +6,7 @@ Secure dedicated LAN file storage made easy Err parazyd.org 70 i A coffin is a dedicated device you can use to keep your files on a safe Err parazyd.org 70 i and encrypted place. The core workflow of the coffin is having a key Err parazyd.org 70 i that is autodetected by the device once plugged in. Once detected, the Err parazyd.org 70 i-coffin will open the tomb that corresponds to that same key. Err parazyd.org 70 i+coffin will open the tomb that corresponds to that same key. Err parazyd.org 70 i Now, you are able to access your files on the LAN. Err parazyd.org 70 i Once you plug in your key again, that same tomb will be closed and your Err parazyd.org 70 i files are once again unreadable. Err parazyd.org 70 it@@ -19,7 +19,7 @@ depending on the distro you are using: Err parazyd.org 70 i pinentry-curses pwgen gettext haveged sudo Err parazyd.org 70 i ``` Err parazyd.org 70 i Err parazyd.org 70 i-Clone this repository to the device you will be using. Err parazyd.org 70 i+Clone this repository to the device you will be using. Err parazyd.org 70 i Err parazyd.org 70 i Run `make` in order to compile tomb's KDF modules. Err parazyd.org 70 i Err parazyd.org 70 it@@ -32,9 +32,9 @@ device. Err parazyd.org 70 i Err parazyd.org 70 i ## Usage Err parazyd.org 70 i After installation, you will end up with an initscript in Err parazyd.org 70 i-/etc/init.d/coffin Err parazyd.org 70 i+/etc/init.d/coffin Err parazyd.org 70 i You can start coffin by issuing `/etc/init.d/coffin start` and the watch Err parazyd.org 70 i-script will begin to watch your /dev for new devices. Err parazyd.org 70 i+script will begin to watch your /dev for new devices. Err parazyd.org 70 i Err parazyd.org 70 i ### Hooks Err parazyd.org 70 i Hooks are oneliners written on your USB key which will trigger actions Err parazyd.org 70 it@@ -50,7 +50,7 @@ works. Err parazyd.org 70 i action:userName:tombName:options Err parazyd.org 70 i ``` Err parazyd.org 70 i So far there are only two actions (create, delete) but more are to be Err parazyd.org 70 i-added in the future. Err parazyd.org 70 i+added in the future. Err parazyd.org 70 i To create a hook, add one or more to the `.coffin` directory in a file Err parazyd.org 70 i called `hook`. Separate each hook with a newline. Err parazyd.org 70 i ##### Create hook Err parazyd.org 70 it@@ -59,16 +59,16 @@ create:userName:tombName:tombSize:features Err parazyd.org 70 i create:undertaker:myAwesomeCrypt:50:webdav:sshfs Err parazyd.org 70 i ``` Err parazyd.org 70 i So, to create a tomb, you will have to choose a username, a tomb name Err parazyd.org 70 i-and the size of your choice (in MiB). This is the bare minimum. Err parazyd.org 70 i+and the size of your choice (in MiB). This is the bare minimum. Err parazyd.org 70 i There are also features like `webdav` or `sshfs` that can be used to Err parazyd.org 70 i-access your files. Err parazyd.org 70 i+access your files. Err parazyd.org 70 i Currently implemented features: Err parazyd.org 70 i * WebDAV Err parazyd.org 70 i * SSHFS Err parazyd.org 70 i Err parazyd.org 70 i Important note is that if you use any of the features listed above you Err parazyd.org 70 i will have to add according files as well. For more info, please consult Err parazyd.org 70 i-the README file inside the `conf/` directory. Err parazyd.org 70 i+the README file inside the `conf/` directory. Err parazyd.org 70 i Err parazyd.org 70 i ##### Delete hook Err parazyd.org 70 i ``` Err parazyd.org 70 1diff --git a/conf/README b/conf/README /git/coffin/file/conf/README.gph parazyd.org 70 it@@ -1,8 +1,7 @@ Err parazyd.org 70 i Here's some more info on the features Err parazyd.org 70 i Err parazyd.org 70 i # WebDAV Err parazyd.org 70 i-To generate a WebDAV login entry by yourself, issue the Err parazyd.org 70 i-following command: Err parazyd.org 70 i+To generate a WebDAV login entry by yourself, issue the following command: Err parazyd.org 70 i Err parazyd.org 70 i #################### Err parazyd.org 70 i `echo -n "yourUsername:WebDAV:" \ Err parazyd.org 70 it@@ -11,7 +10,7 @@ following command: Err parazyd.org 70 i | awk '{print $1}'` Err parazyd.org 70 i #################### Err parazyd.org 70 i Err parazyd.org 70 i-Add it to the 'davpasswd' file which is located in Err parazyd.org 70 i+Add it to the 'davpasswd' file which is located in Err parazyd.org 70 i /etc/apache2/DAV/davpasswd on your coffin box. Or add it now here, Err parazyd.org 70 i before installation. Err parazyd.org 70 i Err parazyd.org 70 1diff --git a/conf/config.sh b/conf/config.sh /git/coffin/file/conf/config.sh.gph parazyd.org 70 it@@ -8,7 +8,7 @@ Err parazyd.org 70 i [[ $1 == "checkdep" ]] && { Err parazyd.org 70 i missing=() Err parazyd.org 70 i which apache2 >/dev/null || missing+=(apache) Err parazyd.org 70 i- which cryptsetup >/dev/null || missing+=(cryptsetup) Err parazyd.org 70 i+ which cryptsetup >/dev/null || missing+=(cryptsetup) Err parazyd.org 70 i which inotifywatch >/dev/null || missing+=(inotify-tools) Err parazyd.org 70 i which wipe >/dev/null || missing+=(wipe) Err parazyd.org 70 i which pinentry >/dev/null || missing+=(pinentry) Err parazyd.org 70 it@@ -43,6 +43,7 @@ edit-sudo() { Err parazyd.org 70 i print "%coffin `hostname`=(ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo) Err parazyd.org 70 i [[ $? = 0 ]] && print "Added coffin group to sudoers" Err parazyd.org 70 i elif [[ $1 == "remove" ]]; then Err parazyd.org 70 i+ # FIXME: doesn't write to sudoers Err parazyd.org 70 i tmp=`sed '/^%coffin / d' /etc/sudoers` Err parazyd.org 70 i print $tmp | (EDITOR="tee" visudo) Err parazyd.org 70 i [[ $? = 0 ]] && print "Removed coffin group from sudoers" Err parazyd.org 70 it@@ -51,7 +52,7 @@ edit-sudo() { Err parazyd.org 70 i Err parazyd.org 70 i # because all cool software has snowmen in them Err parazyd.org 70 i [[ $1 == "snowman" ]] && { Err parazyd.org 70 i- pushd `pwd`/conf Err parazyd.org 70 i+ pushd `pwd`/conf Err parazyd.org 70 i Err parazyd.org 70 i groupadd coffin && print "created coffin group" Err parazyd.org 70 i gpasswd -a www-data coffin && print "added www-data to coffin group" Err parazyd.org 70 it@@ -61,7 +62,7 @@ edit-sudo() { Err parazyd.org 70 i openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ Err parazyd.org 70 i -keyout coffin.key -out coffin.pem Err parazyd.org 70 i [[ $? = 0 ]] || { Err parazyd.org 70 i- print "Failed generating openssl certificate." Err parazyd.org 70 i+ print "Failed generating openssl certificate." Err parazyd.org 70 i return 1 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 it@@ -83,7 +84,7 @@ edit-sudo() { Err parazyd.org 70 i for i in $apachemods; do Err parazyd.org 70 i a2enmod $i Err parazyd.org 70 i done Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i # [[ -f /etc/apache2/sites-enabled/000-default.conf ]] && a2dissite 000-default.conf Err parazyd.org 70 i [[ -f /etc/apache2/sites-enabled/coffindav.conf ]] || a2ensite coffindav.conf Err parazyd.org 70 i Err parazyd.org 70 it@@ -100,7 +101,7 @@ edit-sudo() { Err parazyd.org 70 i Err parazyd.org 70 i print "######################################" Err parazyd.org 70 i fprint=`openssl x509 -noout -in coffin.pem -fingerprint \ Err parazyd.org 70 i- | awk -F\= '{print $2}'` Err parazyd.org 70 i+ | awk -F\= '{print $2}'` Err parazyd.org 70 i print "The fingerptint of your SSL certificate is: $fprint" Err parazyd.org 70 i print "Compare it and/or set is as trusted when you connect to coffin." Err parazyd.org 70 i print "######################################" Err parazyd.org 70 it@@ -124,13 +125,19 @@ edit-sudo() { Err parazyd.org 70 i rm -rv /home/graveyard/DAV Err parazyd.org 70 i rm -v /etc/apache2/sites-available/coffindav.conf Err parazyd.org 70 i Err parazyd.org 70 i+ #apachemods=(dav dav_fs dav_lock ssl) Err parazyd.org 70 i+ #print "Enabling Apache modules..." Err parazyd.org 70 i+ #for i in $apachemods; do Err parazyd.org 70 i+ # a2enmod $i Err parazyd.org 70 i+ #done Err parazyd.org 70 i+ Err parazyd.org 70 i /etc/init.d/apache2 restart Err parazyd.org 70 i } Err parazyd.org 70 i sed -i '/^DAVLockDB / d' /etc/apache2/apache2.conf Err parazyd.org 70 i [[ $? = 0 ]] && print "removed entry from apache2.conf" Err parazyd.org 70 i Err parazyd.org 70 i # groupdel coffin Err parazyd.org 70 i- edit-sudo remove Err parazyd.org 70 i+ edit-sudo remove Err parazyd.org 70 i Err parazyd.org 70 i # rm -v /etc/init.d/coffin Err parazyd.org 70 i rm -rv /etc/ssl/coffin Err parazyd.org 70 1diff --git a/src/coffinrc b/src/coffinrc /git/coffin/file/src/coffinrc.gph parazyd.org 70 it@@ -3,7 +3,7 @@ Err parazyd.org 70 i # Careful! Err parazyd.org 70 i Err parazyd.org 70 i # Directory where you keep all your tombs and data Err parazyd.org 70 i-# Reminder that the default is already installed, Err parazyd.org 70 i+# Reminder that the default is already installed, Err parazyd.org 70 i # and the directory group owner must be 'coffin' Err parazyd.org 70 i # with permissions 770 Err parazyd.org 70 i GRAVEYARD /home/graveyard Err parazyd.org 70 1diff --git a/src/zlibs/config b/src/zlibs/config /git/coffin/file/src/zlibs/config.gph parazyd.org 70 it@@ -4,11 +4,11 @@ parse-config() { Err parazyd.org 70 i act "Found config file. Parsing..." Err parazyd.org 70 i Err parazyd.org 70 i ttmp=`awk ' Err parazyd.org 70 i- /^#/ { next } Err parazyd.org 70 i+ /^#/ { next } Err parazyd.org 70 i /^GRAVEYARD / { printf "GRAVEYARD=\"%s\";", $2 } Err parazyd.org 70 i /^KEYMOUNT / { printf "KEYMOUNT=\"%s\";", $2 } Err parazyd.org 70 i /^TOMB / { printf "TOMB=\"%s\";", $2 } Err parazyd.org 70 i- ' "$R/.coffinrc"` Err parazyd.org 70 i+ ' "$R/.coffinrc"` Err parazyd.org 70 i { test $? = 0 } || { Err parazyd.org 70 i die "Error parsing config file." Err parazyd.org 70 i return 1 Err parazyd.org 70 1diff --git a/src/zlibs/features b/src/zlibs/features /git/coffin/file/src/zlibs/features.gph parazyd.org 70 it@@ -10,7 +10,7 @@ create-webdav-hook() { Err parazyd.org 70 i Err parazyd.org 70 i [[ -f $COFFINDOT/davinfo ]] && { Err parazyd.org 70 i cat $COFFINDOT/davinfo >> /etc/apache2/davpasswd Err parazyd.org 70 i- [[ $? = 0 ]] && { Err parazyd.org 70 i+ [[ $? = 0 ]] && { Err parazyd.org 70 i rm $COFFINDOT/davinfo Err parazyd.org 70 i gpasswd -a www-data $undertaker Err parazyd.org 70 i act "Added new WebDAV user" Err parazyd.org 70 it@@ -29,7 +29,7 @@ create-webdav-hook() { Err parazyd.org 70 i fi Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-delete-webdav-hook() { Err parazyd.org 70 i+delete-webdav-hook() { Err parazyd.org 70 i fn delete-webdav-hook $* Err parazyd.org 70 i req=(tombid) Err parazyd.org 70 i tombid="$1" Err parazyd.org 70 it@@ -53,7 +53,7 @@ create-sshfs-hook() { Err parazyd.org 70 i cat $COFFINDOT/$tombid.pub >> /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i chown -R $undertaker:$undertaker /home/$undertaker/.ssh Err parazyd.org 70 i chmod 700 /home/$undertaker/.ssh && chmod 600 /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i [[ $? = 0 ]] && act "Wrote to authorized_keys" \ Err parazyd.org 70 i && act "Done setting up SSH" Err parazyd.org 70 i Err parazyd.org 70 it@@ -63,7 +63,7 @@ create-sshfs-hook() { Err parazyd.org 70 i fi Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-delete-sshfs-hook() { Err parazyd.org 70 i+delete-sshfs-hook() { Err parazyd.org 70 i fn delete-sshfs-hook $* Err parazyd.org 70 i req=(undertaker tombid) Err parazyd.org 70 i undertaker="$1" Err parazyd.org 70 1diff --git a/src/zlibs/hooks b/src/zlibs/hooks /git/coffin/file/src/zlibs/hooks.gph parazyd.org 70 it@@ -41,7 +41,7 @@ create-new-tomb() { Err parazyd.org 70 i Err parazyd.org 70 i $(id $undertaker &>/dev/null) Err parazyd.org 70 i [[ $? = 0 ]] || { Err parazyd.org 70 i- warn "User $undertaker not found. Creating..." Err parazyd.org 70 i+ warn "User $undertaker not found. Creating..." Err parazyd.org 70 i useradd -G coffin -m -s /bin/nologin $undertaker Err parazyd.org 70 i act "Created user $undertaker" Err parazyd.org 70 i } Err parazyd.org 70 it@@ -51,21 +51,21 @@ create-new-tomb() { Err parazyd.org 70 i sudo -u $undertaker $TOMB dig -s $tombsize $GRAVEYARD/$tombid.tomb || \ Err parazyd.org 70 i (die "Digging went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i clean-failed-hook) Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i sudo -u $undertaker $TOMB forge $GRAVEYARD/$tombid.key \ Err parazyd.org 70 i --unsafe \ Err parazyd.org 70 i --tomb-pwd "$keypass" || \ Err parazyd.org 70 i (die "Forging key went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i- clean-failed-hook) Err parazyd.org 70 i+ clean-failed-hook) Err parazyd.org 70 i Err parazyd.org 70 i sudo -u $undertaker $TOMB lock $GRAVEYARD/$tombid.tomb \ Err parazyd.org 70 i -k $GRAVEYARD/$tombid.key \ Err parazyd.org 70 i --unsafe \ Err parazyd.org 70 i --tomb-pwd "$keypass" || \ Err parazyd.org 70 i (die "Locking tomb went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i- clean-failed-hook) Err parazyd.org 70 i+ clean-failed-hook) Err parazyd.org 70 i Err parazyd.org 70 i- xxx "Moving your keyfile to your USB key..." Err parazyd.org 70 i+ xxx "Moving your keyfile to your USB key..." Err parazyd.org 70 i mv $GRAVEYARD/$tombid.key $COFFINDOT/ && \ Err parazyd.org 70 i chown $undertaker:$undertaker $COFFINDOT/$tombid.key && \ Err parazyd.org 70 i xxx "Moved and chowned keyfile" Err parazyd.org 70 it@@ -91,24 +91,24 @@ delete-tomb() { Err parazyd.org 70 i tombid=${entry[(ws@:@)2]} && xxx "Tombid: $tombid" Err parazyd.org 70 i Err parazyd.org 70 i [[ $(id $undertaker &>/dev/null) ]] || { Err parazyd.org 70 i- die "User $undertaker not found. Exiting..." Err parazyd.org 70 i+ die "User $undertaker not found. Exiting..." Err parazyd.org 70 i return 1 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i [[ -f $GRAVEYARD/$tombid.tomb ]] || { Err parazyd.org 70 i- die "Tomb $tombid.tomb not found. Exiting..." Err parazyd.org 70 i+ die "Tomb $tombid.tomb not found. Exiting..." Err parazyd.org 70 i return 1 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i [[ -f $COFFINDOT/$tombid.key ]] || { Err parazyd.org 70 i- die "Key of $tombid not found. Exiting..." Err parazyd.org 70 i+ die "Key of $tombid not found. Exiting..." Err parazyd.org 70 i return 1 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i compare-key Err parazyd.org 70 i [[ $? = 0 ]] && { Err parazyd.org 70 i sudo -u $undertaker $TOMB slam $tombid Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i grep -v ${undertaker}:${tombid} $TTAB > $TTAB.tmp Err parazyd.org 70 i [[ $? = 0 ]] && mv $TTAB.tmp $TTAB && \ Err parazyd.org 70 i act "Removed from ttab" Err parazyd.org 70 1diff --git a/src/zlibs/keyfiles b/src/zlibs/keyfiles /git/coffin/file/src/zlibs/keyfiles.gph parazyd.org 70 it@@ -4,7 +4,7 @@ hash-key() { Err parazyd.org 70 i fn hash-key Err parazyd.org 70 i vars+=(keyhash) Err parazyd.org 70 i keyhash="" Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i keyhash=${$(sha256sum $COFFINDOT/$tombid.key)[(ws: :)1]} Err parazyd.org 70 i xxx "sha256 of keyfile: $keyhash" Err parazyd.org 70 i } Err parazyd.org 70 it@@ -32,15 +32,15 @@ compare-key() { Err parazyd.org 70 i # /-iit5N)KWG%%8%%%%W8%ZWM(8YZvD)XN(@. [ \]!/GXW[ Err parazyd.org 70 i # / ))G8\NMN%W%%%%%%%%%%8KK@WZKYK*ZG5KMi,- vi[NZGM[ Err parazyd.org 70 i # i\!(44Y8K%8%%%**~YZYZ@%%%%%4KWZ/PKN)ZDZ7 c=//WZK%! This is a euphemism for how my code is structured. Err parazyd.org 70 i-# ,\v\YtMZW8W%%f`,`.t/bNZZK%%W%%ZXb*K(K5DZ -c\\/KM48 Err parazyd.org 70 i-# -|c5PbM4DDW%f v./c\[tMY8W%PMW%D@KW)Gbf -/(=ZZKM8[ If you're reading this, you have probably been put Err parazyd.org 70 i+# ,\v\YtMZW8W%%f`,`.t/bNZZK%%W%%ZXb*K(K5DZ -c\\/KM48 Err parazyd.org 70 i+# -|c5PbM4DDW%f v./c\[tMY8W%PMW%D@KW)Gbf -/(=ZZKM8[ If you're reading this, you have probably been put Err parazyd.org 70 i # 2(N8YXWK85@K -'c|K4/KKK%@ V%@@WD8e~ .//ct)8ZK%8` in charge of maintaining this program. Err parazyd.org 70 i-# =)b%]Nd)@KM[ !'\cG!iWYK%%| !M@KZf -c\))ZDKW%` Err parazyd.org 70 i+# =)b%]Nd)@KM[ !'\cG!iWYK%%| !M@KZf -c\))ZDKW%` Err parazyd.org 70 i # YYKWZGNM4/Pb '-VscP4]b@W% 'Mf` -L\///KM(%W! I am so, so sorry for you. Err parazyd.org 70 i-# !KKW4ZK/W7)Z. '/cttbY)DKW% -` .',\v)K(5KW%%f Err parazyd.org 70 i+# !KKW4ZK/W7)Z. '/cttbY)DKW% -` .',\v)K(5KW%%f Err parazyd.org 70 i # 'W)KWKZZg)Z2/,!/L(-DYYb54% ,,`, -\-/v(((KK5WW%f God speed. Err parazyd.org 70 i # \M4NDDKZZ(e!/\7vNTtZd)8\Mi!\-,-/i-v((tKNGN%W%% Err parazyd.org 70 i-# 'M8M88(Zd))///((|D\tDY\\KK-`/-i(=)KtNNN@W%%%@%[ Err parazyd.org 70 i+# 'M8M88(Zd))///((|D\tDY\\KK-`/-i(=)KtNNN@W%%%@%[ Err parazyd.org 70 i # !8%@KW5KKN4///s(\Pd!ROBY8/=2(/4ZdzKD%K%%%M8@%% Err parazyd.org 70 i # '%%%W%dGNtPK(c\/2\[Z(ttNYZ2NZW8W8K%%%%YKM%M%%. Err parazyd.org 70 i # *%%W%GW5@/%!e]_tZdY()v)ZXMZW%W%%%*5Y]K%ZK%8[ Err parazyd.org 70 1diff --git a/src/zlibs/ttab b/src/zlibs/ttab /git/coffin/file/src/zlibs/ttab.gph parazyd.org 70 it@@ -11,14 +11,14 @@ ttab-magic() { Err parazyd.org 70 i act "Found line $line..." Err parazyd.org 70 i Err parazyd.org 70 i [[ ${entry[(ws@:@)3]} == "true" ]] && { Err parazyd.org 70 i- act "Working on tomb from line $line" Err parazyd.org 70 i+ act "Working on tomb from line $line" Err parazyd.org 70 i Err parazyd.org 70 i undertaker=${entry[(ws@:@)1]} && xxx "Undertaker: $undertaker" Err parazyd.org 70 i tombid=${entry[(ws@:@)2]} && xxx "Tombid: $tombid" Err parazyd.org 70 i Err parazyd.org 70 i compare-key Err parazyd.org 70 i [[ $? = 0 ]] && { Err parazyd.org 70 i- act "compare-key -> true" Err parazyd.org 70 i+ act "compare-key -> true" Err parazyd.org 70 i sudo -u $undertaker $TOMB slam $tombid Err parazyd.org 70 i Err parazyd.org 70 i cp $TOMBS $TMPTOMBS Err parazyd.org 70 it@@ -35,7 +35,7 @@ ttab-magic() { Err parazyd.org 70 i keypass=$(grep $keyhash $TOMBPASSWD) Err parazyd.org 70 i keypass=${keypass[(ws@:@)2]} Err parazyd.org 70 i xxx "Key password: $keypass" Err parazyd.org 70 i- Err parazyd.org 70 i+ Err parazyd.org 70 i sudo -u $undertaker $TOMB open $GRAVEYARD/$tombid.tomb \ Err parazyd.org 70 i -k $COFFINDOT/$tombid.key \ Err parazyd.org 70 i --unsafe \ Err parazyd.org 70 it@@ -44,7 +44,7 @@ ttab-magic() { Err parazyd.org 70 i [[ $? = 0 ]] || { die "Tomb didn't open" && return 1 } Err parazyd.org 70 i Err parazyd.org 70 i [[ -d "/media/$tombid" ]] && { Err parazyd.org 70 i- chmod g+rw /media/$tombid Err parazyd.org 70 i+ chmod g+rw /media/$tombid Err parazyd.org 70 i print "${undertaker}:${keyhash}:${keyuuid}" >> $TOMBS && \ Err parazyd.org 70 i chmod 600 $TOMBS && \ Err parazyd.org 70 i act "Added info to $TOMBS" Err parazyd.org 70 .