Browse Source

Interactive installer can load gpg keys from USB drive

Bob Mottram 9 years ago
parent
commit
261c4ee9b4
1 changed files with 73 additions and 0 deletions
  1. 73
    0
      src/freedombone-config

+ 73
- 0
src/freedombone-config View File

@@ -65,6 +65,7 @@ MY_NAME=
65 65
 LOCAL_NETWORK_STATIC_IP_ADDRESS=
66 66
 ROUTER_IP_ADDRESS=
67 67
 ENABLE_CJDNS=
68
+ENABLE_BATMAN=
68 69
 DEBIAN_REPO=
69 70
 NAMESERVER1=
70 71
 NAMESERVER2=
@@ -164,6 +165,9 @@ function save_configuration_file {
164 165
   if [ $ENABLE_CJDNS ]; then
165 166
       echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
166 167
   fi
168
+  if [ $ENABLE_BATMAN ]; then
169
+      echo "ENABLE_BATMAN=$ENABLE_BATMAN" >> $CONFIGURATION_FILE
170
+  fi
167 171
   echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
168 172
   echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
169 173
   echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
@@ -233,6 +237,73 @@ function validate_domain_name {
233 237
   fi
234 238
 }
235 239
 
240
+function interactive_gpg {
241
+  dialog --title "Encryption keys" \
242
+         --backtitle "Freedombone Configuration" \
243
+         --defaultno \
244
+         --yesno "\nDo you have existing GPG/PGP keys that you wish to install?" 7 60
245
+  sel=$?
246
+  case $sel in
247
+      1) return;;
248
+      255) exit 0;;
249
+  esac
250
+
251
+  dialog --title "Encryption keys" --msgbox 'Plug in a USB drive containing a copy of your .gnupg directory' 6 70
252
+
253
+  if [[ $INSTALLING_ON_BBB == "yes" ]]; then
254
+      GPG_USB_DRIVE='/dev/sda1'
255
+      if [ ! -b $GPG_USB_DRIVE ]; then
256
+          dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30
257
+          exit 739836
258
+      fi
259
+  else
260
+      GPG_USB_DRIVE='/dev/sdb1'
261
+      if [ ! -b $GPG_USB_DRIVE ]; then
262
+          GPG_USB_DRIVE='/dev/sdc1'
263
+          if [ ! -b $GPG_USB_DRIVE ]; then
264
+              GPG_USB_DRIVE='/dev/sdd1'
265
+              if [ ! -b $GPG_USB_DRIVE ]; then
266
+                  dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30
267
+                  exit 27852
268
+              fi
269
+          fi
270
+      fi
271
+  fi
272
+
273
+  GPG_USB_MOUNT='/mnt/usb'
274
+  umount -f $GPG_USB_MOUNT
275
+  if [ ! -d $GPG_USB_MOUNT ]; then
276
+      mkdir -p $GPG_USB_MOUNT
277
+  fi
278
+
279
+  if [ -f /dev/mapper/encrypted_usb ]; then
280
+      rm -rf /dev/mapper/encrypted_usb
281
+  fi
282
+  cryptsetup luksClose encrypted_usb
283
+  cryptsetup luksOpen $GPG_USB_DRIVE encrypted_usb
284
+  if [ "$?" = "0" ]; then
285
+      GPG_USB_DRIVE=/dev/mapper/encrypted_usb
286
+  fi
287
+  mount $GPG_USB_DRIVE $GPG_USB_MOUNT
288
+  if [ ! "$?" = "0" ]; then
289
+      dialog --title "Encryption keys" --msgbox "There was a problem mounting the USB drive to $GPG_USB_MOUNT" 6 70
290
+      rm -rf $GPG_USB_MOUNT
291
+      exit 74393
292
+  fi
293
+
294
+  if [ ! -d $GPG_USB_MOUNT/.gnupg ]; then
295
+      dialog --title "Encryption keys" --msgbox "The directory $GPG_USB_MOUNT/.gnupg was not found" 6 70
296
+      umount $GPG_USB_MOUNT
297
+      rm -rf $GPG_USB_MOUNT
298
+      exit 723814
299
+  fi
300
+
301
+  cp -r $GPG_USB_MOUNT/.gnupg /home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')
302
+
303
+  umount $GPG_USB_MOUNT
304
+  rm -rf $GPG_USB_MOUNT
305
+}
306
+
236 307
 function interactive_configuration {
237 308
   # create a temporary copy of the configuration file
238 309
   # which can be used to pre-populate selections
@@ -325,6 +396,8 @@ function interactive_configuration {
325 396
   fi
326 397
   save_configuration_file
327 398
 
399
+  interactive_gpg
400
+
328 401
   data=$(tempfile 2>/dev/null)
329 402
   trap "rm -f $data" 0 1 2 5 15
330 403
   if [[ $INSTALLING_ON_BBB == "no" ]]; then