From 261c4ee9b47f73bb929956d8760228c627f4f555 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 29 Jun 2015 22:31:48 +0100 Subject: [PATCH] Interactive installer can load gpg keys from USB drive --- src/freedombone-config | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/src/freedombone-config b/src/freedombone-config index c6e71364..f9093a86 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -65,6 +65,7 @@ MY_NAME= LOCAL_NETWORK_STATIC_IP_ADDRESS= ROUTER_IP_ADDRESS= ENABLE_CJDNS= +ENABLE_BATMAN= DEBIAN_REPO= NAMESERVER1= NAMESERVER2= @@ -164,6 +165,9 @@ function save_configuration_file { if [ $ENABLE_CJDNS ]; then echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE fi + if [ $ENABLE_BATMAN ]; then + echo "ENABLE_BATMAN=$ENABLE_BATMAN" >> $CONFIGURATION_FILE + fi echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE @@ -233,6 +237,73 @@ function validate_domain_name { fi } +function interactive_gpg { + dialog --title "Encryption keys" \ + --backtitle "Freedombone Configuration" \ + --defaultno \ + --yesno "\nDo you have existing GPG/PGP keys that you wish to install?" 7 60 + sel=$? + case $sel in + 1) return;; + 255) exit 0;; + esac + + dialog --title "Encryption keys" --msgbox 'Plug in a USB drive containing a copy of your .gnupg directory' 6 70 + + if [[ $INSTALLING_ON_BBB == "yes" ]]; then + GPG_USB_DRIVE='/dev/sda1' + if [ ! -b $GPG_USB_DRIVE ]; then + dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30 + exit 739836 + fi + else + GPG_USB_DRIVE='/dev/sdb1' + if [ ! -b $GPG_USB_DRIVE ]; then + GPG_USB_DRIVE='/dev/sdc1' + if [ ! -b $GPG_USB_DRIVE ]; then + GPG_USB_DRIVE='/dev/sdd1' + if [ ! -b $GPG_USB_DRIVE ]; then + dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30 + exit 27852 + fi + fi + fi + fi + + GPG_USB_MOUNT='/mnt/usb' + umount -f $GPG_USB_MOUNT + if [ ! -d $GPG_USB_MOUNT ]; then + mkdir -p $GPG_USB_MOUNT + fi + + if [ -f /dev/mapper/encrypted_usb ]; then + rm -rf /dev/mapper/encrypted_usb + fi + cryptsetup luksClose encrypted_usb + cryptsetup luksOpen $GPG_USB_DRIVE encrypted_usb + if [ "$?" = "0" ]; then + GPG_USB_DRIVE=/dev/mapper/encrypted_usb + fi + mount $GPG_USB_DRIVE $GPG_USB_MOUNT + if [ ! "$?" = "0" ]; then + dialog --title "Encryption keys" --msgbox "There was a problem mounting the USB drive to $GPG_USB_MOUNT" 6 70 + rm -rf $GPG_USB_MOUNT + exit 74393 + fi + + if [ ! -d $GPG_USB_MOUNT/.gnupg ]; then + dialog --title "Encryption keys" --msgbox "The directory $GPG_USB_MOUNT/.gnupg was not found" 6 70 + umount $GPG_USB_MOUNT + rm -rf $GPG_USB_MOUNT + exit 723814 + fi + + cp -r $GPG_USB_MOUNT/.gnupg /home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}') + + umount $GPG_USB_MOUNT + rm -rf $GPG_USB_MOUNT +} + function interactive_configuration { # create a temporary copy of the configuration file # which can be used to pre-populate selections @@ -325,6 +396,8 @@ function interactive_configuration { fi save_configuration_file + interactive_gpg + data=$(tempfile 2>/dev/null) trap "rm -f $data" 0 1 2 5 15 if [[ $INSTALLING_ON_BBB == "no" ]]; then