itobscure zsh builtins - 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 27f1af84b6f04cf5686dcdef46dca46a4f796810 /git/coffin/commit/27f1af84b6f04cf5686dcdef46dca46a4f796810.gph parazyd.org 70 1parent 7689b3271deae39655d3114d5264c47adb23bf1a /git/coffin/commit/7689b3271deae39655d3114d5264c47adb23bf1a.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Wed, 2 Mar 2016 15:11:53 +0100 Err parazyd.org 70 i Err parazyd.org 70 iobscure zsh builtins Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M bin/sacrist | 54 +++++++++++++++++-------------- Err parazyd.org 70 i Err parazyd.org 70 i1 file changed, 30 insertions(+), 24 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/bin/sacrist b/bin/sacrist /git/coffin/file/bin/sacrist.gph parazyd.org 70 it@@ -8,6 +8,10 @@ device=$1 Err parazyd.org 70 i happenz=$2 Err parazyd.org 70 i keyuuid=$(blkid $device | awk -F\" '{print $2}') Err parazyd.org 70 i Err parazyd.org 70 i+ Err parazyd.org 70 i+typeset -H keypass Err parazyd.org 70 i+typeset -H undertaker Err parazyd.org 70 i+ Err parazyd.org 70 i # Vars Err parazyd.org 70 i graveyard="/home/graveyard" # Our graveyard, with all the tombs Err parazyd.org 70 i tombs="$graveyard/tombs" # Info about opened tombs, holds keyuuid, keyhash and tombid Err parazyd.org 70 it@@ -23,10 +27,10 @@ tombpasswd="$graveyard/passwd" Err parazyd.org 70 i # create:username:tombname:tombsize:passphrase Err parazyd.org 70 i Err parazyd.org 70 i # Debugs Err parazyd.org 70 i-echo "Arg1: $1" Err parazyd.org 70 i-echo "Arg2: $2" Err parazyd.org 70 i-echo "Device path is: $device" Err parazyd.org 70 i-echo "Device UUID is: $keyuuid" Err parazyd.org 70 i+print "Arg1: $1" Err parazyd.org 70 i+print "Arg2: $2" Err parazyd.org 70 i+print "Device path is: $device" Err parazyd.org 70 i+print "Device UUID is: $keyuuid" Err parazyd.org 70 i Err parazyd.org 70 i # {{{ Functions Err parazyd.org 70 i _mountkey() { Err parazyd.org 70 it@@ -43,12 +47,12 @@ _ttabmagic() { Err parazyd.org 70 i let line=$line+1 Err parazyd.org 70 i _msg info "Found line $line..." Err parazyd.org 70 i Err parazyd.org 70 i- if [[ $(echo $entry | awk -F: '{print $3}') == "true" ]]; then Err parazyd.org 70 i+ if [[ ${entry[(ws@:@)3]} == "true" ]]; then Err parazyd.org 70 i _msg info "Working on tomb from line $line..." Err parazyd.org 70 i- undertaker=$(echo $entry | awk -F: '{print $1}') Err parazyd.org 70 i- echo "Username: $undertaker" Err parazyd.org 70 i- tombid=$(echo $entry | awk -F: '{print $2}') Err parazyd.org 70 i- echo "Tomb name: $tombid.tomb" Err parazyd.org 70 i+ undertaker=${entry[(ws@:@)1]} Err parazyd.org 70 i+ print "Username: $undertaker" Err parazyd.org 70 i+ tombid=${entry[(ws@:@)2]} Err parazyd.org 70 i+ print "Tomb name: $tombid.tomb" Err parazyd.org 70 i _comparekey Err parazyd.org 70 i Err parazyd.org 70 i if [[ $happenz == "close" ]]; then Err parazyd.org 70 it@@ -62,12 +66,12 @@ _ttabmagic() { Err parazyd.org 70 i Err parazyd.org 70 i _msg warn "Comparekey false" Err parazyd.org 70 i keypass=$(cat $tombpasswd | grep $keyhash | awk -F: '{print $2}') Err parazyd.org 70 i- echo "Tomb passphrase: $keypass" Err parazyd.org 70 i+ print "Tomb passphrase: $keypass" Err parazyd.org 70 i sudo -u $undertaker $tomb open $graveyard/$tombid.tomb -k $coffindot/$tombid.key \ Err parazyd.org 70 i- --unsafe --tomb-pwd "$keypass" # Deal with this shit somehow! Err parazyd.org 70 i+ --unsafe --tomb-pwd "$keypass" # Deal with this Err parazyd.org 70 i Err parazyd.org 70 i if [[ -d "/media/$tombid" ]]; then Err parazyd.org 70 i- echo "$undertaker:$keyhash:$keyuuid" >> $tombs && chmod 600 $tombs && _msg info "Added info to $tombs" Err parazyd.org 70 i+ print "$undertaker:$keyhash:$keyuuid" >> $tombs && chmod 600 $tombs && _msg info "Added info to $tombs" Err parazyd.org 70 i else Err parazyd.org 70 i _msg warn "Nothing added to $tombs" Err parazyd.org 70 i fi Err parazyd.org 70 it@@ -96,11 +100,11 @@ _hooks() { Err parazyd.org 70 i _msg info "Found hook $hook..." Err parazyd.org 70 i Err parazyd.org 70 i # Check what's hook supposed to do Err parazyd.org 70 i- if [[ $(echo $entry | awk -F: '{print $1}') == "create" ]]; then Err parazyd.org 70 i+ if [[ ${entry[(ws@:@)1]} == "create" ]]; then Err parazyd.org 70 i _create_new_tomb Err parazyd.org 70 i- elif [[ $(echo $entry | awk -F: '{print $1}') == "delete" ]]; then Err parazyd.org 70 i+ elif [[ ${entry[(ws@:@)1]} == "delete" ]]; then Err parazyd.org 70 i #DELETE TOMB Err parazyd.org 70 i- elif [[ $(echo $entry | awk -F: '{print $1}') == "foo" ]]; then Err parazyd.org 70 i+ elif [[ ${entry[(ws@:@)1]} == "foo" ]]; then Err parazyd.org 70 i # do foo Err parazyd.org 70 i else Err parazyd.org 70 i _msg error "No valid hook syntax on hook $hook" Err parazyd.org 70 it@@ -111,15 +115,17 @@ _hooks() { Err parazyd.org 70 i Err parazyd.org 70 i _create_new_tomb() { Err parazyd.org 70 i _msg info "Creating new tomb!" Err parazyd.org 70 i- undertaker=$(echo $entry | awk -F: '{print $2}') Err parazyd.org 70 i- tombid=$(echo $entry | awk -F: '{print $3}') Err parazyd.org 70 i- tombsize=$(echo $entry| awk -F: '{print $4}') Err parazyd.org 70 i- keypass=$(echo $entry | awk -F: '{print $5}') Err parazyd.org 70 i+ undertaker=${entry[(ws@:@)2]} Err parazyd.org 70 i+ tombid=${entry[(ws@:@)3]} Err parazyd.org 70 i+ tombsize=${entry[(ws@:@)4]} Err parazyd.org 70 i+ keypass=${entry[(ws@:@)5]} Err parazyd.org 70 i Err parazyd.org 70 i if ! [[ ( $(id $undertaker) ) ]]; then Err parazyd.org 70 i _msg warn "No user called $undertaker found. Creating..." Err parazyd.org 70 i useradd -G tombox -m -s /bin/bash $undertaker Err parazyd.org 70 i _msg info "Created user $undertaker" Err parazyd.org 70 i+ else Err parazyd.org 70 i+ _msg warn "User $undertaker exists. Continuing..." Err parazyd.org 70 i fi Err parazyd.org 70 i Err parazyd.org 70 i sudo -u $undertaker $tomb dig -s $tombsize $graveyard/$tombid.tomb Err parazyd.org 70 it@@ -129,9 +135,9 @@ _create_new_tomb() { Err parazyd.org 70 i Err parazyd.org 70 i mv $graveyard/$tombid.key $coffindot/ && chown $undertaker:$undertaker $coffindot/$tombid.key && \ Err parazyd.org 70 i _msg info "Moved and chowned keyfile" Err parazyd.org 70 i- echo "$undertaker:${tombid}:true" >> $ttab Err parazyd.org 70 i+ print "$undertaker:${tombid}:true" >> $ttab Err parazyd.org 70 i keyhash=$(_hashkey) Err parazyd.org 70 i- echo "${keyhash}:${keypass}" >> $tombpasswd Err parazyd.org 70 i+ print "${keyhash}:${keypass}" >> $tombpasswd Err parazyd.org 70 i _msg info "Wrote to $ttab and $tombpasswd" Err parazyd.org 70 i # rm $createme && _msg info "Removed $createme" Err parazyd.org 70 i } Err parazyd.org 70 it@@ -142,11 +148,11 @@ _endgame() { Err parazyd.org 70 i Err parazyd.org 70 i _msg() { Err parazyd.org 70 i if [[ $1 == "error" ]]; then Err parazyd.org 70 i- echo -e "\e[1;31m[E] \e[0;31m$2 \e[0m" Err parazyd.org 70 i+ print "\e[1;31m[E] \e[0;31m$2 \e[0m" Err parazyd.org 70 i elif [[ $1 == "warn" ]]; then Err parazyd.org 70 i- echo -e "\e[1;33m[W] \e[0;33m$2 \e[0m" Err parazyd.org 70 i+ print "\e[1;33m[W] \e[0;33m$2 \e[0m" Err parazyd.org 70 i elif [[ $1 == "info" ]]; then Err parazyd.org 70 i- echo -e "\e[1;34m[i] \e[0;34m$2 \e[0m" Err parazyd.org 70 i+ print "\e[1;34m[i] \e[0;34m$2 \e[0m" Err parazyd.org 70 i fi Err parazyd.org 70 i } Err parazyd.org 70 i # }}} Err parazyd.org 70 .