From 38d0bcff22a00e0694fb99664b934324d6dfb6b2 Mon Sep 17 00:00:00 2001 From: downtownallday Date: Mon, 22 Jun 2020 10:03:21 -0400 Subject: [PATCH] Add support for non-interactive install Centralize all scripts into 'ehdd' --- {setup/ehdd => ehdd}/create_hdd.sh | 8 ++++---- {setup/ehdd => ehdd}/ehdd_funcs.sh | 6 ++++++ {setup/ehdd => ehdd}/mount.sh | 4 ++-- {setup/ehdd => ehdd}/postinstall.sh | 16 ++-------------- {setup => ehdd}/start-encrypted.sh | 16 ++++++++++------ {tools => ehdd}/startup.sh | 4 ++-- {setup/ehdd => ehdd}/umount.sh | 2 +- 7 files changed, 27 insertions(+), 29 deletions(-) rename {setup/ehdd => ehdd}/create_hdd.sh (82%) rename {setup/ehdd => ehdd}/ehdd_funcs.sh (77%) rename {setup/ehdd => ehdd}/mount.sh (88%) rename {setup/ehdd => ehdd}/postinstall.sh (60%) rename {setup => ehdd}/start-encrypted.sh (57%) rename {tools => ehdd}/startup.sh (77%) rename {setup/ehdd => ehdd}/umount.sh (83%) diff --git a/setup/ehdd/create_hdd.sh b/ehdd/create_hdd.sh similarity index 82% rename from setup/ehdd/create_hdd.sh rename to ehdd/create_hdd.sh index ea0e0912..11890525 100755 --- a/setup/ehdd/create_hdd.sh +++ b/ehdd/create_hdd.sh @@ -1,6 +1,6 @@ #!/bin/bash -source "setup/ehdd/ehdd_funcs.sh" || exit 1 +source "ehdd/ehdd_funcs.sh" || exit 1 if [ "$1" == "" ]; then echo "usage: $0 " @@ -26,14 +26,14 @@ if [ ! -e "$EHDD_IMG" ]; then dd if=/dev/zero of="$EHDD_IMG" bs=1M count=$count || exit 1 loop=$(find_unused_loop) losetup $loop "$EHDD_IMG" || exit 1 - if ! cryptsetup luksFormat -i 15000 $loop; then + if ! cryptsetup luksFormat $(keyfile_option) --batch-mode -i 15000 $loop; then losetup -d $loop rm -f "$EHDD_IMG" exit 1 fi echo "" - echo "NOTE: You will need to reenter your drive encryption password a number of times" - cryptsetup luksOpen $loop $EHDD_LUKS_NAME # map device to /dev/mapper/NAME + echo "NOTE: You will need to reenter your drive encryption password" + cryptsetup luksOpen $(keyfile_option) $loop $EHDD_LUKS_NAME # map device to /dev/mapper/NAME mke2fs -j /dev/mapper/$EHDD_LUKS_NAME cryptsetup luksClose $EHDD_LUKS_NAME losetup -d $loop diff --git a/setup/ehdd/ehdd_funcs.sh b/ehdd/ehdd_funcs.sh similarity index 77% rename from setup/ehdd/ehdd_funcs.sh rename to ehdd/ehdd_funcs.sh index 1276b142..b86901b2 100644 --- a/setup/ehdd/ehdd_funcs.sh +++ b/ehdd/ehdd_funcs.sh @@ -18,3 +18,9 @@ find_unused_loop() { find_inuse_loop() { losetup -l | awk "\$6 == \"$EHDD_IMG\" { print \$1 }" } + +keyfile_option() { + if [ ! -z "$EHDD_KEYFILE" ]; then + echo "--key-file $EHDD_KEYFILE" + fi +} diff --git a/setup/ehdd/mount.sh b/ehdd/mount.sh similarity index 88% rename from setup/ehdd/mount.sh rename to ehdd/mount.sh index 58c4d97c..64836149 100755 --- a/setup/ehdd/mount.sh +++ b/ehdd/mount.sh @@ -1,6 +1,6 @@ #!/bin/bash -. "setup/ehdd/ehdd_funcs.sh" || exit 1 +. "ehdd/ehdd_funcs.sh" || exit 1 if [ ! -e "$EHDD_IMG" ]; then echo "Warning: ecrypted HDD not found at $EHDD_IMG, not mounting" @@ -15,7 +15,7 @@ fi loop=$(find_unused_loop) losetup $loop "$EHDD_IMG" || exit 1 # map device to /dev/mapper/NAME -cryptsetup luksOpen $loop $EHDD_LUKS_NAME +cryptsetup luksOpen $(keyfile_option) $loop $EHDD_LUKS_NAME code=$? if [ $code -ne 0 ]; then echo "luksOpen failed ($code) - is $EHDD_IMG luks formatted?" diff --git a/setup/ehdd/postinstall.sh b/ehdd/postinstall.sh similarity index 60% rename from setup/ehdd/postinstall.sh rename to ehdd/postinstall.sh index f2d327d4..fe0d5394 100755 --- a/setup/ehdd/postinstall.sh +++ b/ehdd/postinstall.sh @@ -1,6 +1,6 @@ #!/bin/bash -. "setup/ehdd/ehdd_funcs.sh" || exit 1 +. "ehdd/ehdd_funcs.sh" || exit 1 if [ -e "$EHDD_IMG" ]; then @@ -20,22 +20,10 @@ if [ -e "$EHDD_IMG" ]; then echo "" echo "IMPORTANT:" echo " Services have been disabled at startup because the encrypted HDD will" - echo " be unavailable. Run tools/startup.sh after a reboot." + echo " be unavailable. Run ehdd/startup.sh after a reboot." fi fi -# run local modifications -h=$(hostname --fqdn 2>/dev/null || hostname) -count=0 -for d in local/mods.sh local/mods-${h}.sh; do - if [ -e $d ]; then - let count+=1 - if ! ./$d; then - echo "Local modification script $d failed" - exit 1 - fi - fi -done diff --git a/setup/start-encrypted.sh b/ehdd/start-encrypted.sh similarity index 57% rename from setup/start-encrypted.sh rename to ehdd/start-encrypted.sh index 131e6067..b2c9a86f 100755 --- a/setup/start-encrypted.sh +++ b/ehdd/start-encrypted.sh @@ -1,5 +1,5 @@ #!/bin/bash -EHDD_IMG="$(setup/ehdd/create_hdd.sh -location)" +EHDD_IMG="$(ehdd/create_hdd.sh -location)" [ -e /etc/mailinabox.conf ] && . /etc/mailinabox.conf @@ -11,17 +11,21 @@ if [ ! -e "$EHDD_IMG" -a ! -z "$STORAGE_ROOT" -a \ elif [ ! -e "$EHDD_IMG" ]; then echo "Creating a new encrypted HDD." - echo -n "How big should it be? Enter a number in gigabytes: " - read gb - setup/ehdd/create_hdd.sh "$gb" || exit 1 + if [ -z "${NONINTERACTIVE:-}" ]; then + echo -n "How big should it be? Enter a number in gigabytes: " + read gb + else + gb="${EHDD_GB:-5}" + fi + ehdd/create_hdd.sh "$gb" || exit 1 fi -if setup/ehdd/mount.sh; then +if ehdd/mount.sh; then setup/start.sh $@ if [ $? -eq 0 ]; then - setup/ehdd/postinstall.sh || exit 1 + ehdd/postinstall.sh || exit 1 else echo "setup/start.sh failed" fi diff --git a/tools/startup.sh b/ehdd/startup.sh similarity index 77% rename from tools/startup.sh rename to ehdd/startup.sh index b9e18007..73ce06aa 100755 --- a/tools/startup.sh +++ b/ehdd/startup.sh @@ -1,5 +1,5 @@ #!/bin/bash -setup/ehdd/mount.sh || exit 1 +ehdd/mount.sh || exit 1 if [ -s /etc/mailinabox.conf ]; then [ -x /usr/sbin/slapd ] && systemctl start slapd @@ -9,7 +9,7 @@ if [ -s /etc/mailinabox.conf ]; then systemctl start nginx systemctl start cron #systemctl start nsd - systemctl link -f $HOME/mailinabox/conf/mailinabox.service + systemctl link -f $(pwd)/conf/mailinabox.service systemctl start mailinabox systemctl start fail2ban fi diff --git a/setup/ehdd/umount.sh b/ehdd/umount.sh similarity index 83% rename from setup/ehdd/umount.sh rename to ehdd/umount.sh index 6e5e5efc..f12cef37 100755 --- a/setup/ehdd/umount.sh +++ b/ehdd/umount.sh @@ -1,6 +1,6 @@ #!/bin/bash -. "setup/ehdd/ehdd_funcs.sh" || exit 1 +. "ehdd/ehdd_funcs.sh" || exit 1 if ! mount | grep "$EHDD_MOUNTPOINT" >/dev/null; then # not mounted