itseparate features; implement ssl password encryption; safer exec - 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 14f478dc78b5d37fa6b5730df4ad6203fa7b37e5 /git/coffin/commit/14f478dc78b5d37fa6b5730df4ad6203fa7b37e5.gph parazyd.org 70 1parent 05f5ac344e1b907c372b3b88b28637b7f5316a5d /git/coffin/commit/05f5ac344e1b907c372b3b88b28637b7f5316a5d.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Thu, 6 Oct 2016 14:57:11 +0200 Err parazyd.org 70 i Err parazyd.org 70 iseparate features; implement ssl password encryption; safer exec Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M Makefile | 2 +- Err parazyd.org 70 i M config.mk | 4 +++- Err parazyd.org 70 i M sacrist | 31 ++++++++++++++++--------------- Err parazyd.org 70 i A zlibs/feature-ssh | 53 ++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zlibs/feature-webdav | 75 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i D zlibs/features | 126 ------------------------------- Err parazyd.org 70 i M zlibs/hooks | 113 +++++++++++++------------------ Err parazyd.org 70 i D zlibs/keyfiles | 75 ------------------------------- Err parazyd.org 70 i A zlibs/keyops | 106 ++++++++++++++++++++++++++++++ Err parazyd.org 70 i M zlibs/mounts | 10 +++++----- Err parazyd.org 70 i A zlibs/tombops | 81 ++++++++++++++++++++++++++++++ Err parazyd.org 70 i M zlibs/ttab | 47 +++++++++---------------------- Err parazyd.org 70 i Err parazyd.org 70 i12 files changed, 400 insertions(+), 323 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/Makefile b/Makefile /git/coffin/file/Makefile.gph parazyd.org 70 it@@ -57,7 +57,7 @@ clean: Err parazyd.org 70 i dist: clean Err parazyd.org 70 i @echo creating dist tarball Err parazyd.org 70 i @mkdir -p coffin-${VERSION} Err parazyd.org 70 i- @cp -f coffin config.mk LICENSE Makefile README.md NOTES.md \ Err parazyd.org 70 i+ @cp -f coffin config.mk LICENSE Makefile README.md \ Err parazyd.org 70 i sacrist tomb ${SRC} coffin-${VERSION} Err parazyd.org 70 i @cp -r zlibs helpers zuper extra coffin-${VERSION} Err parazyd.org 70 i @rm -f coffin-${VERSION}/zuper/.git Err parazyd.org 70 1diff --git a/config.mk b/config.mk /git/coffin/file/config.mk.gph parazyd.org 70 it@@ -4,7 +4,9 @@ Err parazyd.org 70 i VERSION=0.4 Err parazyd.org 70 i Err parazyd.org 70 i # remove a feature to disable it Err parazyd.org 70 i-FEATURES = webdav ssh Err parazyd.org 70 i+# available features: webdav, ssh Err parazyd.org 70 i+FEATURES = webdav Err parazyd.org 70 i+#FEATURES = webdav ssh Err parazyd.org 70 i Err parazyd.org 70 i # customize below to fit your system Err parazyd.org 70 i PREFIX = /usr/local Err parazyd.org 70 1diff --git a/sacrist b/sacrist /git/coffin/file/sacrist.gph parazyd.org 70 it@@ -27,11 +27,10 @@ LOG=${LOG:-""} Err parazyd.org 70 i swapoff -a ## I feel so safe Err parazyd.org 70 i Err parazyd.org 70 i R="$(dirname $0)" Err parazyd.org 70 i-source $R/../share/zlibs/zuper Err parazyd.org 70 i+source $R/../share/zuper/zuper Err parazyd.org 70 i Err parazyd.org 70 i # USB key Err parazyd.org 70 i vars+=(device keyuuid) Err parazyd.org 70 i- Err parazyd.org 70 i vars+=(GRAVEYARD TOMBS TMPTOMBS TOMBPASSWD) Err parazyd.org 70 i vars+=(KEYMOUNT COFFINDOT TTAB HOOKS) Err parazyd.org 70 i vars+=(keypass undertaker tombid) Err parazyd.org 70 it@@ -40,13 +39,15 @@ vars+=(happenz device keyuuid) Err parazyd.org 70 i ## zsh magic Err parazyd.org 70 i path+=() Err parazyd.org 70 i Err parazyd.org 70 i-source $R/../share/zlibs/features Err parazyd.org 70 i+source $R/../share/zlibs/feature-ssh Err parazyd.org 70 i+source $R/../share/zlibs/feature-webdav Err parazyd.org 70 i source $R/../share/zlibs/hooks Err parazyd.org 70 i-source $R/../share/zlibs/keyfiles Err parazyd.org 70 i+source $R/../share/zlibs/keyops Err parazyd.org 70 i source $R/../share/zlibs/mounts Err parazyd.org 70 i+source $R/../share/zlibs/tombops Err parazyd.org 70 i source $R/../share/zlibs/ttab Err parazyd.org 70 i Err parazyd.org 70 i-source $R/../share/zlibs/zuper.init Err parazyd.org 70 i+source $R/../share/zuper/zuper.init Err parazyd.org 70 i Err parazyd.org 70 i LOCK=$R/.lock Err parazyd.org 70 i [[ -f $LOCK ]] && { warn "Lock found. Wait until finished." && exit } Err parazyd.org 70 it@@ -55,9 +56,9 @@ touch $LOCK Err parazyd.org 70 i # Check for a configuration file Err parazyd.org 70 i # [[ -f ".coffinrc" ]] && parse-config Err parazyd.org 70 i Err parazyd.org 70 i-device=$1 && xxx "Device: $device" Err parazyd.org 70 i-happenz=$2 && xxx "Happenz: $happenz" Err parazyd.org 70 i-keyuuid=$(lsblk -no uuid $device) && xxx "Key UUID: $keyuuid" Err parazyd.org 70 i+device=$1 Err parazyd.org 70 i+happenz=$2 Err parazyd.org 70 i+keyuuid=$(lsblk -no uuid $device) Err parazyd.org 70 i Err parazyd.org 70 i GRAVEYARD="/home/graveyard" # Our graveyard, with all the tombs Err parazyd.org 70 i TOMBS="$GRAVEYARD/tombs" # Info about opened tombs, holds keyuuid, keyhash and tombid Err parazyd.org 70 it@@ -73,21 +74,19 @@ TOMB="$R/tomb" Err parazyd.org 70 i req=(happenz device) Err parazyd.org 70 i ckreq || { Err parazyd.org 70 i die "Not called through mourner. Exiting..." Err parazyd.org 70 i- clean Err parazyd.org 70 i- exit Err parazyd.org 70 i+ #clean Err parazyd.org 70 i+ exit 1 Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i-act "Coffin v${coffin_version}, Cryptographic office filer for important nuggets " Err parazyd.org 70 i+notice "Coffin v${coffin_version}, Cryptographic office filer for important nuggets" Err parazyd.org 70 i Err parazyd.org 70 i [[ $happenz == "CREATE" ]] && { Err parazyd.org 70 i mount-key $device || { die "Key not mounted successfully." && exit 1 } Err parazyd.org 70 i Err parazyd.org 70 i if [[ -d "$COFFINDOT" ]]; then Err parazyd.org 70 i act "Found .coffin" Err parazyd.org 70 i- [[ -f "$HOOKS" ]] && xxx "Found hooks" && \ Err parazyd.org 70 i- check-hooks Err parazyd.org 70 i- [[ -f "$TTAB" ]] && xxx "Found ttab" && \ Err parazyd.org 70 i- ttab-magic Err parazyd.org 70 i+ [[ -f "$HOOKS" ]] && check-hooks Err parazyd.org 70 i+ [[ -f "$TTAB" ]] && ttab-magic Err parazyd.org 70 i else Err parazyd.org 70 i warn "No .coffin directory" Err parazyd.org 70 i fi Err parazyd.org 70 it@@ -101,3 +100,5 @@ act "Coffin v${coffin_version}, Cryptographic office filer for important nuggets Err parazyd.org 70 i # TODO: Some kind of endgame Err parazyd.org 70 i rm -f $LOCK && exit 0 || exit 1 Err parazyd.org 70 i } Err parazyd.org 70 i+ Err parazyd.org 70 i+exit 1 Err parazyd.org 70 1diff --git a/zlibs/feature-ssh b/zlibs/feature-ssh /git/coffin/file/zlibs/feature-ssh.gph parazyd.org 70 it@@ -0,0 +1,53 @@ Err parazyd.org 70 i+#!/usr/bin/env zsh Err parazyd.org 70 i+# Err parazyd.org 70 i+# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i+# coffin is written and maintained by Ivan J. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This file is part of coffin Err parazyd.org 70 i+# Err parazyd.org 70 i+# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i+# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i+# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i+# (at your option) any later version. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i+# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i+# GNU General Public License for more details. Err parazyd.org 70 i+# Err parazyd.org 70 i+# You should have received a copy of the GNU General Public License Err parazyd.org 70 i+# along with this source code. If not, see . Err parazyd.org 70 i+ Err parazyd.org 70 i+create-sshfs-hook() { Err parazyd.org 70 i+ fn create-sshfs-hook Err parazyd.org 70 i+ req=(entry tombid COFFINDOT undertaker) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ $entry =~ sshfs && -f $COFFINDOT/$tombid.pub ]]; then Err parazyd.org 70 i+ act "Found SSH data. Setting up..." Err parazyd.org 70 i+ Err parazyd.org 70 i+ [[ -d /home/$undertaker/.ssh ]] || mkdir -p /home/$undertaker/.ssh Err parazyd.org 70 i+ cat $COFFINDOT/$tombid.pub >> /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i+ chown -R $undertaker:$undertaker /home/$undertaker/.ssh Err parazyd.org 70 i+ chmod 700 /home/$undertaker/.ssh && chmod 600 /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i+ Err parazyd.org 70 i+ ## NOTE: maybe remove SSH key from usb, consider deletion Err parazyd.org 70 i+ else Err parazyd.org 70 i+ act "No SSH data found" Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+delete-sshfs-hook() { Err parazyd.org 70 i+ fn delete-sshfs-hook $* Err parazyd.org 70 i+ req=(undertaker tombid) Err parazyd.org 70 i+ local undertaker="$1" Err parazyd.org 70 i+ local tombid="$2" Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ local authkeys="/home/$undertaker/.ssh/authorized_keys" Err parazyd.org 70 i+ Err parazyd.org 70 i+ grep -v $tombid $authkeys > $authkeys.tmp Err parazyd.org 70 i+ mv $authkeys.tmp $authkeys Err parazyd.org 70 i+ Err parazyd.org 70 i+ act "Deleted SSH data" Err parazyd.org 70 i+} Err parazyd.org 70 1diff --git a/zlibs/feature-webdav b/zlibs/feature-webdav /git/coffin/file/zlibs/feature-webdav.gph parazyd.org 70 it@@ -0,0 +1,75 @@ Err parazyd.org 70 i+#!/usr/bin/env zsh Err parazyd.org 70 i+# Err parazyd.org 70 i+# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i+# coffin is written and maintained by Ivan J. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This file is part of coffin Err parazyd.org 70 i+# Err parazyd.org 70 i+# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i+# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i+# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i+# (at your option) any later version. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i+# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i+# GNU General Public License for more details. Err parazyd.org 70 i+# Err parazyd.org 70 i+# You should have received a copy of the GNU General Public License Err parazyd.org 70 i+# along with this source code. If not, see . Err parazyd.org 70 i+ Err parazyd.org 70 i+create-webdav-hook() { Err parazyd.org 70 i+ fn create-webdav-hook Err parazyd.org 70 i+ req=(entry COFFINDOT davconf davpass undertaker tombid) Err parazyd.org 70 i+ local davconf="/etc/apache2/sites-available/coffindav.conf" Err parazyd.org 70 i+ local davpass="/etc/apache2/DAV/davpasswd" Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ $entry =~ webdav && -f $COFFINDOT/davpasswd ]]; then Err parazyd.org 70 i+ act "Found WebDAV data. Setting up..." Err parazyd.org 70 i+ Err parazyd.org 70 i+ cat $COFFINDOT/davpasswd >> $davpass Err parazyd.org 70 i+ [[ $? = 0 ]] || { Err parazyd.org 70 i+ die "Failed setting up WebDAV." Err parazyd.org 70 i+ return 1 } Err parazyd.org 70 i+ Err parazyd.org 70 i+ rm $COFFINDOT/davpasswd Err parazyd.org 70 i+ gpasswd -a www-data $undertaker # NOTE: consider standalone group Err parazyd.org 70 i+ Err parazyd.org 70 i+ sed -i -e :a -e '$d;N;2,3ba' -e 'P;D' $davconf Err parazyd.org 70 i+ cat <> $davconf Err parazyd.org 70 i+ Err parazyd.org 70 i+ alias /${tombid} /media/${tombid} Err parazyd.org 70 i+ Err parazyd.org 70 i+ Dav On Err parazyd.org 70 i+ AllowOverride none Err parazyd.org 70 i+ Options Indexes 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+ act "Wrote to $davconf" Err parazyd.org 70 i+ /etc/init.d/apache2 reload || warn "Apache is funky" Err parazyd.org 70 i+# rm $COFFINDOT/webdav.conf Err parazyd.org 70 i+ act "Done setting up WebDAV" Err parazyd.org 70 i+ else Err parazyd.org 70 i+ act "No WebDAV data found" Err parazyd.org 70 i+ return 0 Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+delete-webdav-hook() { Err parazyd.org 70 i+ fn delete-webdav-hook $* Err parazyd.org 70 i+ freq=(davconf) Err parazyd.org 70 i+ local davconf="/etc/apache2/sites-available/coffindav.conf" Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ sed -i '/alias\ \/${tombid}/,+10 d' $davconf Err parazyd.org 70 i+ /etc/init.d/apache2 reload || warn "Apache is funky" Err parazyd.org 70 i+ act "Deleted WebDAV data" Err parazyd.org 70 i+} Err parazyd.org 70 1diff --git a/zlibs/features b/zlibs/features /git/coffin/file/zlibs/features.gph parazyd.org 70 it@@ -1,126 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env zsh Err parazyd.org 70 i-# Err parazyd.org 70 i-# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i-# coffin is written and maintained by Ivan J. Err parazyd.org 70 i-# Err parazyd.org 70 i-# This file is part of coffin Err parazyd.org 70 i-# Err parazyd.org 70 i-# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i-# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i-# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i-# (at your option) any later version. Err parazyd.org 70 i-# Err parazyd.org 70 i-# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i-# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i-# GNU General Public License for more details. Err parazyd.org 70 i-# Err parazyd.org 70 i-# You should have received a copy of the GNU General Public License Err parazyd.org 70 i-# along with this source code. If not, see . Err parazyd.org 70 i- Err parazyd.org 70 i-create-webdav-hook() { Err parazyd.org 70 i- fn create-webdav-hook Err parazyd.org 70 i- Err parazyd.org 70 i- davconf="/etc/apache2/sites-available/coffindav.conf" Err parazyd.org 70 i- davpass="/etc/apache2/DAV/davpasswd" Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ $entry =~ webdav && -f $COFFINDOT/davpasswd ]]; then Err parazyd.org 70 i- act "Found WebDAV data. Setting up..." Err parazyd.org 70 i- Err parazyd.org 70 i- cat $COFFINDOT/davpasswd >> $davpass Err parazyd.org 70 i- [[ $? = 0 ]] || { Err parazyd.org 70 i- die "Failed setting up WebDAV." Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- rm $COFFINDOT/davpasswd Err parazyd.org 70 i- gpasswd -a www-data $undertaker # NOTE: consider standalone group Err parazyd.org 70 i- act "Added new WebDAV user" Err parazyd.org 70 i- Err parazyd.org 70 i- sed -i -e :a -e '$d;N;2,3ba' -e 'P;D' $davconf Err parazyd.org 70 i-# cat $COFFINDOT/webdav.conf >> $davconf Err parazyd.org 70 i- cat << EOF >> $davconf Err parazyd.org 70 i- Err parazyd.org 70 i- alias /${tombid} /media/${tombid} Err parazyd.org 70 i- Err parazyd.org 70 i- Dav On Err parazyd.org 70 i- AllowOverride none Err parazyd.org 70 i- Options Indexes 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- act "Wrote to $davconf" Err parazyd.org 70 i- /etc/init.d/apache2 reload Err parazyd.org 70 i- [[ $? = 0 ]] || warn "Apache is funky" Err parazyd.org 70 i-# rm $COFFINDOT/webdav.conf Err parazyd.org 70 i- act "Done setting up WebDAV" Err parazyd.org 70 i- else Err parazyd.org 70 i- act "No WebDAV data found" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-delete-webdav-hook() { Err parazyd.org 70 i- fn delete-webdav-hook $* Err parazyd.org 70 i- req=(tombid) Err parazyd.org 70 i- tombid="$1" Err parazyd.org 70 i- ckreq || return 1 Err parazyd.org 70 i- Err parazyd.org 70 i- davconf="/etc/apache2/sites-available/coffindav.conf" Err parazyd.org 70 i- Err parazyd.org 70 i- sed -i '/alias\ \/${tombid}/,+10 d' $davconf Err parazyd.org 70 i- /etc/init.d/apache2 reload Err parazyd.org 70 i- [[ $? = 0 ]] || warn "Apache is funky" Err parazyd.org 70 i- act "Deleted WebDAV data" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-create-sshfs-hook() { Err parazyd.org 70 i- fn create-sshfs-hook Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ $entry =~ sshfs && -f $COFFINDOT/$tombid.pub ]]; then Err parazyd.org 70 i- act "Found SSH data. Setting up..." Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -d /home/$undertaker/.ssh ]] || mkdir -p /home/$undertaker/.ssh Err parazyd.org 70 i- cat $COFFINDOT/$tombid.pub >> /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i- chown -R $undertaker:$undertaker /home/$undertaker/.ssh Err parazyd.org 70 i- chmod 700 /home/$undertaker/.ssh && chmod 600 /home/$undertaker/.ssh/authorized_keys Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $? = 0 ]] && act "Wrote to authorized_keys" \ Err parazyd.org 70 i- && act "Done setting up SSH" Err parazyd.org 70 i- Err parazyd.org 70 i- # NOTE: maybe remove SSH key from usb, consider deletion Err parazyd.org 70 i- else Err parazyd.org 70 i- act "No SSH data found" Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-delete-sshfs-hook() { Err parazyd.org 70 i- fn delete-sshfs-hook $* Err parazyd.org 70 i- req=(undertaker tombid) Err parazyd.org 70 i- undertaker="$1" Err parazyd.org 70 i- tombid="$2" Err parazyd.org 70 i- ckreq || return 1 Err parazyd.org 70 i- Err parazyd.org 70 i- authkeys="/home/$undertaker/.ssh/authorized_keys" Err parazyd.org 70 i- Err parazyd.org 70 i- grep -v $tombid $authkeys > $authkeys.tmp Err parazyd.org 70 i- mv $authkeys.tmp $authkeys Err parazyd.org 70 i- Err parazyd.org 70 i- act "Deleted SSH data" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-create-wallet-hook() { Err parazyd.org 70 i- fn create-wallet-hook Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ $entry =~ ":wallet" ]]; then Err parazyd.org 70 i- act "Found Bitcoin wallet data. Setting up..." Err parazyd.org 70 i- Err parazyd.org 70 i- [[ -d /home/$undertaker/.bitcoin/wallet ]] || mkdir -p /home/$undertaker/.bitcoin/wallet Err parazyd.org 70 i- # TODO: see NOTES.md about the tmp idea Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 1diff --git a/zlibs/hooks b/zlibs/hooks /git/coffin/file/zlibs/hooks.gph parazyd.org 70 it@@ -19,84 +19,64 @@ Err parazyd.org 70 i # along with this source code. If not, see . Err parazyd.org 70 i Err parazyd.org 70 i check-hooks() { Err parazyd.org 70 i- # TODO: fragmented keys, delete, backup, moar Err parazyd.org 70 i+ ## TODO: fragmented keys, delete, backup, moar Err parazyd.org 70 i fn check-hooks Err parazyd.org 70 i+ freq=(HOOKS) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i- line=0 Err parazyd.org 70 i+ local line=0 Err parazyd.org 70 i for entry in $(cat $HOOKS); do Err parazyd.org 70 i- let hook=$line+1 Err parazyd.org 70 i+ let line=$line+1 Err parazyd.org 70 i act "Found hook $line..." Err parazyd.org 70 i Err parazyd.org 70 i- # Check what's hook supposed to do Err parazyd.org 70 i+ ## Check what's hook supposed to do Err parazyd.org 70 i if [[ ${entry[(ws@:@)1]} == "create" ]]; then Err parazyd.org 70 i create-new-tomb Err parazyd.org 70 i elif [[ ${entry[(ws@:@)1]} == "delete" ]]; then Err parazyd.org 70 i delete-tomb Err parazyd.org 70 i elif [[ ${entry[(ws@:@)1]} == "backup" ]]; then Err parazyd.org 70 i- backup-tomb Err parazyd.org 70 i+ backup-tomb ## TODO: Err parazyd.org 70 i else Err parazyd.org 70 i- die "No valid hook syntax on hook $hook" Err parazyd.org 70 i+ die "No valid hook syntax on hook $line" Err parazyd.org 70 i print $entry >> $HOOKS.fail Err parazyd.org 70 i act "Wrote failed hook to $HOOKS.fail" Err parazyd.org 70 i return 1 Err parazyd.org 70 i fi Err parazyd.org 70 i done Err parazyd.org 70 i- rm $HOOKS Err parazyd.org 70 i+ rm -f $HOOKS Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i create-new-tomb() { Err parazyd.org 70 i fn create-new-tomb Err parazyd.org 70 i+ req=(undertaker tombid tombsize COFFINDOT GRAVEYARD) Err parazyd.org 70 i+ undertaker=${entry[(ws@:@)2]} Err parazyd.org 70 i+ tombid=${entry[(ws@:@)3]} Err parazyd.org 70 i+ tombsize=${entry[(ws@:@)4]} Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i- # TODO: recognize custom post/bind hooks and implement them in the Err parazyd.org 70 i- # new tomb Err parazyd.org 70 i+ ## TODO: recognize custom post/bind hooks and implement them in the Err parazyd.org 70 i+ ## new tomb Err parazyd.org 70 i Err parazyd.org 70 i- act "Creating new tomb" Err parazyd.org 70 i+ notice "Creating new tomb" Err parazyd.org 70 i Err parazyd.org 70 i- undertaker=${entry[(ws@:@)2]} && xxx "Undertaker: $undertaker" Err parazyd.org 70 i- tombid=${entry[(ws@:@)3]} && xxx "Tombid: $tombid" Err parazyd.org 70 i- tombsize=${entry[(ws@:@)4]} && xxx "Tomb size: $tombsize" Err parazyd.org 70 i- keypass=$(pwgen 30 -1 1) && xxx "Key password: $keypass" Err parazyd.org 70 i- Err parazyd.org 70 i- $(id $undertaker &>/dev/null) Err parazyd.org 70 i- [[ $? = 0 ]] || { Err parazyd.org 70 i+ $(id $undertaker &>/dev/null) || { Err parazyd.org 70 i warn "User $undertaker not found. Creating..." Err parazyd.org 70 i useradd -G coffin -m -s /bin/sh $undertaker Err parazyd.org 70 i- act "Created user $undertaker" Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- act "Digging your tomb..." Err parazyd.org 70 i- Err parazyd.org 70 i- sudo -u $undertaker $TOMB dig -s $tombsize $GRAVEYARD/$tombid.tomb || \ Err parazyd.org 70 i- (die "Digging went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i- clean-failed-hook) Err parazyd.org 70 i- Err parazyd.org 70 i- sudo -u $undertaker $TOMB forge -k $GRAVEYARD/$tombid.key \ Err parazyd.org 70 i- --kdf 10 \ Err parazyd.org 70 i- --unsafe \ Err parazyd.org 70 i- --tomb-pwd "$keypass" || \ Err parazyd.org 70 i- (die "Forging key went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i- clean-failed-hook) Err parazyd.org 70 i+ act "Created user $undertaker" } Err parazyd.org 70 i Err parazyd.org 70 i- sudo -u $undertaker $TOMB lock $GRAVEYARD/$tombid.tomb \ Err parazyd.org 70 i- -k $GRAVEYARD/$tombid.key \ Err parazyd.org 70 i- --unsafe \ Err parazyd.org 70 i- --tomb-pwd "$keypass" || \ Err parazyd.org 70 i- (die "Locking tomb went downhill. Cleaning and exiting" && \ Err parazyd.org 70 i- clean-failed-hook) Err parazyd.org 70 i- Err parazyd.org 70 i- xxx "Moving your keyfile to your USB key..." Err parazyd.org 70 i- mv $GRAVEYARD/$tombid.key $COFFINDOT/ && \ Err parazyd.org 70 i- chown $undertaker:$undertaker $COFFINDOT/$tombid.key && \ Err parazyd.org 70 i- xxx "Moved and chowned keyfile" Err parazyd.org 70 i+ genssl Err parazyd.org 70 i+ dig-tomb Err parazyd.org 70 i+ forge-tomb-key Err parazyd.org 70 i+ lock-tomb Err parazyd.org 70 i Err parazyd.org 70 i print "${undertaker}:${tombid}:true" >> $TTAB Err parazyd.org 70 i Err parazyd.org 70 i- hash-key Err parazyd.org 70 i- print "${keyhash}:${keypass}" >> $TOMBPASSWD Err parazyd.org 70 i- chmod 600 $TOMBPASSWD Err parazyd.org 70 i- act "Wrote to ttab and tombpasswd" Err parazyd.org 70 i+ #hash-key Err parazyd.org 70 i+ #print "${keyhash}" >> $TOMBPASSWD Err parazyd.org 70 i+ #chmod 600 $TOMBPASSWD Err parazyd.org 70 i+ #act "Wrote to ttab and tombpasswd" Err parazyd.org 70 i Err parazyd.org 70 i- # Check for features Err parazyd.org 70 i+ ## Check for features Err parazyd.org 70 i create-webdav-hook Err parazyd.org 70 i create-sshfs-hook Err parazyd.org 70 i create-wallet-hook Err parazyd.org 70 it@@ -104,42 +84,41 @@ create-new-tomb() { Err parazyd.org 70 i Err parazyd.org 70 i delete-tomb() { Err parazyd.org 70 i fn delete-tomb Err parazyd.org 70 i+ req=(entry undertaker tombid GRAVEYARD COFFINDOT) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i- act "Deleting tomb" Err parazyd.org 70 i+ notice "deleting $tombid.tomb" Err parazyd.org 70 i Err parazyd.org 70 i- undertaker=${entry[(ws@:@)2]} && xxx "Undertaker: $undertaker" Err parazyd.org 70 i- tombid=${entry[(ws@:@)3]} && xxx "Tombid: $tombid" Err parazyd.org 70 i+ undertaker=${entry[(ws@:@)2]} Err parazyd.org 70 i+ tombid=${entry[(ws@:@)3]} Err parazyd.org 70 i Err parazyd.org 70 i [[ $(id $undertaker) ]] || { Err parazyd.org 70 i die "User $undertaker not found. Exiting..." \ Err parazyd.org 70 i- && return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i+ && return 1 } Err parazyd.org 70 i Err parazyd.org 70 i [[ -f $GRAVEYARD/$tombid.tomb ]] || { Err parazyd.org 70 i die "Tomb $tombid.tomb not found. Exiting..." \ Err parazyd.org 70 i- && return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i+ && return 1 } Err parazyd.org 70 i Err parazyd.org 70 i [[ -f $COFFINDOT/$tombid.key ]] || { Err parazyd.org 70 i die "Key of $tombid not found. Exiting..." \ Err parazyd.org 70 i- && return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i+ && return 1 } Err parazyd.org 70 i Err parazyd.org 70 i- compare-key Err parazyd.org 70 i- [[ $? = 0 ]] && { Err parazyd.org 70 i+ compare-key && { Err parazyd.org 70 i sudo -u $undertaker $TOMB slam $tombid Err parazyd.org 70 i update-tombs del Err parazyd.org 70 i Err parazyd.org 70 i- grep -v ${undertaker}:${tombid} $TTAB > $TTAB.tmp Err parazyd.org 70 i- mv $TTAB.tmp $TTAB && \ Err parazyd.org 70 i+ grep -v ${undertaker}:${tombid} $TTAB > /tmp/$TTAB.tmp Err parazyd.org 70 i+ mv /tmp/$TTAB.tmp $TTAB && \ Err parazyd.org 70 i act "Removed from ttab" Err parazyd.org 70 i Err parazyd.org 70 i- grep -v ${keyhash} $TOMBPASSWD > $TOMBPASSWD.tmp Err parazyd.org 70 i- mv $TOMBPASSWD.tmp $TOMBPASSWD && \ Err parazyd.org 70 i- chmod 600 $TOMBPASSWD && \ Err parazyd.org 70 i- act "Removed from tombpasswd" Err parazyd.org 70 i+ #grep -v ${keyhash} $TOMBPASSWD > /tmp/$TOMBPASSWD.tmp Err parazyd.org 70 i+ #mv /tmp/$TOMBPASSWD.tmp $TOMBPASSWD && \ Err parazyd.org 70 i+ # chmod 600 $TOMBPASSWD && \ Err parazyd.org 70 i+ # act "Removed from tombpasswd" Err parazyd.org 70 i Err parazyd.org 70 i- # Check for features Err parazyd.org 70 i+ ## Check for features Err parazyd.org 70 i delete-webdav-hook $tombid Err parazyd.org 70 i delete-sshfs-hook $undertaker $tombid Err parazyd.org 70 i } Err parazyd.org 70 it@@ -147,6 +126,8 @@ delete-tomb() { Err parazyd.org 70 i Err parazyd.org 70 i check-temptomb() { Err parazyd.org 70 i fn check-temptomb Err parazyd.org 70 i+ req=(tombid GRAVEYARD) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i act "Checking for tomb temps" Err parazyd.org 70 i if [[ -d ${GRAVEYARD}/temp/${tombid} ]]; then Err parazyd.org 70 1diff --git a/zlibs/keyfiles b/zlibs/keyfiles /git/coffin/file/zlibs/keyfiles.gph parazyd.org 70 it@@ -1,75 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env zsh Err parazyd.org 70 i-# Err parazyd.org 70 i-# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i-# coffin is written and maintained by Ivan J. Err parazyd.org 70 i-# Err parazyd.org 70 i-# This file is part of coffin Err parazyd.org 70 i-# Err parazyd.org 70 i-# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i-# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i-# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i-# (at your option) any later version. Err parazyd.org 70 i-# Err parazyd.org 70 i-# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i-# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i-# GNU General Public License for more details. Err parazyd.org 70 i-# Err parazyd.org 70 i-# You should have received a copy of the GNU General Public License Err parazyd.org 70 i-# along with this source code. If not, see . Err parazyd.org 70 i- Err parazyd.org 70 i-hash-key() { Err parazyd.org 70 i- fn hash-key Err parazyd.org 70 i- vars+=(keyhash) Err parazyd.org 70 i- keyhash="" Err parazyd.org 70 i- Err parazyd.org 70 i- keyhash=${$(sha256sum $COFFINDOT/$tombid.key)[(ws: :)1]} Err parazyd.org 70 i- xxx "sha256 of keyfile: $keyhash" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-compare-key() { Err parazyd.org 70 i- fn compare-key Err parazyd.org 70 i- Err parazyd.org 70 i- hash-key Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ ( $(grep $keyhash $TOMBS | grep $keyuuid) ) ]]; then Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- else Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# ,_-=(!7(7/zs_. Err parazyd.org 70 i-# .=' ' .`/,/!(=)Zm. Err parazyd.org 70 i-# .._,,._.. ,-`- `,\ ` -` -`\\7//WW. Err parazyd.org 70 i-# ,v=~/.-,-\- -!|V-s.)iT-|s|\-.' `///mK%. Err parazyd.org 70 i-# v!`i!-.e]-g`bT/i(/[=.Z/m)K(YNYi.. /-]i44M. Err parazyd.org 70 i-# v`/,`|v]-DvLcfZ/eV/iDLN\D/ZK@%8W[Z.. `/d!Z8m Err parazyd.org 70 i-# //,c\(2(X/NYNY8]ZZ/bZd\()/\7WY%WKKW) -'|(][%4. Err parazyd.org 70 i-# ,\\i\c(e)WX@WKKZKDKWMZ8(b5/ZK8]Z7%ffVM, -.Y!bNMi Err parazyd.org 70 i-# /-iit5N)KWG%%8%%%%W8%ZWM(8YZvD)XN(@. [ \]!/GXW[ Err parazyd.org 70 i-# / ))G8\NMN%W%%%%%%%%%%8KK@WZKYK*ZG5KMi,- vi[NZGM[ Err parazyd.org 70 i-# i\!(44Y8K%8%%%**~YZYZ@%%%%%4KWZ/PKN)ZDZ7 c=//WZK%! This is a euphemism for how my code is structured. Err parazyd.org 70 i-# ,\v\YtMZW8W%%f`,`.t/bNZZK%%W%%ZXb*K(K5DZ -c\\/KM48 Err parazyd.org 70 i-# -|c5PbM4DDW%f v./c\[tMY8W%PMW%D@KW)Gbf -/(=ZZKM8[ If you're reading this, you have probably been put Err parazyd.org 70 i-# 2(N8YXWK85@K -'c|K4/KKK%@ V%@@WD8e~ .//ct)8ZK%8` in charge of maintaining this program. Err parazyd.org 70 i-# =)b%]Nd)@KM[ !'\cG!iWYK%%| !M@KZf -c\))ZDKW%` Err parazyd.org 70 i-# YYKWZGNM4/Pb '-VscP4]b@W% 'Mf` -L\///KM(%W! I am so, so sorry for you. Err parazyd.org 70 i-# !KKW4ZK/W7)Z. '/cttbY)DKW% -` .',\v)K(5KW%%f Err parazyd.org 70 i-# 'W)KWKZZg)Z2/,!/L(-DYYb54% ,,`, -\-/v(((KK5WW%f God speed. Err parazyd.org 70 i-# \M4NDDKZZ(e!/\7vNTtZd)8\Mi!\-,-/i-v((tKNGN%W%% Err parazyd.org 70 i-# 'M8M88(Zd))///((|D\tDY\\KK-`/-i(=)KtNNN@W%%%@%[ Err parazyd.org 70 i-# !8%@KW5KKN4///s(\Pd!ROBY8/=2(/4ZdzKD%K%%%M8@%% Err parazyd.org 70 i-# '%%%W%dGNtPK(c\/2\[Z(ttNYZ2NZW8W8K%%%%YKM%M%%. Err parazyd.org 70 i-# *%%W%GW5@/%!e]_tZdY()v)ZXMZW%W%%%*5Y]K%ZK%8[ Err parazyd.org 70 i-# '*%%%%8%8WK\)[/ZmZ/Zi]!/M%%%%@f\ \Y/NNMK%%! Err parazyd.org 70 i-# 'VM%%%%W%WN5Z/Gt5/b)((cV@f` - |cZbMKW%%| Err parazyd.org 70 i-# 'V*M%%%WZ/ZG\t5((+)L'-,,/ -)X(NWW%%% Err parazyd.org 70 i-# `~`MZ/DZGNZG5(((\, ,t\\Z)KW%@ Err parazyd.org 70 i-# 'M8K%8GN8\5(5///]i!v\K)85W%%f Err parazyd.org 70 i-# YWWKKKKWZ8G54X/GGMeK@WM8%@ Err parazyd.org 70 i-# !M8%8%48WG@KWYbW%WWW%%%@ Err parazyd.org 70 i-# VM%WKWK%8K%%8WWWW%%%@` Err parazyd.org 70 i-# ~*%%%%%%W%%%%%%%@~ Err parazyd.org 70 i-# ~*MM%%%%%%@f` Err parazyd.org 70 i-# ''''' Err parazyd.org 70 1diff --git a/zlibs/keyops b/zlibs/keyops /git/coffin/file/zlibs/keyops.gph parazyd.org 70 it@@ -0,0 +1,106 @@ Err parazyd.org 70 i+#!/usr/bin/env zsh Err parazyd.org 70 i+# Err parazyd.org 70 i+# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i+# coffin is written and maintained by Ivan J. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This file is part of coffin Err parazyd.org 70 i+# Err parazyd.org 70 i+# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i+# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i+# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i+# (at your option) any later version. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i+# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i+# GNU General Public License for more details. Err parazyd.org 70 i+# Err parazyd.org 70 i+# You should have received a copy of the GNU General Public License Err parazyd.org 70 i+# along with this source code. If not, see . Err parazyd.org 70 i+ Err parazyd.org 70 i+vars+=(keyhash) Err parazyd.org 70 i+ Err parazyd.org 70 i+hash-key() { Err parazyd.org 70 i+ fn hash-key Err parazyd.org 70 i+ Err parazyd.org 70 i+ keyhash="" Err parazyd.org 70 i+ keyhash=${$(sha256sum $COFFINDOT/$tombid.key)[(ws: :)1]} Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+compare-key() { Err parazyd.org 70 i+ fn compare-key Err parazyd.org 70 i+ Err parazyd.org 70 i+ hash-key Err parazyd.org 70 i+ $(grep $keyhash $TOMBS | grep $keyuuid) || return 1 Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+genssl() { Err parazyd.org 70 i+ fn genssl Err parazyd.org 70 i+ req=(tombid COFFINDOT GRAVEYARD) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ notice "generating tomb's ssl cert" Err parazyd.org 70 i+ Err parazyd.org 70 i+ openssl genrsa -out $COFFINDOT/${tombid}-priv.pem 4096 Err parazyd.org 70 i+ openssl rsa -in $COFFINDOT/${tombid}-priv.pem \ Err parazyd.org 70 i+ -out $GRAVEYARD/${tombid}-pub.pem \ Err parazyd.org 70 i+ -outform PEM \ Err parazyd.org 70 i+ -pubout Err parazyd.org 70 i+ Err parazyd.org 70 i+ cp -f $GRAVEYARD/${tombid}-pub.pem $COFFINDOT/ Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+encrypt-password() { Err parazyd.org 70 i+ fn encrypt-password $* Err parazyd.org 70 i+ req=(password GRAVEYARD tombid) Err parazyd.org 70 i+ local password="$*" Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ act "encrypting password" Err parazyd.org 70 i+ print $password | openssl rsautl -encrypt -inkey $GRAVEYARD/${tombid}-pub.pem -pubin \ Err parazyd.org 70 i+ > $GRAVEYARD/${tombid}.pass Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+decrypt-password() { Err parazyd.org 70 i+ fn decrypt-password Err parazyd.org 70 i+ req=(tombid GRAVEYARD COFFINDOT) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ act "decrypting password" Err parazyd.org 70 i+ openssl rsautl -decrypt -inkey $COFFINDOT/${tombid}-priv.pem -in $GRAVEYARD/${tombid}.pass Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+# ,_-=(!7(7/zs_. Err parazyd.org 70 i+# .=' ' .`/,/!(=)Zm. Err parazyd.org 70 i+# .._,,._.. ,-`- `,\ ` -` -`\\7//WW. Err parazyd.org 70 i+# ,v=~/.-,-\- -!|V-s.)iT-|s|\-.' `///mK%. Err parazyd.org 70 i+# v!`i!-.e]-g`bT/i(/[=.Z/m)K(YNYi.. /-]i44M. Err parazyd.org 70 i+# v`/,`|v]-DvLcfZ/eV/iDLN\D/ZK@%8W[Z.. `/d!Z8m Err parazyd.org 70 i+# //,c\(2(X/NYNY8]ZZ/bZd\()/\7WY%WKKW) -'|(][%4. Err parazyd.org 70 i+# ,\\i\c(e)WX@WKKZKDKWMZ8(b5/ZK8]Z7%ffVM, -.Y!bNMi Err parazyd.org 70 i+# /-iit5N)KWG%%8%%%%W8%ZWM(8YZvD)XN(@. [ \]!/GXW[ Err parazyd.org 70 i+# / ))G8\NMN%W%%%%%%%%%%8KK@WZKYK*ZG5KMi,- vi[NZGM[ Err parazyd.org 70 i+# i\!(44Y8K%8%%%**~YZYZ@%%%%%4KWZ/PKN)ZDZ7 c=//WZK%! This is a euphemism for how my code is structured. Err parazyd.org 70 i+# ,\v\YtMZW8W%%f`,`.t/bNZZK%%W%%ZXb*K(K5DZ -c\\/KM48 Err parazyd.org 70 i+# -|c5PbM4DDW%f v./c\[tMY8W%PMW%D@KW)Gbf -/(=ZZKM8[ If you're reading this, you have probably been put Err parazyd.org 70 i+# 2(N8YXWK85@K -'c|K4/KKK%@ V%@@WD8e~ .//ct)8ZK%8` in charge of maintaining this program. Err parazyd.org 70 i+# =)b%]Nd)@KM[ !'\cG!iWYK%%| !M@KZf -c\))ZDKW%` Err parazyd.org 70 i+# YYKWZGNM4/Pb '-VscP4]b@W% 'Mf` -L\///KM(%W! I am so, so sorry for you. Err parazyd.org 70 i+# !KKW4ZK/W7)Z. '/cttbY)DKW% -` .',\v)K(5KW%%f Err parazyd.org 70 i+# 'W)KWKZZg)Z2/,!/L(-DYYb54% ,,`, -\-/v(((KK5WW%f God speed. Err parazyd.org 70 i+# \M4NDDKZZ(e!/\7vNTtZd)8\Mi!\-,-/i-v((tKNGN%W%% Err parazyd.org 70 i+# 'M8M88(Zd))///((|D\tDY\\KK-`/-i(=)KtNNN@W%%%@%[ Err parazyd.org 70 i+# !8%@KW5KKN4///s(\Pd!ROBY8/=2(/4ZdzKD%K%%%M8@%% Err parazyd.org 70 i+# '%%%W%dGNtPK(c\/2\[Z(ttNYZ2NZW8W8K%%%%YKM%M%%. Err parazyd.org 70 i+# *%%W%GW5@/%!e]_tZdY()v)ZXMZW%W%%%*5Y]K%ZK%8[ Err parazyd.org 70 i+# '*%%%%8%8WK\)[/ZmZ/Zi]!/M%%%%@f\ \Y/NNMK%%! Err parazyd.org 70 i+# 'VM%%%%W%WN5Z/Gt5/b)((cV@f` - |cZbMKW%%| Err parazyd.org 70 i+# 'V*M%%%WZ/ZG\t5((+)L'-,,/ -)X(NWW%%% Err parazyd.org 70 i+# `~`MZ/DZGNZG5(((\, ,t\\Z)KW%@ Err parazyd.org 70 i+# 'M8K%8GN8\5(5///]i!v\K)85W%%f Err parazyd.org 70 i+# YWWKKKKWZ8G54X/GGMeK@WM8%@ Err parazyd.org 70 i+# !M8%8%48WG@KWYbW%WWW%%%@ Err parazyd.org 70 i+# VM%WKWK%8K%%8WWWW%%%@` Err parazyd.org 70 i+# ~*%%%%%%W%%%%%%%@~ Err parazyd.org 70 i+# ~*MM%%%%%%@f` Err parazyd.org 70 i+# ''''' Err parazyd.org 70 1diff --git a/zlibs/mounts b/zlibs/mounts /git/coffin/file/zlibs/mounts.gph parazyd.org 70 it@@ -20,8 +20,8 @@ Err parazyd.org 70 i Err parazyd.org 70 i mount-key() { Err parazyd.org 70 i fn mount-key $* Err parazyd.org 70 i- req=(device) Err parazyd.org 70 i- device="$1" Err parazyd.org 70 i+ req=(device KEYMOUNT) Err parazyd.org 70 i+ local device="$1" Err parazyd.org 70 i ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 it@@ -37,9 +37,9 @@ mount-key() { Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i umount-key() { Err parazyd.org 70 i- fn umount-key $? Err parazyd.org 70 i- req=(device) Err parazyd.org 70 i- device="$1" Err parazyd.org 70 i+ fn umount-key $* Err parazyd.org 70 i+ req=(device KEYMOUNT) Err parazyd.org 70 i+ local device="$1" Err parazyd.org 70 i ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 1diff --git a/zlibs/tombops b/zlibs/tombops /git/coffin/file/zlibs/tombops.gph parazyd.org 70 it@@ -0,0 +1,81 @@ Err parazyd.org 70 i+#!/usr/bin/env zsh Err parazyd.org 70 i+# Err parazyd.org 70 i+# Copyright (c) 2016 Dyne.org Foundation Err parazyd.org 70 i+# coffin is written and maintained by Ivan J. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This file is part of coffin Err parazyd.org 70 i+# Err parazyd.org 70 i+# This source code is free software: you can redistribute it and/or modify Err parazyd.org 70 i+# it under the terms of the GNU General Public License as published by Err parazyd.org 70 i+# the Free Software Foundation, either version 3 of the License, or Err parazyd.org 70 i+# (at your option) any later version. Err parazyd.org 70 i+# Err parazyd.org 70 i+# This software is distributed in the hope that it will be useful, Err parazyd.org 70 i+# but WITHOUT ANY WARRANTY; without even the implied warranty of Err parazyd.org 70 i+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Err parazyd.org 70 i+# GNU General Public License for more details. Err parazyd.org 70 i+# Err parazyd.org 70 i+# You should have received a copy of the GNU General Public License Err parazyd.org 70 i+# along with this source code. If not, see . Err parazyd.org 70 i+ Err parazyd.org 70 i+dig-tomb() { Err parazyd.org 70 i+ fn dig-tomb Err parazyd.org 70 i+ req=(undertaker tombid tombsize GRAVEYARD) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo -u $undertaker $TOMB dig -s $tombsize $GRAVEYARD/$tombid.tomb || \ Err parazyd.org 70 i+ { die "digging went downhill, cleaning and exiting" && \ Err parazyd.org 70 i+ clean-failed-hook } Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+forge-tomb-key() { Err parazyd.org 70 i+ fn forge-tomb-key Err parazyd.org 70 i+ req=(undertaker tombid GRAVEYARD) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ encrypt-password $(pwgen 30 -1 1) Err parazyd.org 70 i+ sudo -u $undertaker $TOMB forge -k $COFFINDOT/$tombid.key \ Err parazyd.org 70 i+ --kdf 10 \ Err parazyd.org 70 i+ --unsafe \ Err parazyd.org 70 i+ --tomb-pwd "$(decrypt-password)" || \ Err parazyd.org 70 i+ { die "forging went downhill; cleaning and exiting" && \ Err parazyd.org 70 i+ clean-failed-hook } Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+lock-tomb() { Err parazyd.org 70 i+ fn lock-tomb Err parazyd.org 70 i+ req=(undertaker tombid GRAVEYARD) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo -u $undertaker $TOMB lock $GRAVEYARD/$tombid.tomb || \ Err parazyd.org 70 i+ -k $COFFINDOT/$tombid.key \ Err parazyd.org 70 i+ --unsafe \ Err parazyd.org 70 i+ --tomb-pwd "$(decrypt-password)" || \ Err parazyd.org 70 i+ { die "locking went downhill; cleaning and exiting" && \ Err parazyd.org 70 i+ clean-failed-hook } Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+open-tomb() { Err parazyd.org 70 i+ fn open-tomb Err parazyd.org 70 i+ req=(undertaker tombid GRAVEYARD) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo -u $undertaker $TOMB open \ Err parazyd.org 70 i+ $GRAVEYARD/$tombid.tomb \ Err parazyd.org 70 i+ -k $COFFINDOT/$tombid.key \ Err parazyd.org 70 i+ --unsafe \ Err parazyd.org 70 i+ --tomb-pwd "$(decrypt-password)" Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+close-tomb() { Err parazyd.org 70 i+ fn close-tomb Err parazyd.org 70 i+ req=(undertaker tombid) Err parazyd.org 70 i+ freq=(TOMB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ sudo -u $undertaker $TOMB slam $tombid Err parazyd.org 70 i+} Err parazyd.org 70 1diff --git a/zlibs/ttab b/zlibs/ttab /git/coffin/file/zlibs/ttab.gph parazyd.org 70 it@@ -21,28 +21,31 @@ Err parazyd.org 70 i update-tombs() { Err parazyd.org 70 i fn update-tombs $* Err parazyd.org 70 i req=(happ) Err parazyd.org 70 i- happ="$1" Err parazyd.org 70 i+ local happ="$1" Err parazyd.org 70 i ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i if [[ $happ == "add" ]]; then Err parazyd.org 70 i print "${undertaker}:${keyhash}:${keyuuid}" >> $TOMBS && \ Err parazyd.org 70 i chmod 600 $TOMBS && \ Err parazyd.org 70 i act "Added info to $TOMBS" Err parazyd.org 70 i+ Err parazyd.org 70 i elif [[ $happ == "del" ]]; then Err parazyd.org 70 i- cp $TOMBS $TMPTOMBS Err parazyd.org 70 i- grep -v "${keyhash}:${keyuuid}" $TMPTOMBS > $TOMBS && \ Err parazyd.org 70 i+ cp $TOMBS /tmp/$TMPTOMBS Err parazyd.org 70 i+ grep -v "${keyhash}:${keyuuid}" /tmp/$TMPTOMBS > $TOMBS && \ Err parazyd.org 70 i chmod 600 $TOMBS && \ Err parazyd.org 70 i act "Removed from $TOMBS" Err parazyd.org 70 i- rm $TMPTOMBS Err parazyd.org 70 i+ rm /tmp/$TMPTOMBS Err parazyd.org 70 i fi Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i ttab-magic() { Err parazyd.org 70 i fn ttab-magic Err parazyd.org 70 i+ freq=(TTAB) Err parazyd.org 70 i+ ckreq || return 1 Err parazyd.org 70 i Err parazyd.org 70 i- act "Doing ttab magic..." Err parazyd.org 70 i+ notice "Doing ttab magic..." Err parazyd.org 70 i Err parazyd.org 70 i- line=0 Err parazyd.org 70 i+ local 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 act "Found line $line..." Err parazyd.org 70 it@@ -50,25 +53,17 @@ ttab-magic() { Err parazyd.org 70 i [[ ${entry[(ws@:@)3]} == "true" ]] && { Err parazyd.org 70 i act "Working on tomb from line $line" Err parazyd.org 70 i Err parazyd.org 70 i- undertaker=${entry[(ws@:@)1]} && xxx "Undertaker: $undertaker" Err parazyd.org 70 i- tombid=${entry[(ws@:@)2]} && xxx "Tombid: $tombid" Err parazyd.org 70 i+ undertaker=${entry[(ws@:@)1]} Err parazyd.org 70 i+ tombid=${entry[(ws@:@)2]} Err parazyd.org 70 i Err parazyd.org 70 i- compare-key Err parazyd.org 70 i- [[ $? = 0 ]] && { Err parazyd.org 70 i+ compare-key && { Err parazyd.org 70 i act "compare-key -> true" Err parazyd.org 70 i close-tomb Err parazyd.org 70 i- Err parazyd.org 70 i update-tombs del Err parazyd.org 70 i- continue Err parazyd.org 70 i- } Err parazyd.org 70 i+ continue } Err parazyd.org 70 i Err parazyd.org 70 i act "compare-key -> false" Err parazyd.org 70 i Err parazyd.org 70 i- hash-key Err parazyd.org 70 i- keypass=$(grep $keyhash $TOMBPASSWD) Err parazyd.org 70 i- keypass=${keypass[(ws@:@)2]} Err parazyd.org 70 i- xxx "Key password: $keypass" Err parazyd.org 70 i- Err parazyd.org 70 i open-tomb Err parazyd.org 70 i Err parazyd.org 70 i [[ -d "/media/$tombid" ]] && { Err parazyd.org 70 it@@ -80,19 +75,3 @@ ttab-magic() { Err parazyd.org 70 i } Err parazyd.org 70 i done Err parazyd.org 70 i } Err parazyd.org 70 i- Err parazyd.org 70 i-open-tomb() { Err parazyd.org 70 i- sudo -u ${undertaker} ${TOMB} open \ Err parazyd.org 70 i- ${GRAVEYARD}/${tombid}.tomb \ Err parazyd.org 70 i- -k ${COFFINDOT}/${tombid}.key \ Err parazyd.org 70 i- --unsafe \ Err parazyd.org 70 i- --tomb-pwd "${keypass}" Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $? = 0 ]] || { die "Tomb didn't open" && return 1 } Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-close-tomb() { Err parazyd.org 70 i- sudo -u ${undertaker} ${TOMB} slam ${tombid} Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $? = 0 ]] || { die "Tomb didn't slam" && return 1 } Err parazyd.org 70 i-} Err parazyd.org 70 .