tremove gmakehook - coffin - secure lan file storage on a device HTML git clone git://parazyd.org/coffin.git DIR Log DIR Files DIR Refs DIR Submodules DIR README DIR LICENSE --- DIR commit 880a2a60fdf3bdbdf2af6cee76aa2da1b74236e5 DIR parent 8ceaaa6ae295fa51e824de63f4e86e6633e8ad45 HTML Author: parazyd <parazyd@dyne.org> Date: Thu, 6 Oct 2016 14:50:03 +0200 remove gmakehook Diffstat: D helpers/gmakehook | 461 ------------------------------ 1 file changed, 0 insertions(+), 461 deletions(-) --- DIR diff --git a/helpers/gmakehook b/helpers/gmakehook t@@ -1,461 +0,0 @@ -#!/usr/bin/env zsh -# -# Zenity helper script to make coffin hooks more user-friendly -# -# ~ parazyd - -typeset -H UNDERTAKER -typeset -H TOMBSIZE -typeset -H TOMBNAME -typeset -H sudoassword - -keymount="/media/tombkey" -coffindot="$keymount/.coffin" -hooks="$coffindot/hook" -GRAVEYARD="/home/graveyard" - -# {{{ icon -MONMORT="/tmp/monmort.png" -ICONB64="iVBORw0KGgoAAAANSUhEUgAAACAAAAAgEAQAAACJ4248AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAA -AEgAAABIAEbJaz4AAAAJdnBBZwAAACAAAAAgAIf6nJ0AAADrSURBVFjD5ZZBEsMgCEU/TO/l2XMx -04VjQ1K1CDYswkwWJnH+E/EL4RP7jluDCACoim/bvfIpFQiKEJcQHCN9xEtLCgDMQM7f33sZrPNG -/05loCXujfAtCAVgNgLwIuycjQAra8G9Fm823ADabPRA1QDelfZAVUZktWrNvL8ew5YTnsStx3Am -AyOInJVbYF1prZuU+tsR1g9UMDqGuo5oFWhtSEQNEGmeVrqv73Tj0pIZirANMYqRhyw5Bb9MauSW -SwA8l9OzG5LnAsiiDQGQRRvaEwInK54J390hndAIYIeQ4k6AAjE/h06ab0SjP08MA1xDAAAAJXRF -WHRkYXRlOmNyZWF0ZQAyMDExLTAxLTEyVDA5OjM0OjI0KzAxOjAwo//d7wAAACV0RVh0ZGF0ZTpt -b2RpZnkAMjAxMS0wMS0xMlQwOTozNDoyNCswMTowMNKiZVMAAAAASUVORK5CYII=" -print "$ICONB64" | base64 --decode > $MONMORT -# }}} -# {{{ sudo functions -function _sudo { - sudoassword=$(ask_password "Insert sudo password for user $USER") - print "$sudoassword\n" | sudo -S -v - _sudowrong -} -function _sudowrong { - if [[ $? == 1 ]]; then - sudoassword=$(ask_password "Wrong password. Insert sudo password for user $USER") - print "$sudoassword\n" | sudo -S -v - _sudowrong - fi -} -# }}} -# {{{ Some pinentry code shamelessly stolen from tomb -# Ask user for a password -# Wraps around the pinentry command, from the GnuPG project, as it -# provides better security and conveniently use the right toolkit. -ask_password() { - local description="$1" - local title="${2:-Enter tomb password.}" - local output - local password - local gtkrc - local theme - - # Distributions have broken wrappers for pinentry: they do - # implement fallback, but they disrupt the output somehow. We are - # better off relying on less intermediaries, so we implement our - # own fallback mechanisms. Pinentry supported: curses, gtk-2, qt4 - # and x11. - - # make sure LANG is set, default to C - LANG=${LANG:-C} - - - if [[ "$DISPLAY" = "" ]]; then - - if _is_found "pinentry-curses"; then - output=`cat <<EOF | pinentry-curses -OPTION ttyname=$TTY -OPTION lc-ctype=$LANG -SETTITLE $title -SETDESC $description -SETPROMPT Password: -GETPIN -EOF` - fi - - else # a DISPLAY is found to be active - - # customized gtk2 dialog with a skull (if extras are installed) - if _is_found "pinentry-gtk-2"; then - - gtkrc="" - theme=/share/themes/tomb/gtk-2.0-key/gtkrc - for i in /usr/local /usr; do - [[ -r $i/$theme ]] && { - gtkrc="$i/$theme" - break - } - done - [[ "$gtkrc" = "" ]] || { - gtkrc_old="$GTK2_RC_FILES" - export GTK2_RC_FILES="$gtkrc" - } - output=`cat <<EOF | pinentry-gtk-2 -OPTION ttyname=$TTY -OPTION lc-ctype=$LANG -SETTITLE $title -SETDESC $description -SETPROMPT Password: -GETPIN -EOF` - [[ "$gtkrc" = "" ]] || export GTK2_RC_FILES="$gtkrc_old" - - # TODO QT4 customization of dialog - elif _is_found "pinentry-qt4"; then - - # TODO X11 customization of dialog - elif _is_found "pinentry-x11"; then - - output=`cat <<EOF | pinentry-x11 -OPTION ttyname=$TTY -OPTION lc-ctype=$LANG -SETTITLE $title -SETDESC $description -SETPROMPT Password: -GETPIN -EOF` - - else - - if _is_found "pinentry-curses"; then - - output=`cat <<EOF | pinentry-curses -OPTION ttyname=$TTY -OPTION lc-ctype=$LANG -SETTITLE $title -SETDESC $description -SETPROMPT Password: -GETPIN -EOF` - else - fi - - fi - - fi # end of DISPLAY block - - # parse the pinentry output - for i in ${(f)output}; do - [[ "$i" =~ "^ERR.*" ]] && { - print "canceled" - return 1 } - - # here the password is found - [[ "$i" =~ "^D .*" ]] && password="${i##D }" - done - - [[ "$password" = "" ]] && { - print "empty" - return 1 } - - print "$password" - return 0 -} - -_is_found() { - # returns 0 if binary is found in path - [[ "$1" = "" ]] && return 1 - command -v "$1" 1>/dev/null 2>/dev/null - return $? -} -# }}} -# {{{ zenity dialogs -function _fsel { - zenity \ - --window-icon="$MONMORT" \ - --file-selection \ - --title="$1" -} -function _zenques { - zenity \ - --window-icon="$MONMORT" \ - --question \ - --text="$1" -} -function _zenwarn { - zenity \ - --window-icon="$MONMORT" \ - --warning \ - --title="$1" \ - --text="$2" -} -function _zeninfo { - zenity \ - --window-icon="$MONMORT" \ - --info \ - --title="$1" \ - --text="$2" -} -function _zenerr { - zenity \ - --window-icon="$MONMORT" \ - --error \ - --title="$1" \ - --text="$2" -} -function _zenentry { - zenity \ - --window-icon="$MONMORT" \ - --entry \ - --title="$1" \ - --text="$2" \ - --entry-text="$3" -} -# }}} - -# {{{ _clean - Clean function, removes sensitive stuff from memory -function _clean { - TOMBSIZE="$rr"; unset TOMBSIZE - TOMBNAME="$rr"; unset TOMBNAME - UNDERTAKER="$rr"; unset UNDERTAKER - sudoassword="$rr"; unset sudoassword -} -# }}} -function _umountkey() { - sudo umount $keymount \ - && sudo rmdir $keymount -} - -function _mountkey { - [[ -d $keymount ]] && { - _zenwarn "Warning" "Something is already mounted on $keymount. Please check and re-run." - _clean && exit - } - - sudo mkdir -p $keymount - sudo mount $USBKEY $keymount - - sudo chown $UID:$GID $keymount - - [[ -d $coffindot ]] || { - mkdir $coffindot - } -} - -function _main { - _clean - cmnd=$(zenity \ - --window-icon="$MONMORT" \ - --title="coffin hook helper" \ - --list \ - --hide-header \ - --text="coffin hook helper\nChoose what hook you want to create:" \ - --separator=" # " \ - --column=Function \ - --column=Description \ - "create" "a new tomb on the coffin" \ - "delete" "a tomb from the coffin" \ - "backup" "a tomb from the coffin" \ - "foobar" "on the coffin") - eval "_$cmnd" -} - -function _writedavinfo { - if [[ -n $davpass ]]; then - davinfo=$(echo -n "$UNDERTAKER:WebDAV:" \ - && echo -n "$UNDERTAKER:WebDAV:$davpass" \ - | md5sum \ - | awk '{print $1}') - print $davinfo | sudo tee $coffindot/davinfo - fi - - cat <<EOF | sudo tee $coffindot/webdav.conf - - alias /${TOMBNAME} /media/${TOMBNAME} - <Directory "/media/${TOMBNAME}"> - Dav On - AllowOverride none - Options Indexes FollowSymlinks - AuthType Digest - AuthName WebDAV - AuthUserFile /etc/apache2/DAV/davpasswd - Require user ${UNDERTAKER} - </Directory> - - </VirtualHost> -</IfModule> -EOF -} - -# {{{ _create -function _create { - vars=$(zenity \ - --window-icon="$MONMORT" \ - --title="Create a new tomb" \ - --forms \ - --text="Enter the info for your new tomb" \ - --separator=":" \ - --add-entry="coffin username" \ - --add-entry="Tomb name" \ - --add-entry="Tomb's size in MiB") - [[ $? = 0 ]] || exec _main - - UNDERTAKER=${vars[(ws@:@)1]} - re='^[A-Za-z0-9]+$' - [[ $UNDERTAKER =~ $re ]] || { - _zenwarn "Warning" "Invalid characters in username!" - exec _create - } - - TOMBNAME=${vars[(ws@:@)2]} - [[ $TOMBNAME =~ $re ]] || { - _zenwarn "Warning" "Invalid characters in tomb name!" - exec _create - } - - TOMBSIZE=${vars[(ws@:@)3]} - re='^[0-9]+$' - [[ $TOMBSIZE =~ $re ]] || { - _zenwarn "Warning" "Invalid characters in tomb size!" - exec _create - } - - feats=$(zenity \ - --window-icon="$MONMORT" \ - --title="Choose features" \ - --text="Choose features you wish to include with your tomb" \ - --list \ - --checklist \ - --separator=":" \ - --column=Yes/No \ - --column=Feature \ - "FALSE" "webdav" \ - "FALSE" "sshfs") - [[ $? = 0 ]] || exec _main - - [[ $feats =~ "webdav" ]] && { - _zenques "Do you already have a WebDAV login?" - [[ $? = 0 ]] || { - davpass=$(_zenentry "WebDAV Password" \ - "Insert the password you want to use for WebDAV login:" \ - "my very strong password") - [[ $? = 0 ]] || davpass="" - } - } - - [[ $feats =~ "sshfs" ]] && { - _zenques "Do you already have an SSH key setup for your user?" - [[ $? = 0 ]] || sshpubkey=$(_fsel "Select your SSH pubkey you want to use.") - } - - TOMBHOOKS=$(_zenques "Choose 'Yes' if you want to edit your tomb's bind-hooks and post-hooks") - [[ $? = 0 ]] || { - bindhook=$(zenity \ - --window-icon="$MONMORT" \ - --title="bind-hooks" \ - --checkbox="Accept these bind-hooks" \ - --text-info \ - --editable) - [[ $? = 0 ]] || exec _main - - posthook=$(zenity \ - --window-icon="$MONMORT" \ - --title="post-hooks" \ - --checkbox="Accept these post-hooks" \ - --text-info \ - --editable) - [[ $? = 0 ]] || exec _main - } - - _zeninfo "gmakehook" "Plug in your USB key and click OK." - sleep 1 - lsblk -npl | awk -F" " '{print $1 " " $4}' | grep '^/dev/sd.. ' > ./.devs - - USBKEY=$(zenity \ - --window-icon="$MONMORT" \ - --title="Choose USB key" \ - --list \ - --text="Choose your USB key to use" \ - --separator=" " \ - --column="Device path" \ - --column="Device size" \ - $(cat ./.devs)) - [[ $? = 0 ]] || exec _main - - _sudo - _mountkey - - [[ -f $hooks ]] && { - _zenques "Warning! There is already an existing hook. Do you want to overwrite?" - [[ $? = 0 ]] || { - _zeninfo "gmakehook" "Postponing..." && \ - _umountkey && \ - exec _main - } - } - - [[ $feats =~ "webdav" ]] && _writedavinfo - [[ $? = 0 ]] && { _zenerr "Error" "Error writing WebDAV info." && exec _main } - [[ -n $sshpubkey ]] && cp $sshpubkey $coffindot/$tombid.pub - [[ $? = 0 ]] && { _zenerr "Error" "Error writing SSH info." && exec _main } - - [[ -n $bindhook ]] && print "$bindhook" | tee $coffindot/bindhooks - [[ $? = 0 ]] && { _zenerr "Error" "Error writing bind-hook info." && exec _main } - [[ -n $posthook ]] && print "$posthook" | tee $coffindot/posthooks - [[ $? = 0 ]] && { _zenerr "Error" "Error writing post-hook info." && exec _main } - - print "create:${UNDERTAKER}:${TOMBNAME}:${TOMBSIZE}:${feats}" >> $hooks - - _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in the coffin to activate it." - exec _main -} -# }}} - -# {{{ _delete -function _delete { - vars=$(zenity \ - --window-icon="$MONMORT" \ - --title="Delete an existing tomb" \ - --forms \ - --text="Enter the info of your tomb" \ - --separator=":" \ - --add-entry="coffin username" \ - --add-entry="Tomb name") - [[ $? = 0 ]] && exec _main - - UNDERTAKER=${vars[(ws@:@)1]} - re='^[A-Za-z0-9]+$' - [[ $UNDERTAKER =~ $re ]] || { - _zenwarn "Warning" "Invalid characters in username!" - exec _delete - } - - TOMBNAME=${vars[(ws@:@)2]} - [[ $TOMBNAME =~ $re ]] || { - _zenwarn "Warning" "Invalid characters in tomb name!" - exec _delete - } - - _zeninfo "gmakehook" "Plug in your USB key and click OK." - sleep 1 - lsblk -npl | awk -F" " '{print $1 " " $4}' | grep '^/dev/sd.. ' > ./.devs - - USBKEY=$(zenity \ - --window-icon="$MONMORT" \ - --title="Choose USB key" \ - --list \ - --text="Choose your USB key to use" \ - --separator=" " \ - --column="Device path" \ - --column="Device size" \ - $(cat ./.devs)) - [[ $? = 0 ]] || exec _main - - _sudo - _mountkey - - [[ -f $hooks ]] && { - _zenques "Warning! There is already an existing hook. Do you want to overwrite?" - [[ $? = 0 ]] && _zeninfo "gmakehook" "Postponing..." && _umountkey && exec _main - } - - print "delete:${UNDERTAKER}:${TOMBNAME}" >> sudo tee $hooks - _umountkey && _zeninfo "Success" "$hooks written successfully!\nPlug the USB key in a coffin to activate it." - exec _main -} -# }}} - -function _ { rm ./.devs } -exec _main