itremove gmakehook - 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 880a2a60fdf3bdbdf2af6cee76aa2da1b74236e5 /git/coffin/commit/880a2a60fdf3bdbdf2af6cee76aa2da1b74236e5.gph parazyd.org 70 1parent 8ceaaa6ae295fa51e824de63f4e86e6633e8ad45 /git/coffin/commit/8ceaaa6ae295fa51e824de63f4e86e6633e8ad45.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Thu, 6 Oct 2016 14:50:03 +0200 Err parazyd.org 70 i Err parazyd.org 70 iremove gmakehook Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i D helpers/gmakehook | 461 ------------------------------ Err parazyd.org 70 i Err parazyd.org 70 i1 file changed, 0 insertions(+), 461 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/helpers/gmakehook b/helpers/gmakehook /git/coffin/file/helpers/gmakehook.gph parazyd.org 70 it@@ -1,461 +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 coffin 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-GRAVEYARD="/home/graveyard" 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-# {{{ 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-# {{{ 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-# {{{ zenity dialogs Err parazyd.org 70 i-function _fsel { Err parazyd.org 70 i- zenity \ Err parazyd.org 70 i- --window-icon="$MONMORT" \ Err parazyd.org 70 i- --file-selection \ Err parazyd.org 70 i- --title="$1" Err parazyd.org 70 i-} 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-# {{{ _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-function _umountkey() { Err parazyd.org 70 i- sudo umount $keymount \ Err parazyd.org 70 i- && sudo rmdir $keymount Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _mountkey { Err parazyd.org 70 i- [[ -d $keymount ]] && { 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- } 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- sudo chown $UID:$GID $keymount Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -d $coffindot ]] || { Err parazyd.org 70 i- mkdir $coffindot 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="coffin hook helper" \ Err parazyd.org 70 i- --list \ Err parazyd.org 70 i- --hide-header \ Err parazyd.org 70 i- --text="coffin 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 coffin" \ Err parazyd.org 70 i- "delete" "a tomb from the coffin" \ Err parazyd.org 70 i- "backup" "a tomb from the coffin" \ Err parazyd.org 70 i- "foobar" "on the coffin") Err parazyd.org 70 i- eval "_$cmnd" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _writedavinfo { Err parazyd.org 70 i- if [[ -n $davpass ]]; then Err parazyd.org 70 i- davinfo=$(echo -n "$UNDERTAKER:WebDAV:" \ Err parazyd.org 70 i- && echo -n "$UNDERTAKER:WebDAV:$davpass" \ Err parazyd.org 70 i- | md5sum \ Err parazyd.org 70 i- | awk '{print $1}') Err parazyd.org 70 i- print $davinfo | sudo tee $coffindot/davinfo Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- cat < Err parazyd.org 70 i- Dav On Err parazyd.org 70 i- AllowOverride none Err parazyd.org 70 i- Options Indexes FollowSymlinks Err parazyd.org 70 i- AuthType Digest Err parazyd.org 70 i- AuthName WebDAV Err parazyd.org 70 i- AuthUserFile /etc/apache2/DAV/davpasswd Err parazyd.org 70 i- Require user ${UNDERTAKER} Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-EOF 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="coffin 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- [[ $? = 0 ]] || exec _main Err parazyd.org 70 i- Err parazyd.org 70 i- UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i- re='^[A-Za-z0-9]+$' Err parazyd.org 70 i- [[ $UNDERTAKER =~ $re ]] || { Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i- [[ $TOMBNAME =~ $re ]] || { Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- TOMBSIZE=${vars[(ws@:@)3]} Err parazyd.org 70 i- re='^[0-9]+$' Err parazyd.org 70 i- [[ $TOMBSIZE =~ $re ]] || { Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in tomb size!" Err parazyd.org 70 i- exec _create Err parazyd.org 70 i- } 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- [[ $? = 0 ]] || exec _main Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $feats =~ "webdav" ]] && { Err parazyd.org 70 i- _zenques "Do you already have a WebDAV login?" Err parazyd.org 70 i- [[ $? = 0 ]] || { Err parazyd.org 70 i- davpass=$(_zenentry "WebDAV Password" \ Err parazyd.org 70 i- "Insert the password you want to use for WebDAV login:" \ Err parazyd.org 70 i- "my very strong password") Err parazyd.org 70 i- [[ $? = 0 ]] || davpass="" Err parazyd.org 70 i- } Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $feats =~ "sshfs" ]] && { Err parazyd.org 70 i- _zenques "Do you already have an SSH key setup for your user?" Err parazyd.org 70 i- [[ $? = 0 ]] || sshpubkey=$(_fsel "Select your SSH pubkey you want to use.") Err parazyd.org 70 i- } 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- [[ $? = 0 ]] || { 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- [[ $? = 0 ]] || exec _main 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- [[ $? = 0 ]] || exec _main Err parazyd.org 70 i- } 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- sleep 1 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- [[ $? = 0 ]] || exec _main Err parazyd.org 70 i- Err parazyd.org 70 i- _sudo Err parazyd.org 70 i- _mountkey Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -f $hooks ]] && { Err parazyd.org 70 i- _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i- [[ $? = 0 ]] || { Err parazyd.org 70 i- _zeninfo "gmakehook" "Postponing..." && \ Err parazyd.org 70 i- _umountkey && \ Err parazyd.org 70 i- exec _main Err parazyd.org 70 i- } Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $feats =~ "webdav" ]] && _writedavinfo Err parazyd.org 70 i- [[ $? = 0 ]] && { _zenerr "Error" "Error writing WebDAV info." && exec _main } Err parazyd.org 70 i- [[ -n $sshpubkey ]] && cp $sshpubkey $coffindot/$tombid.pub Err parazyd.org 70 i- [[ $? = 0 ]] && { _zenerr "Error" "Error writing SSH info." && exec _main } Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -n $bindhook ]] && print "$bindhook" | tee $coffindot/bindhooks Err parazyd.org 70 i- [[ $? = 0 ]] && { _zenerr "Error" "Error writing bind-hook info." && exec _main } Err parazyd.org 70 i- [[ -n $posthook ]] && print "$posthook" | tee $coffindot/posthooks Err parazyd.org 70 i- [[ $? = 0 ]] && { _zenerr "Error" "Error writing post-hook info." && exec _main } Err parazyd.org 70 i- Err parazyd.org 70 i- print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" >> $hooks Err parazyd.org 70 i- Err parazyd.org 70 i- _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the coffin to activate it." Err parazyd.org 70 i- exec _main 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="coffin username" \ Err parazyd.org 70 i- --add-entry="Tomb name") Err parazyd.org 70 i- [[ $? = 0 ]] && exec _main Err parazyd.org 70 i- Err parazyd.org 70 i- UNDERTAKER=${vars[(ws@:@)1]} Err parazyd.org 70 i- re='^[A-Za-z0-9]+$' Err parazyd.org 70 i- [[ $UNDERTAKER =~ $re ]] || { Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in username!" Err parazyd.org 70 i- exec _delete Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- TOMBNAME=${vars[(ws@:@)2]} Err parazyd.org 70 i- [[ $TOMBNAME =~ $re ]] || { Err parazyd.org 70 i- _zenwarn "Warning" "Invalid characters in tomb name!" Err parazyd.org 70 i- exec _delete Err parazyd.org 70 i- } 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- sleep 1 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- [[ $? = 0 ]] || exec _main Err parazyd.org 70 i- Err parazyd.org 70 i- _sudo Err parazyd.org 70 i- _mountkey Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -f $hooks ]] && { Err parazyd.org 70 i- _zenques "Warning! There is already an existing hook. Do you want to overwrite?" Err parazyd.org 70 i- [[ $? = 0 ]] && _zeninfo "gmakehook" "Postponing..." && _umountkey && exec _main Err parazyd.org 70 i- } Err parazyd.org 70 i- 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 coffin to activate it." Err parazyd.org 70 i- exec _main 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 .