commit e65bdd247750cddf2e3adc4ac796e74865995215
parent f512d6c5537da9637e00dc3c8840a6a9819fef0c
Author: parazyd <parazyd@dyne.org>
Date: Thu, 25 Feb 2016 17:28:26 +0100
restructure, add support for hooks
Diffstat:
M | bin/sacrist | | | 87 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ |
1 file changed, 61 insertions(+), 26 deletions(-)
diff --git a/bin/sacrist b/bin/sacrist
@@ -9,14 +9,18 @@ happenz=$2
keyuuid=$(blkid $device | awk -F\" '{print $2}')
# Vars
-tmptombs="/tmp/tombs" # Info about opened tombs, holds keyuuid, keyhash and tombid
-tmptombs2="/tmp/tombs2" # Temp tempfile, for updating $tmptombs
graveyard="/home/graveyard" # Our graveyard, with all the tombs
+tombs="$graveyard/tombs" # Info about opened tombs, holds keyuuid, keyhash and tombid
+tmptombs="$graveyard/tmptombs" # Temp tempfile, for updating $tombs
keymount="/media/tombkey" # Directory where keys get mounted
coffindot="$keymount/.coffin" # .coffin directory on the usb key
ttab="$coffindot/ttab" # Our ttab
-createme="$coffindot/create.me" # New tomb creation trigger
+hooks="$coffindot/hook"
tomb="/usr/local/bin/tomb"
+tombpasswd="$graveyard/passwd"
+
+# Hook syntax
+# create:username:tombname:tombsize:passphrase
# Debugs
echo "Arg1: $1"
@@ -34,38 +38,43 @@ _ttabmagic() {
# Loop entire ttab and do stuff for tombs that want to be opened
_msg info "Doing ttab magic..."
line=0
+
for entry in $(cat $ttab); do
let line=$line+1
_msg info "Found line $line..."
- if [[ $(echo $entry | awk -F: '{print $4}') == "true" ]]; then
+
+ if [[ $(echo $entry | awk -F: '{print $3}') == "true" ]]; then
_msg info "Working on tomb from line $line..."
undertaker=$(echo $entry | awk -F: '{print $1}')
echo "Username: $undertaker"
tombid=$(echo $entry | awk -F: '{print $2}')
- echo "Tomb name: $tombid"
+ echo "Tomb name: $tombid.tomb"
_comparekey
+
if [[ $happenz == "close" ]]; then
_msg warn "Comparekey true"
sudo -u $undertaker $tomb slam $tombid
- cp $tmptombs $tmptombs2
- grep -v $keyhash $tmptombs2 > $tmptombs; chmod 600 $tmptombs; _msg info "Updated $tmptombs"
- rm $tmptombs2
+ cp $tombs $tmptombs
+ grep -v $keyhash $tmptombs > $tombs && chmod 600 $tombs && _msg info "Updated $tombs"
+ rm $tmptombs
continue
fi
+
_msg warn "Comparekey false"
- keypass=$(echo $entry | awk -F: '{print $3}')
+ keypass=$(cat $tombpasswd | grep $keyhash | awk -F: '{print $2}')
echo "Tomb passphrase: $keypass"
sudo -u $undertaker $tomb open $graveyard/$tombid.tomb -k $coffindot/$tombid.key \
- --unsafe --tomb-pwd $keypass # Deal with this shit somehow!
+ --unsafe --tomb-pwd "$keypass" # Deal with this shit somehow!
if [[ -d "/media/$tombid" ]]; then
- echo "$undertaker:$keyhash:$keyuuid" >> $tmptombs; chmod 600 $tmptombs; _msg info "Added info to $tmptombs"
+ echo "$undertaker:$keyhash:$keyuuid" >> $tombs && chmod 600 $tombs && _msg info "Added info to $tombs"
else
- _msg warn "Nothing added to $tmptombs"
+ _msg warn "Nothing added to $tombs"
fi
fi
+
done
- umount $keymount; rmdir $keymount; _msg info "Unmounted and deleted $keymount"
+ umount $keymount && rmdir $keymount && _msg info "Unmounted and deleted $keymount"
}
_hashkey() {
@@ -74,19 +83,38 @@ _hashkey() {
_comparekey() {
keyhash=$(_hashkey)
- if [[ ( $(cat $tmptombs | grep $keyhash | grep $keyuuid) ) ]]; then
+ 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 [[ $(echo $entry | awk -F: '{print $1}') == "create" ]]; then
+ _create_new_tomb
+ elif [[ $(echo $entry | awk -F: '{print $1}') == "delete" ]]; then
+ #DELETE TOMB
+ elif [[ $(echo $entry | awk -F: '{print $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() {
_msg info "Creating new tomb!"
- undertaker=$(cat $createme | awk -F: '{print $1}')
- tombid=$(cat $createme | awk -F: '{print $2}')
- keypass=$(cat $createme | awk -F: '{print $3}')
- tombsize=$(cat $createme | awk -F: '{print $4}')
+ undertaker=$(echo $entry | awk -F: '{print $2}')
+ tombid=$(echo $entry | awk -F: '{print $3}')
+ tombsize=$(echo $entry| awk -F: '{print $4}')
+ keypass=$(echo $entry | awk -F: '{print $5}')
if ! [[ ( $(id $undertaker) ) ]]; then
_msg warn "No user called $undertaker found. Creating..."
@@ -98,11 +126,14 @@ _create_new_tomb() {
sudo -u $undertaker $tomb forge $graveyard/$tombid.key --unsafe --tomb-pwd "$keypass"
sudo -u $undertaker $tomb lock $graveyard/$tombid.tomb -k $graveyard/$tombid.key \
--unsafe --tomb-pwd "$keypass"
+
mv $graveyard/$tombid.key $coffindot/ && chown $undertaker:$undertaker $coffindot/$tombid.key && \
_msg info "Moved and chowned keyfile"
- echo "$undertaker:$tombid:$keypass:true" >> $ttab
- _msg info "Wrote to $ttab"
- rm $createme && _msg info "Removed $createme"
+ echo "$undertaker:${tombid}:true" >> $ttab
+ keyhash=$(_hashkey)
+ echo "${keyhash}:${keypass}" >> $tombpasswd
+ _msg info "Wrote to $ttab and $tombpasswd"
+ # rm $createme && _msg info "Removed $createme"
}
_endgame() {
@@ -120,25 +151,29 @@ _msg() {
}
# }}}
-# Main
+#---------------------------------------------------------------------------------------------------
+#------------------------------------------------------ Main ---------------------------------------
+#---------------------------------------------------------------------------------------------------
if [[ $happenz == "CREATE" ]]; then
_mountkey
if [[ -d "$coffindot" ]]; then
_msg info "$coffindot found..."
- if [[ -f "$createme" ]]; then
- _create_new_tomb
+ if [[ -f "$hooks" ]]; then
+ _hooks
+ else
+ _msg warn "No hooks detected"
fi
if ! [[ -f "$ttab" ]]; then
_msg error "No ttab!"
- umount $keymount; rmdir $keymount; _msg info "Unmounted and removed $keymount"
+ umount $keymount && rmdir $keymount && _msg info "Unmounted and removed $keymount"
else
_ttabmagic
fi
else
_msg error "No valid .coffin directory! Exiting..."
- umount $keymount; rmdir $keymount; _msg info "Umounted and removed $keymount"
+ umount $keymount && rmdir $keymount && _msg info "Umounted and removed $keymount"
fi
fi