URI: 
       tgenerate random password for new tombs - 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 6220dc5a83eeff6355d94ce2b4243b8d932cd83c
   DIR parent 553b392eaf2505455427ce9c4d5bee583574261a
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Mon,  7 Mar 2016 16:29:23 +0100
       
       generate random password for new tombs
       
       Diffstat:
         M README.md                           |       2 ++
         M bin/sacrist                         |     117 ++++++++++++++++---------------
       
       2 files changed, 62 insertions(+), 57 deletions(-)
       ---
   DIR diff --git a/README.md b/README.md
       t@@ -11,6 +11,8 @@ Once you plug in your key again, that same tomb will be closed and your
        files are once again unreadable.
        
        ## Notes
       +* `gmakehook` can be used to create tombox hooks in a more user-friendly 
       +  manner. It is a GUI (zenity) helper script.
        
        ## Installation
        
   DIR diff --git a/bin/sacrist b/bin/sacrist
       t@@ -8,9 +8,12 @@ device=$1
        happenz=$2
        keyuuid=$(blkid $device | awk -F\" '{print $2}')
        
       -
        typeset -H keypass
       +typeset -H keyuuid
        typeset -H undertaker
       +typeset -H graveyard
       +typeset -H tombs
       +typeset -H tombpasswd
        
        # Vars
        graveyard="/home/graveyard" # Our graveyard, with all the tombs
       t@@ -23,21 +26,58 @@ hooks="$coffindot/hook"
        tomb="/usr/local/bin/tomb"
        tombpasswd="$graveyard/passwd"
        
       -# Hook syntax
       -# create:username:tombname:tombsize:passphrase
       -
        # Debugs
        print "Arg1: $1"
        print "Arg2: $2"
        print "Device path is: $device"
        print "Device UUID is: $keyuuid"
        
       -# {{{ Functions
       -_mountkey() {
       -    mkdir -p $keymount
       -    mount $device $keymount
       +# {{{ msg
       +_msg() {
       +    if [[ $1 == "error" ]]; then
       +        print "\e[1;31m[E] \e[0;31m$2 \e[0m"
       +    elif [[ $1 == "warn" ]]; then
       +        print "\e[1;33m[W] \e[0;33m$2 \e[0m"
       +    elif [[ $1 == "info" ]]; then
       +        print "\e[1;34m[i] \e[0;34m$2 \e[0m"
       +    fi
        }
       +# }}}
        
       +_umountkey() { umount $keymount; rmdir $keymount }
       +_mountkey() { mkdir -p $keymount; mount $device $keymount }
       +
       +_hashkey() { cat $coffindot/$tombid.key | sha512sum | awk -F" " '{print $1}' }
       +
       +_comparekey() {
       +    keyhash=$(_hashkey)
       +    if [[ ( $(cat $tombs | grep $keyhash | grep $keyuuid) ) ]]; then
       +        happenz=close
       +    else
       +        happenz=open
       +    fi
       +}
       +
       +_hooks() {
       +    for entry in $(cat $hooks); do
       +        let hook=$hook+1
       +        _msg info "Found hook $hook..."
       +
       +        # Check what's hook supposed to do
       +        if [[ ${entry[(ws@:@)1]} == "create" ]]; then
       +            _create_new_tomb
       +        elif [[ ${entry[(ws@:@)1]} == "delete" ]]; then
       +            #DELETE TOMB
       +        elif [[ ${entry[(ws@:@)1]} == "backup" ]]; then
       +            # do backup
       +        else
       +            _msg error "No valid hook syntax on hook $hook"
       +        fi
       +        rm $hooks && _msg info "Removed $hooks"
       +    done
       +}
       +
       +# {{{ ttabmagic
        _ttabmagic() {
            # Loop entire ttab and do stuff for tombs that want to be opened
            _msg info "Doing ttab magic..."
       t@@ -68,7 +108,7 @@ _ttabmagic() {
                    keypass=$(cat $tombpasswd | grep $keyhash | awk -F: '{print $2}')
                    print "Tomb passphrase: $keypass"
                    sudo -u $undertaker $tomb open $graveyard/$tombid.tomb -k $coffindot/$tombid.key \
       -                --unsafe --tomb-pwd "$keypass" # Deal with this
       +                --unsafe --tomb-pwd "$keypass"
        
                    if [[ -d "/media/$tombid" ]]; then
                        print "$undertaker:$keyhash:$keyuuid" >> $tombs && chmod 600 $tombs && _msg info "Added info to $tombs" 
       t@@ -80,45 +120,19 @@ _ttabmagic() {
            done
            umount $keymount && rmdir $keymount && _msg info "Unmounted and deleted $keymount"
        }
       +# }}}
        
       -_hashkey() {
       -    cat $coffindot/$tombid.key | sha512sum | awk -F" " '{print $1}'
       -}
       -
       -_comparekey() {
       -    keyhash=$(_hashkey)
       -    if [[ ( $(cat $tombs | grep $keyhash | grep $keyuuid) ) ]]; then
       -        happenz=close
       -    else
       -        happenz=open
       -    fi
       -}
       -
       -_hooks() {
       -    for entry in $(cat $hooks); do
       -        let hook=$hook+1
       -        _msg info "Found hook $hook..."
       -
       -        # Check what's hook supposed to do
       -        if [[ ${entry[(ws@:@)1]} == "create" ]]; then
       -            _create_new_tomb
       -        elif [[ ${entry[(ws@:@)1]} == "delete" ]]; then
       -            #DELETE TOMB
       -        elif [[ ${entry[(ws@:@)1]} == "foo" ]]; then
       -            # do foo
       -        else
       -            _msg error "No valid hook syntax on hook $hook"
       -        fi
       -        rm $hooks && _msg info "Removed $hooks"
       -    done
       -}
       -
       +# {{{ _create_new_tomb
        _create_new_tomb() {
       +    # TODO: options for webdav, sshfs, ipfs
       +    # TODO: recognize custom post/bind hooks and implement them inside the new tomb
       +    # TODO: delete/backup/foo hooks
       +
            _msg info "Creating new tomb!"
            undertaker=${entry[(ws@:@)2]}
            tombid=${entry[(ws@:@)3]}
            tombsize=${entry[(ws@:@)4]}
       -    keypass=${entry[(ws@:@)5]}
       +    keypass=$(pwgen 30 -1 1)
        
            if ! [[ ( $(id $undertaker) ) ]]; then
                _msg warn "No user called $undertaker found. Creating..."
       t@@ -141,26 +155,14 @@ _create_new_tomb() {
            _msg info "Wrote to $ttab and $tombpasswd"
            # rm $createme && _msg info "Removed $createme"
        }
       +# }}}
        
        _endgame() {
            # Mr. Proper
        }
        
       -_msg() {
       -    if [[ $1 == "error" ]]; then
       -        print "\e[1;31m[E] \e[0;31m$2 \e[0m"
       -    elif [[ $1 == "warn" ]]; then
       -        print "\e[1;33m[W] \e[0;33m$2 \e[0m"
       -    elif [[ $1 == "info" ]]; then
       -        print "\e[1;34m[i] \e[0;34m$2 \e[0m"
       -    fi
       -}
       -# }}}
       -
       -#---------------------------------------------------------------------------------------------------
       -#------------------------------------------------------ Main ---------------------------------------
       -#---------------------------------------------------------------------------------------------------
        
       +# {{{ MAIN
        if [[ $happenz == "CREATE" ]]; then
            _mountkey
            if [[ -d "$coffindot" ]]; then
       t@@ -180,6 +182,7 @@ if [[ $happenz == "CREATE" ]]; then
                fi
            else
                _msg error "No valid .coffin directory! Exiting..."
       -        umount $keymount && rmdir $keymount && _msg info "Umounted and removed $keymount"
       +        _umountkey && _msg info "Unmounted and removed $keymount"
            fi
        fi
       +# }}}