itbegin refactoring - 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 0c26ca5a864dd457ec0b76639df21f333ffcd6d9 /git/coffin/commit/0c26ca5a864dd457ec0b76639df21f333ffcd6d9.gph parazyd.org 70 1parent c8469c1d7100a08baa625ae50d3ea7b83e46c928 /git/coffin/commit/c8469c1d7100a08baa625ae50d3ea7b83e46c928.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Thu, 6 Oct 2016 10:43:17 +0200 Err parazyd.org 70 i Err parazyd.org 70 ibegin refactoring Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i A .gitmodules | 3 +++ Err parazyd.org 70 i M Makefile | 64 ++++++++++++++++++++++++++++--- Err parazyd.org 70 i A coffin | 39 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A config.mk | 17 +++++++++++++++++ Err parazyd.org 70 i A daemon | 28 ++++++++++++++++++++++++++++ Err parazyd.org 70 i R src/extra/Makefile -> extra/Makefi… | 0 Err parazyd.org 70 i R src/extra/apachedav -> extra/apach… | 0 Err parazyd.org 70 i R src/extra/coffin.init -> extra/cof… | 0 Err parazyd.org 70 i A extra/coffin.key | 52 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A extra/coffin.pem | 31 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i R src/extra/conf.sh -> extra/conf.sh | 0 Err parazyd.org 70 i R src/extra/davpasswd -> extra/davpa… | 0 Err parazyd.org 70 i R src/extra/gen.sh -> extra/gen.sh | 0 Err parazyd.org 70 i M helpers/makehook | 15 +++++++++++---- Err parazyd.org 70 i A sacrist | 100 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i D src/Makefile | 65 ------------------------------- Err parazyd.org 70 i D src/coffin | 39 ------------------------------- Err parazyd.org 70 i D src/sacrist | 106 ------------------------------ Err parazyd.org 70 i D src/zlibs/features | 126 ------------------------------- Err parazyd.org 70 i D src/zlibs/hooks | 160 ------------------------------- Err parazyd.org 70 i D src/zlibs/keyfiles | 75 ------------------------------- Err parazyd.org 70 i D src/zlibs/mounts | 55 ------------------------------- Err parazyd.org 70 i D src/zlibs/ttab | 98 ------------------------------- Err parazyd.org 70 i D src/zlibs/zuper | 729 ------------------------------- Err parazyd.org 70 i D src/zlibs/zuper.init | 35 ------------------------------- Err parazyd.org 70 i R src/tomb -> tomb | 0 Err parazyd.org 70 i R src/hexencode.c -> tomb-kdb-hexenc… | 0 Err parazyd.org 70 i R src/gen_salt.c -> tomb-kdb-pbkdf2-… | 0 Err parazyd.org 70 i R src/benchmark.c -> tomb-kdb-pbkdf2… | 0 Err parazyd.org 70 i R src/pbkdf2.c -> tomb-kdb-pbkdf2.c | 0 Err parazyd.org 70 i A wallet/bindhook | 1 + Err parazyd.org 70 i A zlibs/features | 126 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zlibs/hooks | 160 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zlibs/keyfiles | 75 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zlibs/mounts | 55 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zlibs/ttab | 98 +++++++++++++++++++++++++++++++ Err parazyd.org 70 i A zuper | 1 + Err parazyd.org 70 i Err parazyd.org 70 i37 files changed, 855 insertions(+), 1498 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/.gitmodules b/.gitmodules /git/coffin/file/.gitmodules.gph parazyd.org 70 it@@ -0,0 +1,3 @@ Err parazyd.org 70 i+[submodule "zuper"] Err parazyd.org 70 i+ path = zuper Err parazyd.org 70 i+ url = https://github.com/dyne/zuper.git Err parazyd.org 70 1diff --git a/Makefile b/Makefile /git/coffin/file/Makefile.gph parazyd.org 70 it@@ -1,11 +1,63 @@ Err parazyd.org 70 i-all: Err parazyd.org 70 i- make -C src Err parazyd.org 70 i+# coffin Err parazyd.org 70 i+# see LICENSE file for copyright and license details Err parazyd.org 70 i Err parazyd.org 70 i-install: Err parazyd.org 70 i- make -C src install Err parazyd.org 70 i+include config.mk Err parazyd.org 70 i+ Err parazyd.org 70 i+ Err parazyd.org 70 i+BIN = \ Err parazyd.org 70 i+ tomb-kdb-pbkdf2 \ Err parazyd.org 70 i+ tomb-kdb-pbkdf2-getiter \ Err parazyd.org 70 i+ tomb-kdb-pbkdf2-gensalt \ Err parazyd.org 70 i+ tomb-kdb-hexencode Err parazyd.org 70 i+ Err parazyd.org 70 i+OBJ = ${BIN:=.o} Err parazyd.org 70 i+SRC = ${BIN:=.c} Err parazyd.org 70 i+ Err parazyd.org 70 i+all: options tomb Err parazyd.org 70 i+ Err parazyd.org 70 i+options: Err parazyd.org 70 i+ @echo coffin build options: Err parazyd.org 70 i+ @echo "CFLAGS = ${CFLAGS}" Err parazyd.org 70 i+ @echo "LDFLAGS = ${LDFLAGS}" Err parazyd.org 70 i+ @echo "CC = ${CC}" Err parazyd.org 70 i+ Err parazyd.org 70 i+.o: Err parazyd.org 70 i+ @${CC} ${LDFLAGS} -o $@ $< ${LDLIBS} Err parazyd.org 70 i+ Err parazyd.org 70 i+.c.o: Err parazyd.org 70 i+ @echo CC $< Err parazyd.org 70 i+ @${CC} ${CFLAGS} -o $@ -c $< Err parazyd.org 70 i+ Err parazyd.org 70 i+${OBJ}: config.mk Err parazyd.org 70 i+ Err parazyd.org 70 i+tomb: ${BIN} ${OBJ} Err parazyd.org 70 i Err parazyd.org 70 i clean: Err parazyd.org 70 i- make -C src clean Err parazyd.org 70 i+ @echo cleaning Err parazyd.org 70 i+ @rm -f ${BIN} ${OBJ} Err parazyd.org 70 i+ 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+ 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 i+ @tar -cf coffin-${VERSION}.tar coffin-${VERSION} Err parazyd.org 70 i+ @gzip coffin-${VERSION}.tar Err parazyd.org 70 i+ @rm -rf coffin-${VERSION} Err parazyd.org 70 i+ Err parazyd.org 70 i+install: all Err parazyd.org 70 i+ @echo installing coffin to ${DESTDIR}${PREFIX} Err parazyd.org 70 i+ @mkdir -p ${DESTDIR}${PREFIX}/coffin Err parazyd.org 70 i+ @mkdir ${DESTDIR}${PREFIX}/coffin/bin Err parazyd.org 70 i+ @mkdir ${DESTDIR}${PREFIX}/coffin/share Err parazyd.org 70 i+ @cp -f coffin sacrist tomb ${BIN} ${DESTDIR}${PREFIX}/coffin/bin/ Err parazyd.org 70 i+ @cp -rf zlibs zuper ${DESTDIR}${PREFIX}/coffin/share/ Err parazyd.org 70 i+ Err parazyd.org 70 i Err parazyd.org 70 i uninstall: Err parazyd.org 70 i- make -C src uninstall Err parazyd.org 70 i+ @echo removing coffin from ${DESTDIR}${PREFIX} Err parazyd.org 70 i+ @rm -rf ${DESTDIR}${PREFIX}/coffin Err parazyd.org 70 i+ Err parazyd.org 70 i+.PHONY: all options tomb clean dist install uninstall Err parazyd.org 70 1diff --git a/coffin b/coffin /git/coffin/file/coffin.gph parazyd.org 70 it@@ -0,0 +1,39 @@ Err parazyd.org 70 i+#!/usr/bin/env bash 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+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+echo $COPROC_PID > /var/run/coffin.pid # pidfile Err parazyd.org 70 i+ Err parazyd.org 70 i+while read -r -u "${COPROC[0]}" event file; do Err parazyd.org 70 i+ if [[ $file =~ $pattern ]]; then Err parazyd.org 70 i+ case $event in Err parazyd.org 70 i+ CREATE) Err parazyd.org 70 i+ echo "Created $file..." #; sleep 1 Err parazyd.org 70 i+ $(dirname $0)/sacrist $file $event Err parazyd.org 70 i+ ;; Err parazyd.org 70 i+ DELETE) Err parazyd.org 70 i+ echo "Removed $file..." #; sleep 1 Err parazyd.org 70 i+ $(dirname $0)/sacrist $file $event Err parazyd.org 70 i+ ;; Err parazyd.org 70 i+ esac Err parazyd.org 70 i+ fi Err parazyd.org 70 i+done Err parazyd.org 70 1diff --git a/config.mk b/config.mk /git/coffin/file/config.mk.gph parazyd.org 70 it@@ -0,0 +1,17 @@ Err parazyd.org 70 i+# coffin Err parazyd.org 70 i+# see LICENSE file for copyright and license details Err parazyd.org 70 i+ Err parazyd.org 70 i+VERSION=0.4 Err parazyd.org 70 i+ Err parazyd.org 70 i+# customize below to fit your system Err parazyd.org 70 i+ Err parazyd.org 70 i+PREFIX = /usr/local Err parazyd.org 70 i+MANPREFIX = ${PREFIX}/share/man Err parazyd.org 70 i+ Err parazyd.org 70 i+# flags Err parazyd.org 70 i+CFLAGS += -g -std=c99 -Os -fPIC -fPIE Err parazyd.org 70 i+LDLIBS = -lgcrypt Err parazyd.org 70 i+LDFLAGS += -g -pie Err parazyd.org 70 i+ Err parazyd.org 70 i+# compiler and linker Err parazyd.org 70 i+CC = cc Err parazyd.org 70 1diff --git a/daemon b/daemon /git/coffin/file/daemon.gph parazyd.org 70 it@@ -0,0 +1,28 @@ Err parazyd.org 70 i+#!/bin/sh 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+## this script tries to emulate the behaviour of bsd daemon(3) call Err parazyd.org 70 i+## runs a job with its std streams closed and detaches from terminal Err parazyd.org 70 i+ Err parazyd.org 70 i+if test -z $1; then Err parazyd.org 70 i+ echo usage: $(basename $0) job && exit 1 Err parazyd.org 70 i+fi Err parazyd.org 70 i+ Err parazyd.org 70 i+(exec "$@" &) > /dev/null 2>&1 Err parazyd.org 70 1diff --git a/src/extra/Makefile b/extra/Makefile /git/coffin/file/extra/Makefile.gph parazyd.org 70 1diff --git a/src/extra/apachedav b/extra/apachedav /git/coffin/file/extra/apachedav.gph parazyd.org 70 1diff --git a/src/extra/coffin.init b/extra/coffin.init /git/coffin/file/extra/coffin.init.gph parazyd.org 70 1diff --git a/extra/coffin.key b/extra/coffin.key /git/coffin/file/extra/coffin.key.gph parazyd.org 70 it@@ -0,0 +1,52 @@ Err parazyd.org 70 i+-----BEGIN PRIVATE KEY----- Err parazyd.org 70 i+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCgbODvcDyKndsb Err parazyd.org 70 i+5fEf5313LmK7kurZ+JEjFbprAKgz1v4THBKqVYxyNeH0tTP5SsFi58iXEdYYBo08 Err parazyd.org 70 i+pd4PEP65KfJnj9fSGtbMX8h0D7ldrqH9k6bByOShVs8Qx8lftHEA9Dvc69adGrIk Err parazyd.org 70 i+8ZjDEmXbtbwaJ6/Ff83nlFUveVqXtyVCO8TiyVxyZ8LY0tIcAtBMlfhMBwY5vUl0 Err parazyd.org 70 i+Pe6wLTvxiUMz0sOdqN8Vq7dI/vcqrbqtWpQ4NefNY6DL8BOpv0TeQG4e5+tcCEft Err parazyd.org 70 i+W6rWW6RKiwM74Eg0USU9ciXWWq4xulxPG+9qoW4pq6cFw0Fz1NzgfkofDAVdtY9t Err parazyd.org 70 i+ltgzKNRA6f1wG/xsmt2N5lvxAHNsSNjZ6fSf09W2hiGldnvZ6+7QZcMAVPb1Svo5 Err parazyd.org 70 i+evGSOC2N5rRHNZXakv/tPpB6675oxh/4R43Bv0Q7p5dtX4KD5CJVdsu+act9IL67 Err parazyd.org 70 i+1EFRVQ0G/l3NvKPeeFLApRFRyQKvA7MzifBMJv7FfMjFVt/mTVICzcrtwc5pd0aK Err parazyd.org 70 i+A7mW7kb/afPHwL4vNirlfCcN9V3aaBt95FGKOPNKmZ2Xi6n9KBFHL5JFxk1pTQRj Err parazyd.org 70 i+27VGcdAZ+vC7ZyETUE5bVANNDZSmZBYL2P7lOsHerSqUcIEtkZLQk2/l81kcRCH8 Err parazyd.org 70 i+VsjJcfVW1vm1jgp5MaoUMDp+F5WLkQIDAQABAoICADQlkCxkqFlKnKmB4hJD1iXC Err parazyd.org 70 i+fzeHty1pPgxQiMs1aHeJYAdoLa0Op9uMJkm8CQv0v83dl/d7RcODha98HyV4mcQo Err parazyd.org 70 i+nXIKcNYMAVxnmioX3mJUXLWnpCIDokXLiP1kY9HnPoBX44mZY6anwdZ+bfCi71cu Err parazyd.org 70 i+yNkbo2godg7byaDn6om8b7EK6qHpYFKT5eNDDCcsxvbOHOrhsaVdIR5W71p3KbAG Err parazyd.org 70 i+tUCINyvtc66ApdBliIRn+nFVKy7mXtYFl4QTIuEfmkxAV0tWicvdqTu/e1W4bjwI Err parazyd.org 70 i+2eFBs1bGNbu2ehQmX88sS8svQnC/zqZe9KjL4l+7hpy2kHNtHeVrGhc+XEKs9+kq Err parazyd.org 70 i+JmqhKTZL3t0NTlNaBFY+B1Q6dJa6pvUH+V1GN9N31bIhDn448RPzzboTV/bBOixi Err parazyd.org 70 i+ubzIJoDUSX9zkYAJ22/5XuheUSKOz2VrZjBmOskYAizBtFFsNAtgyRIHtZg4ZAgI Err parazyd.org 70 i+1WmpbbBbjXiy19AHpVc5J2czCTVNtov2gbuBR7yz1ohPrUDv08J9o2qj0Sktdn06 Err parazyd.org 70 i+yPUtdLgiN2IUo6gl8k4abXusWSCP93U9+IxKFTLRnOpOW9XxLYjBqFj8cYU3hgCc Err parazyd.org 70 i+1Qce9jcqDG9l7Fe0VBUyiA2Wvv6fA+f/XY0QYeh00CKw+Y6DRAi4eITCvW6mIjr3 Err parazyd.org 70 i+jvVyYeARA6jreCBKBrPBAoIBAQDLMsXqwMiKVJ61+C0EfE1QAdptM8nB/0fgblbQ Err parazyd.org 70 i+EPg5t1ANLcaDAoNLiYwRxtjmQanXH16rdeQ+8nxDnsnwyxydTOGqziGbqeMUzRRi Err parazyd.org 70 i+FR9rhtsCOiElqlX0XtQtBcAIOiu6VDyX3TdQB/Y6kZy36spb5z2OVPKRllNrb2xI Err parazyd.org 70 i+rmjfYYb8P+nXD5MJKrlo8Q6bCZIMIc89jBNO4ERIJwP/MfcEgzPoJ9flBYL41M9p Err parazyd.org 70 i+XICjdKW+YEO3ikELHzrCVPanhbyGTDdObAy+gTY7m1g6lQwqwJfKGyi55UFtRvLM Err parazyd.org 70 i+LhPH8gNPNCY/ApyEPZrENyerCh0kFJ+RDf6JaoimI2kCwexJAoIBAQDKHL6Bmus6 Err parazyd.org 70 i+kZl+Pm6+MHB6wv+cLh4Mk/IK/NlL1N00skSyORA/cF3lB8swNJa4c7yWANoMXNQ5 Err parazyd.org 70 i+8ozb7bfo60WpGKufGQvTKT0IXswPf7DLSy7YZNM6hbFobj5VzCJMZmjBrsKJKZqu Err parazyd.org 70 i+RdAGMrcg0bob6Qm4vSZhODZ/mPExDU6FFNuLS97CWQBBviBVzsHnTnWI6UW3oKWn Err parazyd.org 70 i+95/F17lhOeldX//wEGbV23mrBn+XXgXpYNi6wA7zq4tiUOXj26i9ekaKgYv96sCm Err parazyd.org 70 i+pM9owWRYw2DlI5rjRceCykm9VDbe8b1/7qeLJ78eJEqzOSWaqoPAZSAhBTUe0o7i Err parazyd.org 70 i+IDSO5X2g0FUJAoIBAGvyjTIpOGBElAwXy9KWNnxKf7+Dw6tL8uNHutbOLRB8Ugqu Err parazyd.org 70 i+RsdSjm2SpNbMzG2GdLPT9ncgKiFGsL07ngxN2uW18izLVQ9dMUXbrPhuQELfYXnN Err parazyd.org 70 i+Z86arw8jUZSZeWrlfFWAarBC1R+vGyACOz95fAdW0VzLxBGTyr1IdD4oaY5CQXPA Err parazyd.org 70 i+gHm/zF0SVW1qole6vdu0GmSYBanhemTaVUU9Rf0ftnOetxLz2qBWbdmLSsuLLIH2 Err parazyd.org 70 i+ogLfb6546L5UZLSaV40A8GC5BgwumKER5c05YT1VE05LH1eicx+akWHnGJsf9qId Err parazyd.org 70 i+EjRnLr8R+yZCJtC2jsScMCjfRlm6Pt4D8cWFQAECggEBAJNxeMEQBT7K7REd9qgk Err parazyd.org 70 i+qknEa7jCJAXFADRn1RXvChjhXCAwZNwC21yz3NUj6DhTpmY/5NJT/jbv7TacKyhu Err parazyd.org 70 i+SnlbmAgOu4Omd/HdRjygSJdmF5yhoT72PUAT/MGWlAbsRsvU8/IgOcmdAG8lHFeC Err parazyd.org 70 i+6KRn00HEK3WNDqTzLDE+peOMHcV26eEaEIflba1rkiVuJWxl0Qhu16q7iQFJqOF2 Err parazyd.org 70 i+3/nQiOPW805cOFw992KzothoYHOMnNvCb4KfxbX+jxD7XO66Jyhr03M+lFi1jMD8 Err parazyd.org 70 i+d3lyChJ2219ct4K5JvZpoHbt4agwrMoOa7hnnjlA37DBlTjBlckQjlAEcpM0c/uX Err parazyd.org 70 i+QBECggEACj0KFvWRikBsMK57cTYKzKLYIcGDArOawAdiqLT+ZmLp1t+U7n3Efpw+ Err parazyd.org 70 i+kC4mnEJ4Pnb3MTIH6UNEBa5TGnTuvZ1bertDKjW8KvIgb1Y90KNKm/ruNxlCLA7Q Err parazyd.org 70 i+7RgNVTWleQFLNVgQmPw90KjUWkkOzcS4atAJ6enROXaXcrfHz4eTmc4DbRvA+xUS Err parazyd.org 70 i+h4xSjPq7ro+AzQSzCG2519vrEvvIovvLQaaZX5fstUcb4frhbpQd9JzjtqJc0b9S Err parazyd.org 70 i+UqntJ+WMICXT6oALgLChZD2MuArVPJBUvmvz4Rz30J6bHEP6NYJPBTmR9e9mlqQa Err parazyd.org 70 i+/n3lc+LNbXwBbp3pK0SccBuBN5u2gw== Err parazyd.org 70 i+-----END PRIVATE KEY----- Err parazyd.org 70 1diff --git a/extra/coffin.pem b/extra/coffin.pem /git/coffin/file/extra/coffin.pem.gph parazyd.org 70 it@@ -0,0 +1,31 @@ Err parazyd.org 70 i+-----BEGIN CERTIFICATE----- Err parazyd.org 70 i+MIIFXTCCA0WgAwIBAgIJAMpciwT0q3QLMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV Err parazyd.org 70 i+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX Err parazyd.org 70 i+aWRnaXRzIFB0eSBMdGQwHhcNMTYwNTE3MDk1NzIxWhcNMjYwNTE1MDk1NzIxWjBF Err parazyd.org 70 i+MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 Err parazyd.org 70 i+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC Err parazyd.org 70 i+CgKCAgEAoGzg73A8ip3bG+XxH+d9dy5iu5Lq2fiRIxW6awCoM9b+ExwSqlWMcjXh Err parazyd.org 70 i+9LUz+UrBYufIlxHWGAaNPKXeDxD+uSnyZ4/X0hrWzF/IdA+5Xa6h/ZOmwcjkoVbP Err parazyd.org 70 i+EMfJX7RxAPQ73OvWnRqyJPGYwxJl27W8GievxX/N55RVL3lal7clQjvE4slccmfC Err parazyd.org 70 i+2NLSHALQTJX4TAcGOb1JdD3usC078YlDM9LDnajfFau3SP73Kq26rVqUODXnzWOg Err parazyd.org 70 i+y/ATqb9E3kBuHufrXAhH7Vuq1lukSosDO+BINFElPXIl1lquMbpcTxvvaqFuKaun Err parazyd.org 70 i+BcNBc9Tc4H5KHwwFXbWPbZbYMyjUQOn9cBv8bJrdjeZb8QBzbEjY2en0n9PVtoYh Err parazyd.org 70 i+pXZ72evu0GXDAFT29Ur6OXrxkjgtjea0RzWV2pL/7T6Qeuu+aMYf+EeNwb9EO6eX Err parazyd.org 70 i+bV+Cg+QiVXbLvmnLfSC+u9RBUVUNBv5dzbyj3nhSwKURUckCrwOzM4nwTCb+xXzI Err parazyd.org 70 i+xVbf5k1SAs3K7cHOaXdGigO5lu5G/2nzx8C+LzYq5XwnDfVd2mgbfeRRijjzSpmd Err parazyd.org 70 i+l4up/SgRRy+SRcZNaU0EY9u1RnHQGfrwu2chE1BOW1QDTQ2UpmQWC9j+5TrB3q0q Err parazyd.org 70 i+lHCBLZGS0JNv5fNZHEQh/FbIyXH1Vtb5tY4KeTGqFDA6fheVi5ECAwEAAaNQME4w Err parazyd.org 70 i+HQYDVR0OBBYEFEveK4OH3+IDe77AXaqiqBX1w+GBMB8GA1UdIwQYMBaAFEveK4OH Err parazyd.org 70 i+3+IDe77AXaqiqBX1w+GBMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB Err parazyd.org 70 i+ACqgmYWgbqaPt4m6VyFVRrmV4GG6eYWWvoVgMeii2N48eCfF9xI6uHbZfqTzH6Jz Err parazyd.org 70 i+G46R+LGjyDK8FOOuCa4cy1pj/Kg+Ddr2mEDvps3aKOyg2+40QotM5mB21699pY6c Err parazyd.org 70 i+/MvTM2Wot0R5aL9Ucvxu/w1DEn+O8ucQE6obx0xd/YtdjTDzF/6gvUpC8Bo9cij0 Err parazyd.org 70 i+Ef5eNsQP2ypDJxqrEAStYRsjVNRBLODOllxW7ot5Opbc1HHEDQFYeMG4Tm3Oj0NG Err parazyd.org 70 i+lIZ8mNc3jPcdUR+ipRDgcwYZ0+emhgMS0X2JBbT+EmFSe3I5/Lg6e4BnYx+Pzqex Err parazyd.org 70 i+gV8eVHnMdZ5AzQQs/JfEzfZhgdS/4NHBy15mbSHrtVbgedL4HBdinuoR4A0vtoyh Err parazyd.org 70 i+FqE3mw57IZ1X56h342BRU95LK48RhJr1BEZSdfqpaavtBywS2ltEyzW17/00LesB Err parazyd.org 70 i+Q+TKAkrMrwgi5XbEKoOXVGIoxgLMI72uB56NIv8nsApo2htAzFzG/uiLnaVAHAg9 Err parazyd.org 70 i+w65d0kMtDSEegnr+UXfJBlvYXPt3schqGiot0+fczIMl08ab71jQBcEkXt9RV6WI Err parazyd.org 70 i+Ka3mzPSBw1VgkiDJiwuQj/pCxr2bu2jrIAhgN9Xh/bhucLHGiVA+CmomDXgaklet Err parazyd.org 70 i+3EWQGV+gpRCeF8pJK6ZyMZmJ8j+OK6qpQCwuO+7myMQb Err parazyd.org 70 i+-----END CERTIFICATE----- Err parazyd.org 70 1diff --git a/src/extra/conf.sh b/extra/conf.sh /git/coffin/file/extra/conf.sh.gph parazyd.org 70 1diff --git a/src/extra/davpasswd b/extra/davpasswd /git/coffin/file/extra/davpasswd.gph parazyd.org 70 1diff --git a/src/extra/gen.sh b/extra/gen.sh /git/coffin/file/extra/gen.sh.gph parazyd.org 70 1diff --git a/helpers/makehook b/helpers/makehook /git/coffin/file/helpers/makehook.gph parazyd.org 70 it@@ -184,9 +184,13 @@ happenz() { Err parazyd.org 70 i successmsg Err parazyd.org 70 i } Err parazyd.org 70 i ;; Err parazyd.org 70 i+ 0) Err parazyd.org 70 i+ Err parazyd.org 70 i+ printf "Quitting...\" Err parazyd.org 70 i+ exit Err parazyd.org 70 i+ ;; Err parazyd.org 70 i *) Err parazyd.org 70 i- echo -e "\n" Err parazyd.org 70 i- echo "No valid option. Exiting..." Err parazyd.org 70 i+ printf "\nNo valid option. Exiting...\n" Err parazyd.org 70 i exit Err parazyd.org 70 i ;; Err parazyd.org 70 i esac Err parazyd.org 70 it@@ -196,7 +200,9 @@ main() { Err parazyd.org 70 i cat < 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+coffin_version=0.4 Err parazyd.org 70 i+ Err parazyd.org 70 i+DEBUG=${DEBUG:-0} Err parazyd.org 70 i+QUIET=${QUIET:-0} Err parazyd.org 70 i+LOG=${LOG:-""} Err parazyd.org 70 i+ 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+ 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 i+vars+=(happenz device keyuuid) Err parazyd.org 70 i+ Err parazyd.org 70 i+source $R/../share/zlibs/features 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/mounts 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+ 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 i+touch $LOCK Err parazyd.org 70 i+ 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+ 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 i+TMPTOMBS="$GRAVEYARD/tmptombs" # Temp tempfile, for updating $tombs Err parazyd.org 70 i+TOMBPASSWD="$GRAVEYARD/passwd" 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+HOOKS="$COFFINDOT/hook" Err parazyd.org 70 i+TOMB="$R/tomb" Err parazyd.org 70 i+ Err parazyd.org 70 i+# Main 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+} 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+ 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+ else Err parazyd.org 70 i+ warn "No .coffin directory" Err parazyd.org 70 i+ fi Err parazyd.org 70 i+ Err parazyd.org 70 i+ umount-key $device Err parazyd.org 70 i+ rm -f $LOCK && exit 0 || exit 1 Err parazyd.org 70 i+ # cleanup & exit Err parazyd.org 70 i+} Err parazyd.org 70 i+ Err parazyd.org 70 i+[[ $happenz == "DELETE" ]] && { 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 1diff --git a/src/Makefile b/src/Makefile /git/coffin/file/src/Makefile.gph parazyd.org 70 it@@ -1,65 +0,0 @@ Err parazyd.org 70 i-PREFIX = /usr/local/coffin/bin Err parazyd.org 70 i-CFLAGS = -O2 Err parazyd.org 70 i- Err parazyd.org 70 i-all: Err parazyd.org 70 i- $(CC) $(CFLAGS) -o tomb-kdb-pbkdf2 pbkdf2.c -lgcrypt Err parazyd.org 70 i- $(CC) $(CFLAGS) -o tomb-kdb-pbkdf2-getiter benchmark.c -lgcrypt Err parazyd.org 70 i- $(CC) $(CFLAGS) -o tomb-kdb-pbkdf2-gensalt gen_salt.c -lgcrypt Err parazyd.org 70 i- $(CC) $(CFLAGS) -o tomb-kdb-hexencode hexencode.c Err parazyd.org 70 i- make -C extra Err parazyd.org 70 i- Err parazyd.org 70 i-clean: Err parazyd.org 70 i- rm -f tomb-kdb-pbkdf2 Err parazyd.org 70 i- rm -f tomb-kdb-pbkdf2-getiter Err parazyd.org 70 i- rm -f tomb-kdb-pbkdf2-gensalt Err parazyd.org 70 i- rm -f tomb-kdb-hexencode Err parazyd.org 70 i- make -C extra clean Err parazyd.org 70 i- Err parazyd.org 70 i-install: Err parazyd.org 70 i- install -Dm755 coffin ${PREFIX}/coffin Err parazyd.org 70 i- install -Dm755 sacrist ${PREFIX}/sacrist Err parazyd.org 70 i- install -Dm755 zlibs/features ${PREFIX}/zlibs/features Err parazyd.org 70 i- install -Dm755 zlibs/hooks ${PREFIX}/zlibs/hooks Err parazyd.org 70 i- install -Dm755 zlibs/keyfiles ${PREFIX}/zlibs/keyfiles Err parazyd.org 70 i- install -Dm755 zlibs/mounts ${PREFIX}/zlibs/mounts Err parazyd.org 70 i- install -Dm755 zlibs/ttab ${PREFIX}/zlibs/ttab Err parazyd.org 70 i- install -Dm755 zlibs/zuper ${PREFIX}/zlibs/zuper Err parazyd.org 70 i- install -Dm644 zlibs/zuper.init ${PREFIX}/zlibs/zuper.init Err parazyd.org 70 i- install -Dm755 tomb ${PREFIX}/tomb Err parazyd.org 70 i- install -Dm755 tomb-kdb-pbkdf2 ${PREFIX}/tomb-kdb-pbkdf2 Err parazyd.org 70 i- install -Dm755 tomb-kdb-pbkdf2-getiter ${PREFIX}/tomb-kdb-pbkdf2-getiter Err parazyd.org 70 i- install -Dm755 tomb-kdb-pbkdf2-gensalt ${PREFIX}/tomb-kdb-pbkdf2-gensalt Err parazyd.org 70 i- install -Dm755 tomb-kdb-hexencode ${PREFIX}/tomb-kdb-hexencode Err parazyd.org 70 i- install -Dm770 -g coffin -d /home/graveyard Err parazyd.org 70 i- install -Dm755 extra/coffin.init /etc/init.d/coffin Err parazyd.org 70 i- install -Dm775 -g www-data -d /etc/apache2/DAV Err parazyd.org 70 i- install -Dm600 extra/davpasswd /etc/apache2/DAV/davpasswd Err parazyd.org 70 i- install -Dm640 extra/apachedav /etc/apache2/sites-available/coffindav.conf Err parazyd.org 70 i- install -Dm700 -d /etc/ssl/coffin Err parazyd.org 70 i- install -Dm400 extra/coffin.pem /etc/ssl/coffin/coffin.pem Err parazyd.org 70 i- install -Dm400 extra/coffin.key /etc/ssl/coffin/coffin.key Err parazyd.org 70 i- make -C extra install Err parazyd.org 70 i- @echo "To enable WebDAV, run: 'a2ensite coffindav.conf' as root." Err parazyd.org 70 i- Err parazyd.org 70 i-uninstall: Err parazyd.org 70 i- make -C extra uninstall Err parazyd.org 70 i- rm -f ${PREFIX}/coffin Err parazyd.org 70 i- rm -f ${PREFIX}/sacrist Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/features Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/hooks Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/keyfiles Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/mounts Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/ttab Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/zuper Err parazyd.org 70 i- rm -f ${PREFIX}/zlibs/zuper.init Err parazyd.org 70 i- rm -f ${PREFIX}/tomb Err parazyd.org 70 i- rm -f ${PREFIX}/tomb-kdb-pbkdf2 Err parazyd.org 70 i- rm -f ${PREFIX}/tomb-kdb-pbkdf2-getiter Err parazyd.org 70 i- rm -f ${PREFIX}/tomb-kdb-pbkdf2-gensalt Err parazyd.org 70 i- rm -f ${PREFIX}/tomb-kdb-hexencode Err parazyd.org 70 i- rm -f /etc/init.d/coffin Err parazyd.org 70 i- rm -rf /etc/apache2/DAV Err parazyd.org 70 i- rm -f /etc/apache2/sites-available/coffindav.conf Err parazyd.org 70 i- rm -f /etc/apache2/sites-enabled/coffindav.conf Err parazyd.org 70 i- rm -rf /etc/ssl/coffin Err parazyd.org 70 i- @echo "To disable WebDAV, run: 'a2dissite coffindav.conf' as root." Err parazyd.org 70 1diff --git a/src/coffin b/src/coffin /git/coffin/file/src/coffin.gph parazyd.org 70 it@@ -1,39 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env bash 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 parazyd 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-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-echo $COPROC_PID > /var/run/coffin.pid # pidfile Err parazyd.org 70 i- Err parazyd.org 70 i-while read -r -u "${COPROC[0]}" event file; do Err parazyd.org 70 i- if [[ $file =~ $pattern ]]; then Err parazyd.org 70 i- case $event in Err parazyd.org 70 i- CREATE) Err parazyd.org 70 i- echo "Created $file..." #; sleep 1 Err parazyd.org 70 i- /usr/local/share/coffin/bin/sacrist $file $event Err parazyd.org 70 i- ;; Err parazyd.org 70 i- DELETE) Err parazyd.org 70 i- echo "Removed $file..." #; sleep 1 Err parazyd.org 70 i- /usr/local/share/coffin/bin/sacrist $file $event Err parazyd.org 70 i- ;; Err parazyd.org 70 i- esac Err parazyd.org 70 i- fi Err parazyd.org 70 i-done Err parazyd.org 70 1diff --git a/src/sacrist b/src/sacrist /git/coffin/file/src/sacrist.gph parazyd.org 70 it@@ -1,106 +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 parazyd 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-coffin_version=0.4 Err parazyd.org 70 i-coffin_release_date="May/2016" Err parazyd.org 70 i- Err parazyd.org 70 i-DEBUG=${DEBUG:-0} Err parazyd.org 70 i-QUIET=${QUIET:-0} Err parazyd.org 70 i-LOG=${LOG:-""} Err parazyd.org 70 i- Err parazyd.org 70 i-swapoff -a # I feel so safe Err parazyd.org 70 i- Err parazyd.org 70 i-zkv=1 Err parazyd.org 70 i-helpers=1 Err parazyd.org 70 i- Err parazyd.org 70 i-R=/usr/local/share/coffin/bin Err parazyd.org 70 i-source $R/zlibs/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-# Locals 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 i-vars+=(happenz device keyuuid) Err parazyd.org 70 i- Err parazyd.org 70 i-source $R/zlibs/zuper.init Err parazyd.org 70 i-source $R/zlibs/features Err parazyd.org 70 i-source $R/zlibs/hooks Err parazyd.org 70 i-source $R/zlibs/keyfiles Err parazyd.org 70 i-source $R/zlibs/mounts Err parazyd.org 70 i-source $R/zlibs/ttab Err parazyd.org 70 i-#source $R/zlibs/config 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 i-touch $LOCK Err parazyd.org 70 i- 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- 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 i-TMPTOMBS="$GRAVEYARD/tmptombs" # Temp tempfile, for updating $tombs Err parazyd.org 70 i-TOMBPASSWD="$GRAVEYARD/passwd" 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-HOOKS="$COFFINDOT/hook" Err parazyd.org 70 i-TOMB="$R/tomb" Err parazyd.org 70 i- Err parazyd.org 70 i-# Main 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-} Err parazyd.org 70 i- Err parazyd.org 70 i-act "Coffin, Cryptographic office filer for important nuggets " Err parazyd.org 70 i-act "Version: $coffin_version, $coffin_release_date" Err parazyd.org 70 i- Err parazyd.org 70 i-[[ $happenz == "CREATE" ]] && { Err parazyd.org 70 i- mount-key $device Err parazyd.org 70 i- [[ $? = 0 ]] || { die "Key not mounted successfully." && exit } 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- else Err parazyd.org 70 i- warn "No .coffin directory" Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- umount-key $device Err parazyd.org 70 i- rm $LOCK Err parazyd.org 70 i- # cleanup & exit Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-[[ $happenz == "DELETE" ]] && { Err parazyd.org 70 i- # TODO: Some kind of endgame Err parazyd.org 70 i- rm $LOCK Err parazyd.org 70 i-} Err parazyd.org 70 1diff --git a/src/zlibs/features b/src/zlibs/features /git/coffin/file/src/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 parazyd 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/src/zlibs/hooks b/src/zlibs/hooks /git/coffin/file/src/zlibs/hooks.gph parazyd.org 70 it@@ -1,160 +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 parazyd 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-check-hooks() { Err parazyd.org 70 i- # TODO: fragmented keys, delete, backup, moar Err parazyd.org 70 i- fn check-hooks Err parazyd.org 70 i- Err parazyd.org 70 i- 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- 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- 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- else Err parazyd.org 70 i- die "No valid hook syntax on hook $hook" 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-} 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- 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- 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- 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- 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- 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- 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 i-} 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- Err parazyd.org 70 i- act "Deleting 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- 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- 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- 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- Err parazyd.org 70 i- compare-key Err parazyd.org 70 i- [[ $? = 0 ]] && { 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- 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- 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 i-} 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- 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 i- mv ${GRAVEYARD}/temp/${tombid}/* /media/${tombid}/ Err parazyd.org 70 i- mv ${GRAVEYARD}/temp/${tombid}/.* /media/${tombid}/ Err parazyd.org 70 i- Err parazyd.org 70 i- act "Moved all tomb temps" Err parazyd.org 70 i- Err parazyd.org 70 i- rmdir ${GRAVEYARD}/temp/${tombid} Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 1diff --git a/src/zlibs/keyfiles b/src/zlibs/keyfiles /git/coffin/file/src/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 parazyd 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/src/zlibs/mounts b/src/zlibs/mounts /git/coffin/file/src/zlibs/mounts.gph parazyd.org 70 it@@ -1,55 +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 parazyd 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-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- ckreq || return 1 Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 i- die "$KEYMOUNT already exists." Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- else Err parazyd.org 70 i- act "Creating $KEYMOUNT" Err parazyd.org 70 i- mkdir -p $KEYMOUNT Err parazyd.org 70 i- act "Mounting..." Err parazyd.org 70 i- mount $device $KEYMOUNT 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-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- ckreq || return 1 Err parazyd.org 70 i- Err parazyd.org 70 i- if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 i- act "Unmounting $device" Err parazyd.org 70 i- umount $device \ Err parazyd.org 70 i- && rmdir $KEYMOUNT Err parazyd.org 70 i- act "Success umounting" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- else Err parazyd.org 70 i- act "No $KEYMOUNT found" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- fi Err parazyd.org 70 i-} Err parazyd.org 70 1diff --git a/src/zlibs/ttab b/src/zlibs/ttab /git/coffin/file/src/zlibs/ttab.gph parazyd.org 70 it@@ -1,98 +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 parazyd 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-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- 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- 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- chmod 600 $TOMBS && \ Err parazyd.org 70 i- act "Removed from $TOMBS" Err parazyd.org 70 i- rm $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- Err parazyd.org 70 i- act "Doing ttab magic..." Err parazyd.org 70 i- 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- act "Found line $line..." Err parazyd.org 70 i- 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- Err parazyd.org 70 i- compare-key Err parazyd.org 70 i- [[ $? = 0 ]] && { 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- 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 i- chmod g+rw /media/$tombid Err parazyd.org 70 i- update-tombs add Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- check-temptomb 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 1diff --git a/src/zlibs/zuper b/src/zlibs/zuper /git/coffin/file/src/zlibs/zuper.gph parazyd.org 70 it@@ -1,729 +0,0 @@ Err parazyd.org 70 i-#!/usr/bin/env zsh Err parazyd.org 70 i-## -*- origami-fold-style: triple-braces -*- Err parazyd.org 70 i-# Err parazyd.org 70 i-# Zuper - Zsh Ultimate Programmer's Extensions Refurbished Err parazyd.org 70 i-# Err parazyd.org 70 i-# Copyright (C) 2015 Dyne.org Foundation Err parazyd.org 70 i-# Err parazyd.org 70 i-# Zuper is designed, written and maintained by Denis Roio Err parazyd.org 70 i-# Err parazyd.org 70 i-# This source code is free software; you can redistribute it and/or Err parazyd.org 70 i-# modify it under the terms of the GNU 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 source code 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. Err parazyd.org 70 i-# Please refer to the GNU Public License for more details. Err parazyd.org 70 i-# Err parazyd.org 70 i-# You should have received a copy of the GNU Public License along with Err parazyd.org 70 i-# this source code; if not, write to: Err parazyd.org 70 i-# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-########################## Err parazyd.org 70 i-typeset -aU vars Err parazyd.org 70 i-typeset -aU arrs Err parazyd.org 70 i-typeset -aU maps Err parazyd.org 70 i- Err parazyd.org 70 i-vars=(DEBUG QUIET LOG) Err parazyd.org 70 i-arrs=(req freq) Err parazyd.org 70 i- Err parazyd.org 70 i-vars+=(zuper_version) Err parazyd.org 70 i-zuper_version=0.2 Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Messaging Err parazyd.org 70 i- Err parazyd.org 70 i-# Messaging function with pretty coloring Err parazyd.org 70 i-autoload colors Err parazyd.org 70 i-colors Err parazyd.org 70 i- Err parazyd.org 70 i-vars+=(last_act last_func last_notice) Err parazyd.org 70 i- Err parazyd.org 70 i-function _msg() { Err parazyd.org 70 i- local msg="$2" Err parazyd.org 70 i- command -v gettext 1>/dev/null 2>/dev/null && msg="$(gettext -s "$2")" Err parazyd.org 70 i- for i in $(seq 3 ${#}); Err parazyd.org 70 i- do Err parazyd.org 70 i- msg=${(S)msg//::$(($i - 2))*::/$*[$i]} Err parazyd.org 70 i- done Err parazyd.org 70 i- Err parazyd.org 70 i- local command="print -P" Err parazyd.org 70 i- local progname="$fg[magenta]${PROGRAM##*/}$reset_color" Err parazyd.org 70 i- local message="$fg_bold[normal]$fg_no_bold[normal]$msg$reset_color" Err parazyd.org 70 i- local -i returncode Err parazyd.org 70 i- Err parazyd.org 70 i- case "$1" in Err parazyd.org 70 i- inline) Err parazyd.org 70 i- command+=" -n"; pchars=" > "; pcolor="yellow" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- message) Err parazyd.org 70 i- last_act="$msg" Err parazyd.org 70 i- pchars=" . "; pcolor="white"; message="$fg_no_bold[$pcolor]$msg$reset_color" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- verbose) Err parazyd.org 70 i- last_func="$msg" Err parazyd.org 70 i- pchars="[D]"; pcolor="blue" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- success) Err parazyd.org 70 i- last_notice="$msg" Err parazyd.org 70 i- pchars="(*)"; pcolor="green"; message="$fg_no_bold[$pcolor]$msg$reset_color" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- warning) Err parazyd.org 70 i- pchars="[W]"; pcolor="yellow"; message="$fg_no_bold[$pcolor]$msg$reset_color" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- failure) Err parazyd.org 70 i- pchars="[E]"; pcolor="red"; message="$fg_no_bold[$pcolor]$msg$reset_color" Err parazyd.org 70 i- returncode=1 Err parazyd.org 70 i- ;; Err parazyd.org 70 i- print) Err parazyd.org 70 i- progname="" Err parazyd.org 70 i- ;; Err parazyd.org 70 i- *) Err parazyd.org 70 i- pchars="[F]"; pcolor="red" Err parazyd.org 70 i- message="Developer oops! Usage: _msg MESSAGE_TYPE \"MESSAGE_CONTENT\"" Err parazyd.org 70 i- returncode=127 Err parazyd.org 70 i- zerr Err parazyd.org 70 i- ;; Err parazyd.org 70 i- esac Err parazyd.org 70 i- ${=command} "${progname} $fg_bold[$pcolor]$pchars$reset_color ${message}$color[reset_color]" >&2 Err parazyd.org 70 i- Err parazyd.org 70 i- # write the log if its configured Err parazyd.org 70 i- [[ "$LOG" = "" ]] || { Err parazyd.org 70 i- touch $LOG || return $? Err parazyd.org 70 i- ${=command} "${progname} $fg_bold[$pcolor]$pchars$reset_color ${message}$color[reset_color]" >> $LOG Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- return $returncode Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _message say act() { Err parazyd.org 70 i- local notice="message" Err parazyd.org 70 i- [[ "$1" = "-n" ]] && shift && notice="inline" Err parazyd.org 70 i- [[ $QUIET = 1 ]] || _msg "$notice" $@ Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _verbose xxx func() { Err parazyd.org 70 i- [[ $DEBUG = 1 ]] && _msg verbose $@ Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _success yes notice() { Err parazyd.org 70 i- [[ $QUIET = 1 ]] || _msg success $@ Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _warning no warn warning() { Err parazyd.org 70 i- [[ $QUIET = 1 ]] || _msg warning $@ Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _failure fatal die error() { Err parazyd.org 70 i- # typeset -i exitcode=${exitv:-1} Err parazyd.org 70 i- [[ $QUIET = 1 ]] || _msg failure $@ Err parazyd.org 70 i- return 1 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-function _print() { Err parazyd.org 70 i- [[ $QUIET = 1 ]] || _msg print $@ Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# }}} Messaging Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Debugging Err parazyd.org 70 i- Err parazyd.org 70 i-fn() { Err parazyd.org 70 i- fun="$@" Err parazyd.org 70 i- req=() Err parazyd.org 70 i- freq=() Err parazyd.org 70 i- func "$fun" Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-zerr() { Err parazyd.org 70 i- error "error in: ${fun:-$last_notice}" Err parazyd.org 70 i- [[ "$last_func" = "" ]] || warn "called in: $last_func" Err parazyd.org 70 i- [[ "$last_act" = "" ]] || warn "called in: $last_act" Err parazyd.org 70 i- [[ "$last_notice" = "" ]] || warn "called in: $last_notice" Err parazyd.org 70 i- # [[ "$fun" = "" ]] || warn "called in: $fun" Err parazyd.org 70 i- TRAPEXIT() { Err parazyd.org 70 i- error "error reported, operation aborted." Err parazyd.org 70 i- } Err parazyd.org 70 i- return 1 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-ckreq reqck() { Err parazyd.org 70 i- err=0 Err parazyd.org 70 i- for v in $req; do Err parazyd.org 70 i- [[ "${(P)v}" = "" ]] && { Err parazyd.org 70 i- warn "${fun[(ws: :)1]}(): required setting is blank: $v" Err parazyd.org 70 i- err=1 Err parazyd.org 70 i- } Err parazyd.org 70 i- done Err parazyd.org 70 i- Err parazyd.org 70 i- [[ $err = 1 ]] && return $err Err parazyd.org 70 i- Err parazyd.org 70 i- for f in $freq; do Err parazyd.org 70 i- # exists and has size greater than zero Err parazyd.org 70 i- [[ -s $f ]] || { Err parazyd.org 70 i- warn "required file empty: $f" Err parazyd.org 70 i- err=1 Err parazyd.org 70 i- } Err parazyd.org 70 i- done Err parazyd.org 70 i- [[ $err == 1 ]] && zerr Err parazyd.org 70 i- return $err Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-zdump() { Err parazyd.org 70 i- fn zdump Err parazyd.org 70 i- [[ ${#vars} -gt 0 ]] && { Err parazyd.org 70 i- print "Global variables:" Err parazyd.org 70 i- for _v in $vars; do Err parazyd.org 70 i- print " $_v = \t ${(P)_v}" Err parazyd.org 70 i- done Err parazyd.org 70 i- } Err parazyd.org 70 i- [[ ${#arrs} -gt 0 ]] && { Err parazyd.org 70 i- print "Global arrays:" Err parazyd.org 70 i- for _a in $arrs; do Err parazyd.org 70 i- print " $_a \t ( ${(P)_a} )" Err parazyd.org 70 i- done Err parazyd.org 70 i- } Err parazyd.org 70 i- [[ ${#maps} -gt 0 ]] && { Err parazyd.org 70 i- print "Global maps:" Err parazyd.org 70 i- for _m in $maps; do Err parazyd.org 70 i- print " $_m [key] \t ( ${(Pk)_m} )" Err parazyd.org 70 i- print " $_m [val] \t ( ${(Pv)_m} )" Err parazyd.org 70 i- done Err parazyd.org 70 i- } Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# handy wrappers for throw/catch execution of blocks where we need the Err parazyd.org 70 i-# program to exit on any error (non-zero) returned by any function Err parazyd.org 70 i-throw() { function TRAPZERR() { zerr; return 1 } } Err parazyd.org 70 i-catch() { function TRAPZERR() { } } Err parazyd.org 70 i- Err parazyd.org 70 i-########################## Err parazyd.org 70 i-# Endgame handling Err parazyd.org 70 i- Err parazyd.org 70 i-arrs+=(destruens) Err parazyd.org 70 i-destruens=() Err parazyd.org 70 i- Err parazyd.org 70 i-# Trap functions for the endgame event Err parazyd.org 70 i-TRAPINT() { endgame INT; return $? } Err parazyd.org 70 i-# TRAPEXIT() { endgame EXIT; return $? } Err parazyd.org 70 i-TRAPHUP() { endgame HUP; return $? } Err parazyd.org 70 i-TRAPQUIT() { endgame QUIT; return $? } Err parazyd.org 70 i-TRAPABRT() { endgame ABORT; return $? } Err parazyd.org 70 i-TRAPKILL() { endgame KILL; return $? } Err parazyd.org 70 i-# TRAPPIPE() { endgame PIPE; return $? } Err parazyd.org 70 i-TRAPTERM() { endgame TERM; return $? } Err parazyd.org 70 i-TRAPSTOP() { endgame STOP; return $? } Err parazyd.org 70 i-# TRAPZERR() { func "function returns non-zero." } Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i-endgame() { Err parazyd.org 70 i- fn "endgame $*" Err parazyd.org 70 i- Err parazyd.org 70 i- # execute all no matter what Err parazyd.org 70 i- TRAPZERR() { } Err parazyd.org 70 i- Err parazyd.org 70 i- # process registered destructors Err parazyd.org 70 i- for d in $destruens; do Err parazyd.org 70 i- fn "destructor: $d" Err parazyd.org 70 i- $d Err parazyd.org 70 i- done Err parazyd.org 70 i- return 0 Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# Register endgame() to be called at exit. Err parazyd.org 70 i-# unlike TRAPEXIT, the zshexit() hook is not called when functions exit. Err parazyd.org 70 i-zshexit() { endgame EXIT; return $? } Err parazyd.org 70 i- Err parazyd.org 70 i-# }}} Debugging Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Tempfiles Err parazyd.org 70 i- Err parazyd.org 70 i-########################## Err parazyd.org 70 i-# Temp file handling Err parazyd.org 70 i- Err parazyd.org 70 i-vars+=(ztmpfile) Err parazyd.org 70 i-# ztmp() fills in $ztmpfile global. Caller must copy that variable as Err parazyd.org 70 i-# it will be overwritten at every call. Err parazyd.org 70 i-ztmp() { Err parazyd.org 70 i- fn ztmp Err parazyd.org 70 i- Err parazyd.org 70 i- ztmpfile=`mktemp` Err parazyd.org 70 i- tmpfiles+=($ztmpfile) Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# All tempfiles are freed in endgame() Err parazyd.org 70 i-_ztmp_destructor() { Err parazyd.org 70 i- fn _ztmp_destructor Err parazyd.org 70 i- Err parazyd.org 70 i- for f in $tmpfiles; do Err parazyd.org 70 i- rm -f "$f" Err parazyd.org 70 i- done Err parazyd.org 70 i- tmpfiles=() Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-arrs+=(tmpfiles) Err parazyd.org 70 i-destruens+=(_ztmp_destructor) Err parazyd.org 70 i- Err parazyd.org 70 i-# }}} Tempfiles Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Strings Err parazyd.org 70 i- Err parazyd.org 70 i-# tokenizer, works only with one char length delimiters Err parazyd.org 70 i-# saves everything in global array tok=() Err parazyd.org 70 i-arrs+=(tok) Err parazyd.org 70 i-strtok() { Err parazyd.org 70 i- fn "strtok $*" Err parazyd.org 70 i- _string="$1" Err parazyd.org 70 i- _delim="$2" Err parazyd.org 70 i- req=(_string _delim) Err parazyd.org 70 i- ckreq || return $? Err parazyd.org 70 i- Err parazyd.org 70 i- tok=() Err parazyd.org 70 i- f=0 Err parazyd.org 70 i- c=0 Err parazyd.org 70 i- for c in {1..${#_string}}; do Err parazyd.org 70 i- if [[ "${_string[(e)$c]}" == "$_delim" ]]; then Err parazyd.org 70 i- # check if not empty Err parazyd.org 70 i- t=${_string[(e)$(($f + 1)),$(($c - 1))]} Err parazyd.org 70 i- [[ "$t" == "" ]] || tok+=($t) Err parazyd.org 70 i- # save last found Err parazyd.org 70 i- f=$c Err parazyd.org 70 i- fi Err parazyd.org 70 i- done Err parazyd.org 70 i- # add last token Err parazyd.org 70 i- t=${_string[(e)$(($f + 1)),$c]} Err parazyd.org 70 i- [[ "$t" == "" ]] || tok+=($t) Err parazyd.org 70 i-} Err parazyd.org 70 i- Err parazyd.org 70 i-# TODO: move in here some helpers Err parazyd.org 70 i- Err parazyd.org 70 i-# }}} Strings Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Key/Value filesave Err parazyd.org 70 i- Err parazyd.org 70 i-# optional: define zkv=1 on source Err parazyd.org 70 i- Err parazyd.org 70 i-[[ "$zkv" = "" ]] || { Err parazyd.org 70 i- Err parazyd.org 70 i- ########################## Err parazyd.org 70 i- # Key/Value file storage using ZSh associative maps Err parazyd.org 70 i- Err parazyd.org 70 i- zmodload zsh/system Err parazyd.org 70 i- Err parazyd.org 70 i- # load a map from a file Err parazyd.org 70 i- # map must be already instantiated with typeset -A by called Err parazyd.org 70 i- # name of map is defined inside the file Err parazyd.org 70 i- function zkv.load() { Err parazyd.org 70 i- fn "zkv-load $*" Err parazyd.org 70 i- Err parazyd.org 70 i- file=$1 Err parazyd.org 70 i- [[ "$file" = "" ]] && { Err parazyd.org 70 i- error "zkv-open() missing argument: file-path" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 } Err parazyd.org 70 i- [[ -r "$file" ]] || { Err parazyd.org 70 i- error "zkv-open() file not found $file" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 } Err parazyd.org 70 i- [[ -s "$file" ]] || { Err parazyd.org 70 i- error "zkv-open() file is empty" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 } Err parazyd.org 70 i- Err parazyd.org 70 i- source $file Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # save a map in a file Err parazyd.org 70 i- # $1 = name of the map associative array Err parazyd.org 70 i- # $2 = full path to the file Err parazyd.org 70 i- function zkv.save() { Err parazyd.org 70 i- fn "zkv.save $*" Err parazyd.org 70 i- Err parazyd.org 70 i- _map=$1 Err parazyd.org 70 i- _path=$2 Err parazyd.org 70 i- [[ "$_path" = "" ]] && { Err parazyd.org 70 i- error "zkv.save() missing argument: map-name path-to-file" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- [[ -r $_path ]] && { Err parazyd.org 70 i- func "zkv.close() overwriting $_path" Err parazyd.org 70 i- func "backup turd left behind: ${_path}~" Err parazyd.org 70 i- mv $_path $_path~ Err parazyd.org 70 i- } Err parazyd.org 70 i- touch $_path Err parazyd.org 70 i- Err parazyd.org 70 i- # wondering about http://www.zsh.org/mla/users/2015/msg00286.html Err parazyd.org 70 i- # meanwhile solved using a double array, wasting a full map memcpy Err parazyd.org 70 i- _karr=(${(Pk)_map}) Err parazyd.org 70 i- _varr=(${(Pv)_map}) Err parazyd.org 70 i- _num="${#_karr}" Err parazyd.org 70 i- for c in {1..$_num}; do Err parazyd.org 70 i- # can also be cat here, however for speed we use builtins Err parazyd.org 70 i- # switch to cat if compatibility is an issue Err parazyd.org 70 i- sysread -o 1 <> $_path Err parazyd.org 70 i-$_map+=("${_karr[$c]}" "${(v)_varr[$c]}") Err parazyd.org 70 i-EOF Err parazyd.org 70 i- done Err parazyd.org 70 i- func "$_num key/values stored in $_path" 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-# }}} Key/Value filesave Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Get/Set REST API Err parazyd.org 70 i- Err parazyd.org 70 i-# optional: define restful=1 on source Err parazyd.org 70 i- Err parazyd.org 70 i-[[ "$restful" = "" ]] || { Err parazyd.org 70 i- Err parazyd.org 70 i- ######## Err parazyd.org 70 i- # Restful API client Err parazyd.org 70 i- # there is a clear zsh optimization here in get/set kv Err parazyd.org 70 i- # using zsh/tcp instead of spawning curl Err parazyd.org 70 i- # and perhaps querying with one call using ?recursive Err parazyd.org 70 i- Err parazyd.org 70 i- zmodload zsh/net/tcp Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- function restful.put() { Err parazyd.org 70 i- fn "restful.put $*" Err parazyd.org 70 i- Err parazyd.org 70 i- # $1 = hostname Err parazyd.org 70 i- # $2 = port Err parazyd.org 70 i- # $3 = path Err parazyd.org 70 i- # value from stdin | Err parazyd.org 70 i- Err parazyd.org 70 i- # to check if the http service is running is up to the caller Err parazyd.org 70 i- Err parazyd.org 70 i- _host=${1} # ip address Err parazyd.org 70 i- _port=${2} Err parazyd.org 70 i- _path=${3} Err parazyd.org 70 i- sysread _v Err parazyd.org 70 i- Err parazyd.org 70 i- req=(_host) Err parazyd.org 70 i- ckreq || return $? Err parazyd.org 70 i- Err parazyd.org 70 i- if ztcp $_host $_port; then Err parazyd.org 70 i- Err parazyd.org 70 i- # TODO: work out various parsers, this one works with consul.io Err parazyd.org 70 i- Err parazyd.org 70 i- _fd=$REPLY Err parazyd.org 70 i- # func "tcp open on fd $fd" Err parazyd.org 70 i- cat <& $_fd Err parazyd.org 70 i-PUT ${_path} HTTP/1.1 Err parazyd.org 70 i-User-Agent: Zuper/$zuper_version Err parazyd.org 70 i-Host: ${_host}:${_port} Err parazyd.org 70 i-Accept: */* Err parazyd.org 70 i-Content-Length: ${#_v} Err parazyd.org 70 i-Content-Type: application/x-www-form-urlencoded Err parazyd.org 70 i- Err parazyd.org 70 i-EOF Err parazyd.org 70 i- Err parazyd.org 70 i- print -n "$_v" >& $_fd Err parazyd.org 70 i- Err parazyd.org 70 i- sysread -i $_fd _res Err parazyd.org 70 i- Err parazyd.org 70 i- # close connection Err parazyd.org 70 i- ztcp -c $_fd Err parazyd.org 70 i- Err parazyd.org 70 i- [[ "$_res" =~ "true" ]] || { Err parazyd.org 70 i- warn "failed PUT on restful key/value" Err parazyd.org 70 i- warn "host: ${_host}" Err parazyd.org 70 i- warn "port: ${_port}" Err parazyd.org 70 i- warn "path: ${_path}" Err parazyd.org 70 i- warn "value: $_v" Err parazyd.org 70 i- print - "$_res" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- else Err parazyd.org 70 i- error "cannot connect to restful service: $_host:$_port" Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- fi Err parazyd.org 70 i- Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- function restful.get() { Err parazyd.org 70 i- fn "restful.get $*" Err parazyd.org 70 i- Err parazyd.org 70 i- _host=${1} Err parazyd.org 70 i- _port=${2} Err parazyd.org 70 i- _path=${3} Err parazyd.org 70 i- Err parazyd.org 70 i- req=(_host _port) Err parazyd.org 70 i- ckreq || return $? Err parazyd.org 70 i- Err parazyd.org 70 i- ztcp $_host $_port || { Err parazyd.org 70 i- zerr Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- _fd=$REPLY Err parazyd.org 70 i- Err parazyd.org 70 i- # TODO: work out various parsers, this one works with consul.io Err parazyd.org 70 i- Err parazyd.org 70 i- cat <& $_fd Err parazyd.org 70 i-GET ${_path} HTTP/1.1 Err parazyd.org 70 i-User-Agent: Zuper/$zuper_version Err parazyd.org 70 i-Host: $_host:$_port Err parazyd.org 70 i-Accept: */* Err parazyd.org 70 i- Err parazyd.org 70 i-EOF Err parazyd.org 70 i- sysread -i $_fd -o 1 | awk -F: ' Err parazyd.org 70 i-/"Value":/ { gsub(/"|}]/,"",$7) ; print $7 }' | base64 -d Err parazyd.org 70 i- Err parazyd.org 70 i- # close connection Err parazyd.org 70 i- ztcp -c $_fd Err parazyd.org 70 i- Err parazyd.org 70 i- return 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-# }}} Get/Set REST API Err parazyd.org 70 i- Err parazyd.org 70 i-# {{{ Helpers Err parazyd.org 70 i-[[ "$helpers" = "" ]] || { Err parazyd.org 70 i- Err parazyd.org 70 i- function helper.isfound isfound() { Err parazyd.org 70 i- command -v $1 1>/dev/null 2>/dev/null Err parazyd.org 70 i- return $? Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # remote leading and trailing spaces in a string taken from stdin Err parazyd.org 70 i- function helper.trim trim() { Err parazyd.org 70 i- sed -e 's/^[[:space:]]*//g ; s/[[:space:]]*\$//g' Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- zmodload zsh/mapfile Err parazyd.org 70 i- # faster substitute for cat Err parazyd.org 70 i- function helper.printfile printfile() { Err parazyd.org 70 i- print ${mapfile[$1]} Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # extract all emails found in a text from stdin Err parazyd.org 70 i- # outputs them one per line Err parazyd.org 70 i- function helper.extract-emails extract_emails() { Err parazyd.org 70 i- awk '{ for (i=1;i<=NF;i++) Err parazyd.org 70 i- if ( $i ~ /[[:alnum:]]@[[:alnum:]]/ ) { Err parazyd.org 70 i- gsub(/<|>|,/ , "" , $i); print $i } }' Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- zmodload zsh/regex Err parazyd.org 70 i- # takes a string as argument, returns success if is an email Err parazyd.org 70 i- function helper.isemail isemail() { Err parazyd.org 70 i- [[ "$1" -regex-match "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" ]] && return 0 Err parazyd.org 70 i- Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # takes a numeric argument and prints out a human readable size Err parazyd.org 70 i- function helper.human-size human_size() { Err parazyd.org 70 i- [[ $1 -gt 0 ]] || { Err parazyd.org 70 i- error "human_size() called with invalid argument" Err parazyd.org 70 i- return 1 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # we use the binary operation for speed Err parazyd.org 70 i- # shift right 10 is divide by 1024 Err parazyd.org 70 i- Err parazyd.org 70 i- # gigabytes Err parazyd.org 70 i- [[ $1 -gt 1073741824 ]] && { Err parazyd.org 70 i- print -n "$(( $1 >> 30 )) GB" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- # megabytes Err parazyd.org 70 i- [[ $1 -gt 1048576 ]] && { Err parazyd.org 70 i- print -n "$(( $1 >> 20 )) MB" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- } Err parazyd.org 70 i- # kilobytes Err parazyd.org 70 i- [[ $1 -gt 1024 ]] && { Err parazyd.org 70 i- print -n "$(( $1 >> 10 )) KB" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- } Err parazyd.org 70 i- # bytes Err parazyd.org 70 i- print -n "$1 Bytes" Err parazyd.org 70 i- return 0 Err parazyd.org 70 i- } Err parazyd.org 70 i- Err parazyd.org 70 i- Err parazyd.org 70 i- # strips out all html/xml tags (everything between < >) Err parazyd.org 70 i- function helper.html-strip xml_strip html_strip() { sed 's/<[^>]\+>//g' } Err parazyd.org 70 i- Err parazyd.org 70 i- # changes stdin string special chars to be shown in html Err parazyd.org 70 i- function helper.escape-html escape_html() { Err parazyd.org 70 i- sed -e ' Err parazyd.org 70 i-s/\&/\&/g Err parazyd.org 70 i-s/>/\>/g Err parazyd.org 70 i-s/ 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@@ -0,0 +1,160 @@ 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+check-hooks() { Err parazyd.org 70 i+ # TODO: fragmented keys, delete, backup, moar Err parazyd.org 70 i+ fn check-hooks Err parazyd.org 70 i+ Err parazyd.org 70 i+ 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+ 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+ 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+ else Err parazyd.org 70 i+ die "No valid hook syntax on hook $hook" 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+} 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+ 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+ 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+ 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+ 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+ 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+ 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 i+} 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+ Err parazyd.org 70 i+ act "Deleting 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+ 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+ 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+ 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+ Err parazyd.org 70 i+ compare-key Err parazyd.org 70 i+ [[ $? = 0 ]] && { 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+ 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+ 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 i+} 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+ 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 i+ mv ${GRAVEYARD}/temp/${tombid}/* /media/${tombid}/ Err parazyd.org 70 i+ mv ${GRAVEYARD}/temp/${tombid}/.* /media/${tombid}/ Err parazyd.org 70 i+ Err parazyd.org 70 i+ act "Moved all tomb temps" Err parazyd.org 70 i+ Err parazyd.org 70 i+ rmdir ${GRAVEYARD}/temp/${tombid} Err parazyd.org 70 i+ fi Err parazyd.org 70 i+} Err parazyd.org 70 1diff --git a/zlibs/keyfiles b/zlibs/keyfiles /git/coffin/file/zlibs/keyfiles.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+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/mounts b/zlibs/mounts /git/coffin/file/zlibs/mounts.gph parazyd.org 70 it@@ -0,0 +1,55 @@ 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+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+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 i+ die "$KEYMOUNT already exists." Err parazyd.org 70 i+ return 1 Err parazyd.org 70 i+ else Err parazyd.org 70 i+ act "Creating $KEYMOUNT" Err parazyd.org 70 i+ mkdir -p $KEYMOUNT Err parazyd.org 70 i+ act "Mounting..." Err parazyd.org 70 i+ mount $device $KEYMOUNT 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+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+ ckreq || return 1 Err parazyd.org 70 i+ Err parazyd.org 70 i+ if [[ -d $KEYMOUNT ]]; then Err parazyd.org 70 i+ act "Unmounting $device" Err parazyd.org 70 i+ umount $device \ Err parazyd.org 70 i+ && rmdir $KEYMOUNT Err parazyd.org 70 i+ act "Success umounting" Err parazyd.org 70 i+ return 0 Err parazyd.org 70 i+ else Err parazyd.org 70 i+ act "No $KEYMOUNT found" Err parazyd.org 70 i+ return 0 Err parazyd.org 70 i+ fi 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@@ -0,0 +1,98 @@ 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+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+ 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+ 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+ chmod 600 $TOMBS && \ Err parazyd.org 70 i+ act "Removed from $TOMBS" Err parazyd.org 70 i+ rm $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+ Err parazyd.org 70 i+ act "Doing ttab magic..." Err parazyd.org 70 i+ 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+ act "Found line $line..." Err parazyd.org 70 i+ 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+ Err parazyd.org 70 i+ compare-key Err parazyd.org 70 i+ [[ $? = 0 ]] && { 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+ 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 i+ chmod g+rw /media/$tombid Err parazyd.org 70 i+ update-tombs add Err parazyd.org 70 i+ } Err parazyd.org 70 i+ Err parazyd.org 70 i+ check-temptomb 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 1diff --git a/zuper b/zuper /git/coffin/file/zuper.gph parazyd.org 70 it@@ -0,0 +1 @@ Err parazyd.org 70 i+Subproject commit 4fed4af700b791d7df770edf802aaf67c2a07e67 Err parazyd.org 70 .