itremoved web, restructured sacrist - 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 80bb8a40f1e53059404cd13a0d321127b0f8d072 /git/coffin/commit/80bb8a40f1e53059404cd13a0d321127b0f8d072.gph parazyd.org 70 1parent c72765a0c46be65f742dca8abf3cf2ae2f0ba319 /git/coffin/commit/c72765a0c46be65f742dca8abf3cf2ae2f0ba319.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Mon, 22 Feb 2016 15:01:15 +0100 Err parazyd.org 70 i Err parazyd.org 70 iremoved web, restructured sacrist Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i A TODO | 7 +++++++ Err parazyd.org 70 i M bin/mourner | 2 +- Err parazyd.org 70 i M bin/sacrist | 148 +++++++++++++++++++++---------- Err parazyd.org 70 i D web/index.php | 50 ------------------------------- Err parazyd.org 70 i D web/tomb.php | 28 ---------------------------- Err parazyd.org 70 i D web/undertaker | 47 ------------------------------- Err parazyd.org 70 i Err parazyd.org 70 i6 files changed, 111 insertions(+), 171 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/TODO b/TODO /git/coffin/file/TODO.gph parazyd.org 70 it@@ -0,0 +1,7 @@ Err parazyd.org 70 i+* ssh pubkeys Err parazyd.org 70 i+* pwless keys Err parazyd.org 70 i+* ssh/gpg Err parazyd.org 70 i+* devuan raspi image Err parazyd.org 70 i+* test suite Err parazyd.org 70 i+* yubikeys Err parazyd.org 70 i+* consider genpasswd Err parazyd.org 70 1diff --git a/bin/mourner b/bin/mourner /git/coffin/file/bin/mourner.gph parazyd.org 70 it@@ -4,7 +4,7 @@ Err parazyd.org 70 i # Err parazyd.org 70 i # ~ parazyd Err parazyd.org 70 i Err parazyd.org 70 i-pattern='sd[b-z][1-9]$' Err parazyd.org 70 i+pattern='sd[a-z][1-9]$' Err parazyd.org 70 i coproc inotifywait --monitor --event create,delete --format '%e %w%f' /dev Err parazyd.org 70 i Err parazyd.org 70 i while read -r -u "${COPROC[0]}" event file; do Err parazyd.org 70 1diff --git a/bin/sacrist b/bin/sacrist /git/coffin/file/bin/sacrist.gph parazyd.org 70 it@@ -6,81 +6,139 @@ Err parazyd.org 70 i Err parazyd.org 70 i 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+keyuuid=$(blkid $device | awk -F\" '{print $2}') Err parazyd.org 70 i Err parazyd.org 70 i-tmptombs="/tmp/tombs" Err parazyd.org 70 i-temptombs="/tmp/tombs2" Err parazyd.org 70 i-lockfile="/tmp/coffinlock" Err parazyd.org 70 i-keymount="/media/tombkey" Err parazyd.org 70 i-coffindot=".coffin" Err parazyd.org 70 i+# Vars Err parazyd.org 70 i+tmptombs="/tmp/tombs" # Info about opened tombs, holds keyuuid, keyhash and tombname Err parazyd.org 70 i+tmptombs2="/tmp/tombs2" # Temp tempfile, for updating $tmptombs Err parazyd.org 70 i+graveyard="/home/graveyard" # Our graveyard, with all the tombs Err parazyd.org 70 i+keymount="/media/tombkey" # Directory where keys get mounted Err parazyd.org 70 i+coffindot="$keymount/.coffin" # .coffin directory on the usb key Err parazyd.org 70 i+ttab="$coffindot/ttab" # Our ttab Err parazyd.org 70 i+createme="$coffindot/create.me" # New tomb creation trigger Err parazyd.org 70 i+tomb="/usr/local/bin/tomb" Err parazyd.org 70 i Err parazyd.org 70 i-# debugs 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-echo "I am $happenz" Err parazyd.org 70 i-# end debugs Err parazyd.org 70 i- Err parazyd.org 70 i-# echo partitions to file for webadmin Err parazyd.org 70 i-lsblk -npl | awk -F" " '{print $1}' | grep ^/dev/sd.. > /home/parazyd/devel/tombox/web/devs Err parazyd.org 70 i Err parazyd.org 70 i+# {{{ Functions Err parazyd.org 70 i _mountkey() { Err parazyd.org 70 i mkdir -p $keymount Err parazyd.org 70 i mount $device $keymount Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-_get_ttab() { ttab=`ls $keymount/$coffindot | awk -F. '{print $1}'` } Err parazyd.org 70 i+_ttabmagic() { Err parazyd.org 70 i+ # Loop entire ttab and do stuff for tombs that want to be opened Err parazyd.org 70 i+ _msg info "Doing ttab magic..." Err parazyd.org 70 i+ line=0 Err parazyd.org 70 i+ for entry in $(cat $ttab); do Err parazyd.org 70 i+ let line=$line+1 Err parazyd.org 70 i+ _msg info "Found line $line..." Err parazyd.org 70 i+ if [[ $(echo $entry | awk -F: '{print $4}') == "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+ tombname=$(echo $entry | awk -F: '{print $2}') Err parazyd.org 70 i+ echo "Tomb name: $tombname" Err parazyd.org 70 i+ _comparekey Err parazyd.org 70 i+ if [[ $happenz == "close" ]]; then Err parazyd.org 70 i+ _msg warn "Comparekey true" Err parazyd.org 70 i+ sudo -u $undertaker $tomb slam $tombname Err parazyd.org 70 i+ cp $tmptombs $tmptombs2 Err parazyd.org 70 i+ grep -v $keyhash $tmptombs2 > $tmptombs; chmod 600 $tmptombs; _msg info "Updated $tmptombs" Err parazyd.org 70 i+ rm $tmptombs2 Err parazyd.org 70 i+ continue Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ _msg warn "Comparekey false" Err parazyd.org 70 i+ tombpass=$(echo $entry | awk -F: '{print $3}') Err parazyd.org 70 i+ echo "Tomb passphrase: $tombpass" Err parazyd.org 70 i+ sudo -u $undertaker $tomb open $graveyard/$tombname.tomb -k $coffindot/$tombname.key \ Err parazyd.org 70 i+ --unsafe --tomb-pwd $tombpass # Deal with this shit somehow! Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ -d "/media/$tombname" ]]; then Err parazyd.org 70 i+ echo "$undertaker:$keyhash:$keyuuid" >> $tmptombs; chmod 600 $tmptombs; _msg info "Added info to $tmptombs" Err parazyd.org 70 i+ else Err parazyd.org 70 i+ _msg warn "Nothing added to $tmptombs" Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ done Err parazyd.org 70 i+ umount $keymount; rmdir $keymount; _msg info "Unmounted and deleted $keymount" Err parazyd.org 70 i+} Err parazyd.org 70 i Err parazyd.org 70 i _hashkey() { Err parazyd.org 70 i- _get_ttab Err parazyd.org 70 i- cat $keymount/$coffindot/$ttab.key \ Err parazyd.org 70 i- | sha512sum \ Err parazyd.org 70 i- | awk -F" " '{print $1}' Err parazyd.org 70 i+ cat $coffindot/$tombname.key | sha512sum | awk -F" " '{print $1}' Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-_compare_key() { Err parazyd.org 70 i- keyhash=`_hashkey` Err parazyd.org 70 i- if [[ ( `cat $tmptombs | grep $keyhash | grep $keyuuid` ) ]]; then Err parazyd.org 70 i+_comparekey() { Err parazyd.org 70 i+ keyhash=$(_hashkey) Err parazyd.org 70 i+ if [[ ( $(cat $tmptombs | grep $keyhash | grep $keyuuid) ) ]]; then Err parazyd.org 70 i happenz=close Err parazyd.org 70 i else Err parazyd.org 70 i happenz=open Err parazyd.org 70 i fi Err parazyd.org 70 i } 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=$(cat $createme | awk -F: '{print $1}') Err parazyd.org 70 i+ tombname=$(cat $createme | awk -F: '{print $2}') Err parazyd.org 70 i+ tombpass=$(cat $createme | awk -F: '{print $3}') Err parazyd.org 70 i+ tombsize=$(cat $createme | awk -F: '{print $4}') 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+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo -u $undertaker $tomb dig -s $tombsize $graveyard/$tombname.tomb Err parazyd.org 70 i+ sudo -u $undertaker $tomb forge $graveyard/$tombname.key --unsafe --tomb-pwd "$tombpass" Err parazyd.org 70 i+ sudo -u $undertaker $tomb lock $graveyard/$tombname.tomb -k $graveyard/$tombname.key \ Err parazyd.org 70 i+ --unsafe --tomb-pwd "$tombpass" Err parazyd.org 70 i+ mv $graveyard/$tombname.key $coffindot/ && chown $undertaker:$undertaker $coffindot/$tombname.key && \ Err parazyd.org 70 i+ _msg info "Moved and chowned keyfile" Err parazyd.org 70 i+ echo "$undertaker:$tombname:$tombpass:true" >> $ttab Err parazyd.org 70 i+ _msg info "Wrote to $ttab" Err parazyd.org 70 i+ rm $createme && _msg info "Removed $createme" Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+_endgame() { Err parazyd.org 70 i+ # Mr. Proper Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i _msg() { Err parazyd.org 70 i- if [[ $1 == "err" ]]; then Err parazyd.org 70 i- echo $fg_bold[red] "[E] $2" 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 elif [[ $1 == "warn" ]]; then Err parazyd.org 70 i- echo $fg_bold[cyan] "[W] $2" Err parazyd.org 70 i+ echo -e "\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 $fg_bold[orange] "[i] $2" Err parazyd.org 70 i+ echo -e "\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 i+ Err parazyd.org 70 i+# Main Err parazyd.org 70 i Err parazyd.org 70 i if [[ $happenz == "CREATE" ]]; then Err parazyd.org 70 i _mountkey Err parazyd.org 70 i- if [[ -d "$keymount/$coffindot" ]]; then Err parazyd.org 70 i- _get_ttab; _msg info "Got undertaker: $ttab" Err parazyd.org 70 i- Err parazyd.org 70 i- _compare_key Err parazyd.org 70 i- if [[ $happenz == "close" ]]; then Err parazyd.org 70 i- _msg info "Comparekey true" Err parazyd.org 70 i- tombname=`cat $tmptombs | grep $keyhash | awk -F: '{print $1}'`; _msg info "Got tombname: $ttab" Err parazyd.org 70 i- tomb slam $tombname Err parazyd.org 70 i- cp $tmptombs $temptombs Err parazyd.org 70 i- grep -v "$keyhash" $temptombs > $tmptombs; _msg info "Put stuff in $tmptombs" Err parazyd.org 70 i- rm $temptombs Err parazyd.org 70 i- umount $keymount; rmdir $keymount; _msg info "Unmounted usb" Err parazyd.org 70 i- elif [[ $happenz == "open" ]]; then Err parazyd.org 70 i- _msg info "Comparekey false" Err parazyd.org 70 i- _get_ttab Err parazyd.org 70 i- echo -e "$ttab:$keyhash:$keyuuid\n" >> $tmptombs ; _msg info "Added it to $tmptombs" Err parazyd.org 70 i- su $ttab -c "tomb open /home/$ttab/$ttab -k $keymount/$coffindot/$ttab.key --unsafe --tomb-pwd lalala" Err parazyd.org 70 i- Err parazyd.org 70 i- umount $keymount; rmdir $keymount; _msg info "Unmounted usb" Err parazyd.org 70 i+ if [[ -d "$coffindot" ]]; then Err parazyd.org 70 i+ _msg info "$coffindot found..." Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ -f "$createme" ]]; then Err parazyd.org 70 i+ _create_new_tomb Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ if ! [[ -f "$ttab" ]]; then Err parazyd.org 70 i+ _msg error "No ttab!" Err parazyd.org 70 i+ umount $keymount; rmdir $keymount; _msg info "Unmounted and removed $keymount" Err parazyd.org 70 i+ else Err parazyd.org 70 i+ _ttabmagic Err parazyd.org 70 i fi Err parazyd.org 70 i else Err parazyd.org 70 i- _msg err "No valid .coffin dir!" Err parazyd.org 70 i- umount $keymount; rmdir $keymount; Err parazyd.org 70 i+ _msg error "No valid .coffin directory! Exiting..." Err parazyd.org 70 i+ umount $keymount; rmdir $keymount; _msg info "Umounted and removed $keymount" Err parazyd.org 70 i fi Err parazyd.org 70 i fi Err parazyd.org 70 1diff --git a/web/index.php b/web/index.php /git/coffin/file/web/index.php.gph parazyd.org 70 it@@ -1,50 +0,0 @@ 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- tombox administration Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-

tombox administration

Err parazyd.org 70 i-
Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-

Create new tomb and key

Err parazyd.org 70 i-
Err parazyd.org 70 i- Username: Err parazyd.org 70 i- Tomb size (MiB): 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-
Err parazyd.org 70 i- Err parazyd.org 70 i-

Change tomb's key

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- 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- Err parazyd.org 70 1diff --git a/web/tomb.php b/web/tomb.php /git/coffin/file/web/tomb.php.gph parazyd.org 70 it@@ -1,28 +0,0 @@ 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- Err parazyd.org 70 i- Creating new tomb... Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-

" . $retval; Err parazyd.org 70 i- ?> Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 1diff --git a/web/undertaker b/web/undertaker /git/coffin/file/web/undertaker.gph parazyd.org 70 it@@ -1,47 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env zsh Err parazyd.org 70 i-# Err parazyd.org 70 i-# Shell script for webadmin to work as a middleman between the web and Err parazyd.org 70 i-# rest of the tombox Err parazyd.org 70 i-# Err parazyd.org 70 i-# ~ parazyd Err parazyd.org 70 i- Err parazyd.org 70 i-keymount="/media/tombkey" Err parazyd.org 70 i-coffindot=".coffin" Err parazyd.org 70 i- Err parazyd.org 70 i-happenz=$1 Err parazyd.org 70 i-device=$2 Err parazyd.org 70 i-user=$3 Err parazyd.org 70 i-size=$4 Err parazyd.org 70 i- Err parazyd.org 70 i-if [[ $happenz == "CREATE" ]]; then Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ -d /home/$user ]]; then Err parazyd.org 70 i- echo "User already exists. Exiting..."; exit Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- sudo useradd -G tombox -m -s /bin/bash $user; echo "Added user: $user
" Err parazyd.org 70 i- sudo -u $user tomb dig -s $size /home/$user/$user; echo "Finished digging tomb
" Err parazyd.org 70 i- Err parazyd.org 70 i- sudo mkdir -p $keymount; echo "mkdir $keymount
" Err parazyd.org 70 i- sudo mount $device $keymount; echo "Mounted $device to $keymount
" Err parazyd.org 70 i- sudo mkdir $keymount/$coffindot; echo "mkdir $keymount/$coffindot
" Err parazyd.org 70 i- sudo chown -R $user:$user $keymount; echo "chown on those
" Err parazyd.org 70 i- Err parazyd.org 70 i- sudo -u $user tomb forge $keymount/$coffindot/$user.key --unsafe --tomb-pwd lalala ; \ Err parazyd.org 70 i- echo "Forged tomb's key at $keymount/$coffindot/$user.key
" Err parazyd.org 70 i- sudo -u $user tomb lock /home/$user/$user -k $keymount/$coffindot/$user.key --unsafe --tomb-pwd lalala ; \ Err parazyd.org 70 i- echo "Locked tomb with the key
" Err parazyd.org 70 i- Err parazyd.org 70 i- sudo umount $keymount; sudo rmdir $keymount; echo "Unmounted usb key
" Err parazyd.org 70 i-fi Err parazyd.org 70 i- Err parazyd.org 70 i-if [[ $happenz == "REVOKE" ]]; then Err parazyd.org 70 i- Err parazyd.org 70 i- sudo mount $device $keymount Err parazyd.org 70 i- if ! [[ -d $keymount/$coffindot ]]; then Err parazyd.org 70 i- echo "No valid $coffindot dir. Exiting..."; exit 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-fi Err parazyd.org 70 .