itdelete and backup hooks - 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 4ed8184a04fbe3d750f461c2329fafd095836c4b /git/coffin/commit/4ed8184a04fbe3d750f461c2329fafd095836c4b.gph parazyd.org 70 1parent 6ec7e0052c655bc22f8e62adadfadaef41f07040 /git/coffin/commit/6ec7e0052c655bc22f8e62adadfadaef41f07040.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Mon, 7 Mar 2016 15:47:50 +0100 Err parazyd.org 70 i Err parazyd.org 70 idelete and backup hooks Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i A gmakehook | 481 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i D makehook.sh | 360 ------------------------------- Err parazyd.org 70 i Err parazyd.org 70 i2 files changed, 481 insertions(+), 360 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/gmakehook b/gmakehook /git/coffin/file/gmakehook.gph parazyd.org 70 it@@ -0,0 +1,481 @@ Err parazyd.org 70 i+#!/usr/bin/env zsh Err parazyd.org 70 i+# Err parazyd.org 70 i+# Zenity helper script to make tombox hooks more user-friendly Err parazyd.org 70 i+# Err parazyd.org 70 i+# ~ parazyd Err parazyd.org 70 i+ Err parazyd.org 70 i+typeset -H UNDERTAKER Err parazyd.org 70 i+typeset -H TOMBSIZE Err parazyd.org 70 i+typeset -H TOMBNAME Err parazyd.org 70 i+typeset -H sudoassword Err parazyd.org 70 i+ Err parazyd.org 70 i+keymount="/media/tombkey" Err parazyd.org 70 i+coffindot="$keymount/.coffin" Err parazyd.org 70 i+hooks="$coffindot/hook" Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ icon Err parazyd.org 70 i+MONMORT="/tmp/monmort.png" Err parazyd.org 70 i+ICONB64="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgEAQAAACJ4248AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAA Err parazyd.org 70 i+AEgAAABIAEbJaz4AAAAJdnBBZwAAACAAAAAgAIf6nJ0AAADrSURBVFjD5ZZBEsMgCEU/TO/l2XMx Err parazyd.org 70 i+04VjQ1K1CDYswkwWJnH+E/EL4RP7jluDCACoim/bvfIpFQiKEJcQHCN9xEtLCgDMQM7f33sZrPNG Err parazyd.org 70 i+/05loCXujfAtCAVgNgLwIuycjQAra8G9Fm823ADabPRA1QDelfZAVUZktWrNvL8ew5YTnsStx3Am Err parazyd.org 70 i+AyOInJVbYF1prZuU+tsR1g9UMDqGuo5oFWhtSEQNEGmeVrqv73Tj0pIZirANMYqRhyw5Bb9MauSW Err parazyd.org 70 i+SwA8l9OzG5LnAsiiDQGQRRvaEwInK54J390hndAIYIeQ4k6AAjE/h06ab0SjP08MA1xDAAAAJXRF Err parazyd.org 70 i+WHRkYXRlOmNyZWF0ZQAyMDExLTAxLTEyVDA5OjM0OjI0KzAxOjAwo//d7wAAACV0RVh0ZGF0ZTpt Err parazyd.org 70 i+b2RpZnkAMjAxMS0wMS0xMlQwOTozNDoyNCswMTowMNKiZVMAAAAASUVORK5CYII=" Err parazyd.org 70 i+print "$ICONB64" | base64 --decode > $MONMORT Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ sudo functions Err parazyd.org 70 i+function _sudo { Err parazyd.org 70 i+ sudoassword=$(ask_password "Insert sudo password for user $USER") Err parazyd.org 70 i+ print "$sudoassword\n" | sudo -S -v Err parazyd.org 70 i+ _sudowrong Err parazyd.org 70 i+} Err parazyd.org 70 i+function _sudowrong { Err parazyd.org 70 i+ if [[ $? == 1 ]]; then Err parazyd.org 70 i+ sudoassword=$(ask_password "Wrong password. Insert sudo password for user $USER") Err parazyd.org 70 i+ print "$sudoassword\n" | sudo -S -v Err parazyd.org 70 i+ _sudowrong Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ Some pinentry code shamelessly stolen from tomb Err parazyd.org 70 i+# Ask user for a password Err parazyd.org 70 i+# Wraps around the pinentry command, from the GnuPG project, as it Err parazyd.org 70 i+# provides better security and conveniently use the right toolkit. Err parazyd.org 70 i+ask_password() { Err parazyd.org 70 i+ local description="$1" Err parazyd.org 70 i+ local title="${2:-Enter tomb password.}" Err parazyd.org 70 i+ local output Err parazyd.org 70 i+ local password Err parazyd.org 70 i+ local gtkrc Err parazyd.org 70 i+ local theme Err parazyd.org 70 i+ Err parazyd.org 70 i+ # Distributions have broken wrappers for pinentry: they do Err parazyd.org 70 i+ # implement fallback, but they disrupt the output somehow. We are Err parazyd.org 70 i+ # better off relying on less intermediaries, so we implement our Err parazyd.org 70 i+ # own fallback mechanisms. Pinentry supported: curses, gtk-2, qt4 Err parazyd.org 70 i+ # and x11. Err parazyd.org 70 i+ Err parazyd.org 70 i+ # make sure LANG is set, default to C Err parazyd.org 70 i+ LANG=${LANG:-C} Err parazyd.org 70 i+ Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ "$DISPLAY" = "" ]]; then Err parazyd.org 70 i+ Err parazyd.org 70 i+ if _is_found "pinentry-curses"; then Err parazyd.org 70 i+ output=`cat </dev/null 2>/dev/null Err parazyd.org 70 i+ return $? Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ _clean - Clean function, removes sensitive stuff from memory Err parazyd.org 70 i+function _clean { Err parazyd.org 70 i+ TOMBSIZE="$rr"; unset TOMBSIZE Err parazyd.org 70 i+ TOMBNAME="$rr"; unset TOMBNAME Err parazyd.org 70 i+ UNDERTAKER="$rr"; unset UNDERTAKER Err parazyd.org 70 i+ sudoassword="$rr"; unset sudoassword Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ zenity dialogs Err parazyd.org 70 i+function _zenques { Err parazyd.org 70 i+ zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --question \ Err parazyd.org 70 i+ --text="$1" Err parazyd.org 70 i+} Err parazyd.org 70 i+function _zenwarn { Err parazyd.org 70 i+ zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --warning \ Err parazyd.org 70 i+ --title="$1" \ Err parazyd.org 70 i+ --text="$2" Err parazyd.org 70 i+} Err parazyd.org 70 i+function _zeninfo { Err parazyd.org 70 i+ zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --info \ Err parazyd.org 70 i+ --title="$1" \ Err parazyd.org 70 i+ --text="$2" Err parazyd.org 70 i+} Err parazyd.org 70 i+function _zenerr { Err parazyd.org 70 i+ zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --error \ Err parazyd.org 70 i+ --title="$1" \ Err parazyd.org 70 i+ --text="$2" Err parazyd.org 70 i+} Err parazyd.org 70 i+function _zenentry { Err parazyd.org 70 i+ zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --entry \ Err parazyd.org 70 i+ --title="$1" \ Err parazyd.org 70 i+ --text="$2" \ Err parazyd.org 70 i+ --entry-text="$3" Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+function _umountkey { sudo umount $keymount && sudo rmdir $keymount } Err parazyd.org 70 i+function _mountkey { Err parazyd.org 70 i+ sudo umount $USBKEY Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ _zenerr "Error" "Your key is mounted somewhere and I've run into issues. Please unmount it and re-run." Err parazyd.org 70 i+ _clean && exit Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ if [[ -d $keymount ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Something is already mounted on $keymount. Please check and re-run." Err parazyd.org 70 i+ _clean && exit Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo mkdir -p $keymount Err parazyd.org 70 i+ sudo mount $USBKEY $keymount Err parazyd.org 70 i+ Err parazyd.org 70 i+ if ! [[ -d $coffindot ]]; then Err parazyd.org 70 i+ sudo mkdir $coffindot Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+function _main { Err parazyd.org 70 i+ _clean Err parazyd.org 70 i+ cmnd=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="tombox hook helper" \ Err parazyd.org 70 i+ --list \ Err parazyd.org 70 i+ --hide-header \ Err parazyd.org 70 i+ --text="tombox hook helper\nChoose what hook you want to create:" \ Err parazyd.org 70 i+ --separator=" # " \ Err parazyd.org 70 i+ --column=Function \ Err parazyd.org 70 i+ --column=Description \ Err parazyd.org 70 i+ "create" "a new tomb on the tombox" \ Err parazyd.org 70 i+ "delete" "a tomb from the tombox" \ Err parazyd.org 70 i+ "backup" "a tomb from the tombox" \ Err parazyd.org 70 i+ "foobar" "on the tombox") Err parazyd.org 70 i+ eval "_$cmnd" Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ _create Err parazyd.org 70 i+function _create { Err parazyd.org 70 i+ vars=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Create a new tomb" \ Err parazyd.org 70 i+ --forms \ Err parazyd.org 70 i+ --text="Enter the info for your new tomb" \ Err parazyd.org 70 i+ --separator=":" \ Err parazyd.org 70 i+ --add-entry="Tombox username" \ Err parazyd.org 70 i+ --add-entry="Tomb name" \ Err parazyd.org 70 i+ --add-entry="Tomb's size in MiB") Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i+ re='^[A-Za-z0-9]+$' Err parazyd.org 70 i+ if ! [[ $UNDERTAKER =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i+ exec _create Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i+ if ! [[ $TOMBNAME =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i+ exec _create Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ TOMBSIZE=${vars[(ws@:@)3]} Err parazyd.org 70 i+ re='^[0-9]+$' Err parazyd.org 70 i+ if ! [[ $TOMBSIZE =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in tomb size!" Err parazyd.org 70 i+ exec _create Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ feats=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Choose features" \ Err parazyd.org 70 i+ --text="Choose features you wish to include with your tomb" \ Err parazyd.org 70 i+ --list \ Err parazyd.org 70 i+ --checklist \ Err parazyd.org 70 i+ --separator=":" \ Err parazyd.org 70 i+ --column=Yes/No \ Err parazyd.org 70 i+ --column=Feature \ Err parazyd.org 70 i+ "FALSE" "webdav" \ Err parazyd.org 70 i+ "FALSE" "sshfs" \ Err parazyd.org 70 i+ "FALSE" "ipfs") Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ TOMBHOOKS=$(_zenques "Choose 'Yes' if you want to edit your tomb's bind-hooks and post-hooks") Err parazyd.org 70 i+ if [[ $? = 0 ]]; then Err parazyd.org 70 i+ bindhook=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="bind-hooks" \ Err parazyd.org 70 i+ --checkbox="Accept these bind-hooks" \ Err parazyd.org 70 i+ --text-info \ Err parazyd.org 70 i+ --editable) Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ posthook=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="post-hooks" \ Err parazyd.org 70 i+ --checkbox="Accept these post-hooks" \ Err parazyd.org 70 i+ --text-info \ Err parazyd.org 70 i+ --editable) Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _zeninfo "gmakehook" "Plug in your USB key and click OK." Err parazyd.org 70 i+ lsblk -npl | awk -F" " '{print $1 " " $4}' | grep '^/dev/sd.. ' > ./.devs Err parazyd.org 70 i+ Err parazyd.org 70 i+ USBKEY=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Choose USB key" \ Err parazyd.org 70 i+ --list \ Err parazyd.org 70 i+ --text="Choose your USB key to use" \ Err parazyd.org 70 i+ --separator=" " \ Err parazyd.org 70 i+ --column="Device path" \ Err parazyd.org 70 i+ --column="Device size" \ Err parazyd.org 70 i+ $(cat ./.devs)) Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _sudo Err parazyd.org 70 i+ _mountkey Err parazyd.org 70 i+ if [[ -f $hooks ]]; then Err parazyd.org 70 i+ _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ _zeninfo "gmakehook" "Postponing..." && _umountkey && exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" | sudo tee $hooks Err parazyd.org 70 i+ if [[ -n $bindhook ]]; then Err parazyd.org 70 i+ print "$bindhook" | sudo tee $coffindot/bindhooks Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ if [[ -n $posthook ]]; then Err parazyd.org 70 i+ print "$posthook" | sudo tee $coffindot/posthooks Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in a tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" | sudo tee $hooks Err parazyd.org 70 i+ if [[ -n $bindhook ]]; then Err parazyd.org 70 i+ print "$bindhook" | sudo tee $coffindot/bindhooks Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ if [[ -n $posthook ]]; then Err parazyd.org 70 i+ print "$posthook" | sudo tee $coffindot/posthooks Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ _delete Err parazyd.org 70 i+function _delete { Err parazyd.org 70 i+ vars=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Delete an existing tomb" \ Err parazyd.org 70 i+ --forms \ Err parazyd.org 70 i+ --text="Enter the info of your tomb" \ Err parazyd.org 70 i+ --separator=":" \ Err parazyd.org 70 i+ --add-entry="Tombox username" \ Err parazyd.org 70 i+ --add-entry="Tomb name") Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i+ re='^[A-Za-z0-9]+$' Err parazyd.org 70 i+ if ! [[ $UNDERTAKER =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i+ exec _delete Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i+ if ! [[ $TOMBNAME =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i+ exec _delete Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _zeninfo "gmakehook" "Plug in your USB key and click OK." Err parazyd.org 70 i+ lsblk -npl | awk -F" " '{print $1 " " $4}' | grep '^/dev/sd.. ' > ./.devs Err parazyd.org 70 i+ Err parazyd.org 70 i+ USBKEY=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Choose USB key" \ Err parazyd.org 70 i+ --list \ Err parazyd.org 70 i+ --text="Choose your USB key to use" \ Err parazyd.org 70 i+ --separator=" " \ Err parazyd.org 70 i+ --column="Device path" \ Err parazyd.org 70 i+ --column="Device size" \ Err parazyd.org 70 i+ $(cat ./.devs)) Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _sudo Err parazyd.org 70 i+ _mountkey Err parazyd.org 70 i+ if [[ -f $hooks ]]; then Err parazyd.org 70 i+ _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ _zeninfo "gmakehook" "Postponing..." && _umountkey && exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "delete:${UNDERTAKER}:${TOMBNAME}" | sudo tee $hooks Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in a tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "delete:${UNDERTAKER}:${TOMBNAME}" | sudo tee $hooks Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+# {{{ _backup Err parazyd.org 70 i+function _backup { Err parazyd.org 70 i+ vars=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Backup an existing tomb" \ Err parazyd.org 70 i+ --forms \ Err parazyd.org 70 i+ --text="Enter the info of your tomb" \ Err parazyd.org 70 i+ --separator=":" \ Err parazyd.org 70 i+ --add-entry="Tombox username" \ Err parazyd.org 70 i+ --add-entry="Tomb name") Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i+ re='^[A-Za-z0-9]+$' Err parazyd.org 70 i+ if ! [[ $UNDERTAKER =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i+ exec _delete Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i+ if ! [[ $TOMBNAME =~ $re ]]; then Err parazyd.org 70 i+ _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i+ exec _delete Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _zeninfo "gmakehook" "Plug in your USB key and click OK." Err parazyd.org 70 i+ lsblk -npl | awk -F" " '{print $1 " " $4}' | grep '^/dev/sd.. ' > ./.devs Err parazyd.org 70 i+ Err parazyd.org 70 i+ USBKEY=$(zenity \ Err parazyd.org 70 i+ --window-icon="$MONMORT" \ Err parazyd.org 70 i+ --title="Choose USB key" \ Err parazyd.org 70 i+ --list \ Err parazyd.org 70 i+ --text="Choose your USB key to use" \ Err parazyd.org 70 i+ --separator=" " \ Err parazyd.org 70 i+ --column="Device path" \ Err parazyd.org 70 i+ --column="Device size" \ Err parazyd.org 70 i+ $(cat ./.devs)) Err parazyd.org 70 i+ if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ _sudo Err parazyd.org 70 i+ _mountkey Err parazyd.org 70 i+ if [[ -f $hooks ]]; then Err parazyd.org 70 i+ _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i+ if [[ $? = 1 ]]; then Err parazyd.org 70 i+ _zeninfo "gmakehook" "Postponing..." && _umountkey && exec _main Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "backup:${UNDERTAKER}:${TOMBNAME}" | sudo tee $hooks Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in a tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ else Err parazyd.org 70 i+ print "backup:${UNDERTAKER}:${TOMBNAME}" | sudo tee $hooks Err parazyd.org 70 i+ _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the tombox to activate it." Err parazyd.org 70 i+ exec _main Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+# }}} Err parazyd.org 70 i+ Err parazyd.org 70 i+function _ { rm ./.devs } Err parazyd.org 70 i+exec _main Err parazyd.org 70 1diff --git a/makehook.sh b/makehook.sh /git/coffin/file/makehook.sh.gph parazyd.org 70 it@@ -1,360 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env zsh Err parazyd.org 70 i-# Err parazyd.org 70 i-# Zenity helper script to make tombox hooks more user-friendly Err parazyd.org 70 i-# Err parazyd.org 70 i-# ~ parazyd Err parazyd.org 70 i- Err parazyd.org 70 i-typeset -H UNDERTAKER Err parazyd.org 70 i-typeset -H TOMBPASS Err parazyd.org 70 i-typeset -H TOMBSIZE Err parazyd.org 70 i-typeset -H TOMBNAME Err parazyd.org 70 i-typeset -H sudoassword Err parazyd.org 70 i- Err parazyd.org 70 i-keymount="/media/tombkey" Err parazyd.org 70 i-coffindot="$keymount/.coffin" Err parazyd.org 70 i-hooks="$coffindot/hook" Err parazyd.org 70 i- Err parazyd.org 70 i-lsblk -npl | awk -F" " '{print $1}' | grep ^/dev/sd.. > ./.devs Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ icon Err parazyd.org 70 i-MONMORT="/tmp/monmort.png" Err parazyd.org 70 i-ICONB64="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgEAQAAACJ4248AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAA\n Err parazyd.org 70 i-AEgAAABIAEbJaz4AAAAJdnBBZwAAACAAAAAgAIf6nJ0AAADrSURBVFjD5ZZBEsMgCEU/TO/l2XMx\n Err parazyd.org 70 i-04VjQ1K1CDYswkwWJnH+E/EL4RP7jluDCACoim/bvfIpFQiKEJcQHCN9xEtLCgDMQM7f33sZrPNG\n Err parazyd.org 70 i-/05loCXujfAtCAVgNgLwIuycjQAra8G9Fm823ADabPRA1QDelfZAVUZktWrNvL8ew5YTnsStx3Am\n Err parazyd.org 70 i-AyOInJVbYF1prZuU+tsR1g9UMDqGuo5oFWhtSEQNEGmeVrqv73Tj0pIZirANMYqRhyw5Bb9MauSW\n Err parazyd.org 70 i-SwA8l9OzG5LnAsiiDQGQRRvaEwInK54J390hndAIYIeQ4k6AAjE/h06ab0SjP08MA1xDAAAAJXRF\n Err parazyd.org 70 i-WHRkYXRlOmNyZWF0ZQAyMDExLTAxLTEyVDA5OjM0OjI0KzAxOjAwo//d7wAAACV0RVh0ZGF0ZTpt\n Err parazyd.org 70 i-b2RpZnkAMjAxMS0wMS0xMlQwOTozNDoyNCswMTowMNKiZVMAAAAASUVORK5CYII=" Err parazyd.org 70 i-echo -e "$ICONB64" | base64 --decode > $MONMORT Err parazyd.org 70 i-# }}} Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ sudo functions Err parazyd.org 70 i-function _sudo { Err parazyd.org 70 i- sudoassword=$(ask_password "Insert sudo password for user $USER") Err parazyd.org 70 i- echo -e "$sudoassword\n" | sudo -S -v Err parazyd.org 70 i- _sudowrong Err parazyd.org 70 i-} Err parazyd.org 70 i-function _sudowrong { Err parazyd.org 70 i- if [[ $? == 1 ]]; then Err parazyd.org 70 i- sudoassword=$(ask_password "Wrong password. Insert sudo password for user $USER") Err parazyd.org 70 i- echo -e "$sudoassword\n" | sudo -S -v Err parazyd.org 70 i- _sudowrong Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 i-# }}} Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Some pinentry code shamelessly stolen from tomb Err parazyd.org 70 i-# Ask user for a password Err parazyd.org 70 i-# Wraps around the pinentry command, from the GnuPG project, as it Err parazyd.org 70 i-# provides better security and conveniently use the right toolkit. Err parazyd.org 70 i-ask_password() { Err parazyd.org 70 i- local description="$1" Err parazyd.org 70 i- local title="${2:-Enter tomb password.}" Err parazyd.org 70 i- local output Err parazyd.org 70 i- local password Err parazyd.org 70 i- local gtkrc Err parazyd.org 70 i- local theme Err parazyd.org 70 i- Err parazyd.org 70 i- # Distributions have broken wrappers for pinentry: they do Err parazyd.org 70 i- # implement fallback, but they disrupt the output somehow. We are Err parazyd.org 70 i- # better off relying on less intermediaries, so we implement our Err parazyd.org 70 i- # own fallback mechanisms. Pinentry supported: curses, gtk-2, qt4 Err parazyd.org 70 i- # and x11. Err parazyd.org 70 i- Err parazyd.org 70 i- # make sure LANG is set, default to C Err parazyd.org 70 i- LANG=${LANG:-C} Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ "$DISPLAY" = "" ]]; then Err parazyd.org 70 i- Err parazyd.org 70 i- if _is_found "pinentry-curses"; then Err parazyd.org 70 i- output=`cat </dev/null 2>/dev/null Err parazyd.org 70 i- return $? Err parazyd.org 70 i-} Err parazyd.org 70 i-# }}} Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ _clean - Clean function, removes sensitive stuff from memory Err parazyd.org 70 i-function _clean { Err parazyd.org 70 i- unset $? Err parazyd.org 70 i- local rr="$RANDOM" Err parazyd.org 70 i- while [[ ${#rr} -lt 500 ]]; do Err parazyd.org 70 i- rr+="$RANDOM" Err parazyd.org 70 i- done Err parazyd.org 70 i- TOMBPASS="$rr"; unset TOMBPASS Err parazyd.org 70 i- TOMBSIZE="$rr"; unset TOMBSIZE Err parazyd.org 70 i- TOMBNAME="$rr"; unset TOMBNAME Err parazyd.org 70 i- UNDERTAKER="$rr"; unset UNDERTAKER Err parazyd.org 70 i- happenz="$rr"; unset happenz Err parazyd.org 70 i- sudoassword="$rr"; unset sudoassword Err parazyd.org 70 i- tombtmp="$rr"; unset tombtmp Err parazyd.org 70 i-} Err parazyd.org 70 i-# }}} Err parazyd.org 70 i- Err parazyd.org 70 i-function _umountkey { sudo umount $keymount && sudo rmdir $keymount } Err parazyd.org 70 i-function _mountkey { Err parazyd.org 70 i- if [[ -d $keymount ]]; then Err parazyd.org 70 i- _zenwarn "Warning" "Something is already mounted on $keymount. Please check and re-run." Err parazyd.org 70 i- _clean && exit Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- sudo mkdir -p $keymount Err parazyd.org 70 i- sudo mount $USBKEY $keymount Err parazyd.org 70 i- Err parazyd.org 70 i- if ! [[ -d $coffindot ]]; then Err parazyd.org 70 i- sudo mkdir $coffindot Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ zenity dialogs Err parazyd.org 70 i-function _zenques { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --question \ Err parazyd.org 70 i- --text="$1" Err parazyd.org 70 i-} Err parazyd.org 70 i-function _zenwarn { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --warning \ Err parazyd.org 70 i- --title="$1" \ Err parazyd.org 70 i- --text="$2" Err parazyd.org 70 i-} Err parazyd.org 70 i-function _zeninfo { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --info \ Err parazyd.org 70 i- --title="$1" \ Err parazyd.org 70 i- --text="$2" Err parazyd.org 70 i-} Err parazyd.org 70 i-function _zenerr { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --error \ Err parazyd.org 70 i- --title="$1" \ Err parazyd.org 70 i- --text="$2" Err parazyd.org 70 i-} Err parazyd.org 70 i-function _zenentry { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --entry \ Err parazyd.org 70 i- --title="$1" \ Err parazyd.org 70 i- --text="$2" \ Err parazyd.org 70 i- --entry-text="$3" Err parazyd.org 70 i-} Err parazyd.org 70 i-# }}} Err parazyd.org 70 i- Err parazyd.org 70 i-function _main { Err parazyd.org 70 i- _clean Err parazyd.org 70 i- cmnd=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="tombox hook helper" \ Err parazyd.org 70 i- --list \ Err parazyd.org 70 i- --hide-header \ Err parazyd.org 70 i- --text="tombox hook helper\nChoose what hook you want to create:" \ Err parazyd.org 70 i- --separator=" # " \ Err parazyd.org 70 i- --column=Function \ Err parazyd.org 70 i- --column=Description \ Err parazyd.org 70 i- "create" "a new tomb on the tombox" \ Err parazyd.org 70 i- "delete" "a tomb from the tombox" \ Err parazyd.org 70 i- "backup" "a tomb from the tombox" \ Err parazyd.org 70 i- "foobar" "on the tombox") Err parazyd.org 70 i- eval "_$cmnd" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _create { Err parazyd.org 70 i- vars=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="Create a new tomb" \ Err parazyd.org 70 i- --forms \ Err parazyd.org 70 i- --text="Enter the info for your new tomb" \ Err parazyd.org 70 i- --separator=":" \ Err parazyd.org 70 i- --add-entry="Tombox username" \ Err parazyd.org 70 i- --add-entry="Tomb name" \ Err parazyd.org 70 i- --add-entry="Tomb's size in MiB") Err parazyd.org 70 i- if [[ $? = 1 ]]; then Err parazyd.org 70 i- exec _main Err parazyd.org 70 i- else Err parazyd.org 70 i- UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i- re='^[A-Za-z0-9]+$' Err parazyd.org 70 i- if ! [[ $UNDERTAKER =~ $re ]]; then Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- fi Err parazyd.org 70 i- TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i- if ! [[ $TOMBNAME =~ $re ]]; then Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- fi Err parazyd.org 70 i- TOMBSIZE=${vars[(ws@:@)3]} Err parazyd.org 70 i- re='^[0-9]+$' Err parazyd.org 70 i- if ! [[ $TOMBSIZE =~ $re ]]; then Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in tomb size!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- fi Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- feats=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="Choose features" \ Err parazyd.org 70 i- --text="Choose features you wish to include with your tomb" \ Err parazyd.org 70 i- --list \ Err parazyd.org 70 i- --checklist \ Err parazyd.org 70 i- --separator=":" \ Err parazyd.org 70 i- --column=Yes/No \ Err parazyd.org 70 i- --column=Feature \ Err parazyd.org 70 i- "FALSE" "webdav" \ Err parazyd.org 70 i- "FALSE" "sshfs" \ Err parazyd.org 70 i- "FALSE" "ipfs") Err parazyd.org 70 i- if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i- Err parazyd.org 70 i- TOMBHOOKS=$(_zenques "Choose 'Yes' if you want to edit your tomb's bind-hooks and post-hooks") Err parazyd.org 70 i- if [[ $? = 0 ]]; then Err parazyd.org 70 i- bindhook=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="bind-hooks" \ Err parazyd.org 70 i- --checkbox="Accept these bind-hooks" \ Err parazyd.org 70 i- --text-info \ Err parazyd.org 70 i- --editable) Err parazyd.org 70 i- if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i- Err parazyd.org 70 i- posthook=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="post-hooks" \ Err parazyd.org 70 i- --checkbox="Accept these post-hooks" \ Err parazyd.org 70 i- --text-info \ Err parazyd.org 70 i- --editable) Err parazyd.org 70 i- if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- USBKEY=$(zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --title="Choose USB key" \ Err parazyd.org 70 i- --list \ Err parazyd.org 70 i- --text="Choose your USB key to use" \ Err parazyd.org 70 i- --column="Device path" \ Err parazyd.org 70 i- $(cat ./.devs)) Err parazyd.org 70 i- if [[ $? = 1 ]]; then; exec _main; fi Err parazyd.org 70 i- Err parazyd.org 70 i- _sudo Err parazyd.org 70 i- _mountkey Err parazyd.org 70 i- if [[ -f $hooks ]]; then Err parazyd.org 70 i- _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i- if [[ $? = 1 ]]; then Err parazyd.org 70 i- _zeninfo "Info" "Postponing..." && _umountkey && exec _main Err parazyd.org 70 i- else Err parazyd.org 70 i- # edit these to fit new values Err parazyd.org 70 i- print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" | sudo tee $hooks Err parazyd.org 70 i- if [[ -n $bindhook ]]; then Err parazyd.org 70 i- print "$bindhook" | sudo tee $coffindot/bindhooks Err parazyd.org 70 i- fi Err parazyd.org 70 i- if [[ -n $posthook ]]; then Err parazyd.org 70 i- print "$posthook" | sudo tee $coffindot/posthooks Err parazyd.org 70 i- fi Err parazyd.org 70 i- _umountkey Err parazyd.org 70 i- _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in a tombox to activate it." Err parazyd.org 70 i- exec _main Err parazyd.org 70 i- fi Err parazyd.org 70 i- else Err parazyd.org 70 i- # edit these to fit new values Err parazyd.org 70 i- print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" | sudo tee $hooks Err parazyd.org 70 i- _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the tombox to activate it." && _umountkey && exec _main Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _ { rm .devs } Err parazyd.org 70 i-_main Err parazyd.org 70 .