Explorar el Código

Import and export of security settings

Bob Mottram hace 10 años
padre
commit
b6e0eb1eb5
Se han modificado 1 ficheros con 215 adiciones y 0 borrados
  1. 215
    0
      src/freedombone-sec

+ 215
- 0
src/freedombone-sec Ver fichero

@@ -45,6 +45,9 @@ XMPP_CONFIG='/etc/prosody/conf.avail/xmpp.cfg.lua'
45 45
 
46 46
 MINIMUM_LENGTH=6
47 47
 
48
+IMPORT_FILE=
49
+EXPORT_FILE=
50
+
48 51
 function get_protocols_from_website {
49 52
   if [ ! -f $WEBSITES_DIRECTORY/$1 ]; then
50 53
       return
@@ -311,10 +314,222 @@ function interactive_setup {
311 314
   clear
312 315
 }
313 316
 
317
+function import_settings {
318
+  if [ ! $IMPORT_FILE ]; then
319
+      return
320
+  fi
321
+
322
+  if [ ! -f $IMPORT_FILE ]; then
323
+      echo "Import file $IMPORT_FILE not found"
324
+      exit 6393
325
+  fi
326
+
327
+  if grep -q "SSL_PROTOCOLS" $IMPORT_FILE; then
328
+      TEMP_VALUE=$(grep "SSL_PROTOCOLS" $IMPORT_FILE | awk -F '=' '{print $2}')
329
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
330
+          SSL_PROTOCOLS=$TEMP_VALUE
331
+      fi
332
+  fi
333
+  if grep -q "SSL_CIPHERS" $IMPORT_FILE; then
334
+      TEMP_VALUE=$(grep "SSL_CIPHERS" $IMPORT_FILE | awk -F '=' '{print $2}')
335
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
336
+          SSL_CIPHERS=$TEMP_VALUE
337
+      fi
338
+  fi
339
+  if grep -q "SSH_CIPHERS" $IMPORT_FILE; then
340
+      TEMP_VALUE=$(grep "SSH_CIPHERS" $IMPORT_FILE | awk -F '=' '{print $2}')
341
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
342
+          SSH_CIPHERS=$TEMP_VALUE
343
+      fi
344
+  fi
345
+  if grep -q "SSH_MACS" $IMPORT_FILE; then
346
+      TEMP_VALUE=$(grep "SSH_MACS" $IMPORT_FILE | awk -F '=' '{print $2}')
347
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
348
+          SSH_MACS=$TEMP_VALUE
349
+      fi
350
+  fi
351
+  if grep -q "SSH_KEX" $IMPORT_FILE; then
352
+      TEMP_VALUE=$(grep "SSH_KEX" $IMPORT_FILE | awk -F '=' '{print $2}')
353
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
354
+          SSH_KEX=$TEMP_VALUE
355
+      fi
356
+  fi
357
+  if grep -q "SSH_HOST_KEY_ALGORITHMS" $IMPORT_FILE; then
358
+      TEMP_VALUE=$(grep "SSH_HOST_KEY_ALGORITHMS" $IMPORT_FILE | awk -F '=' '{print $2}')
359
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
360
+          SSH_HOST_KEY_ALGORITHMS=$TEMP_VALUE
361
+      fi
362
+  fi
363
+  if grep -q "SSH_PASSWORDS" $IMPORT_FILE; then
364
+      TEMP_VALUE=$(grep "SSH_PASSWORDS" $IMPORT_FILE | awk -F '=' '{print $2}')
365
+      if [[ $TEMP_VALUE == "yes" || $TEMP_VALUE == "no" ]]; then
366
+          SSH_PASSWORDS=$TEMP_VALUE
367
+      fi
368
+  fi
369
+  if grep -q "XMPP_CIPHERS" $IMPORT_FILE; then
370
+      TEMP_VALUE=$(grep "XMPP_CIPHERS" $IMPORT_FILE | awk -F '=' '{print $2}')
371
+      if [ ${#TEMP_VALUE} -gt $MINIMUM_LENGTH ]; then
372
+          XMPP_CIPHERS=$TEMP_VALUE
373
+      fi
374
+  fi
375
+  if grep -q "XMPP_ECC_CURVE" $IMPORT_FILE; then
376
+      TEMP_VALUE=$(grep "XMPP_ECC_CURVE" $IMPORT_FILE | awk -F '=' '{print $2}')
377
+      if [ ${#TEMP_VALUE} -gt 3 ]; then
378
+          XMPP_ECC_CURVE=$TEMP_VALUE
379
+      fi
380
+  fi
381
+}
382
+
383
+function export_settings {
384
+  if [ ! $EXPORT_FILE ]; then
385
+      return
386
+  fi
387
+
388
+  if [ ! -f $EXPORT_FILE ]; then
389
+      if [ $SSL_PROTOCOLS ]; then
390
+          echo "SSL_PROTOCOLS=$SSL_PROTOCOLS" >> $EXPORT_FILE
391
+      fi
392
+      if [ $SSL_CIPHERS ]; then
393
+          echo "SSL_CIPHERS=$SSL_CIPHERS" >> $EXPORT_FILE
394
+      fi
395
+      if [ $SSH_CIPHERS ]; then
396
+          echo "SSH_CIPHERS=$SSH_CIPHERS" >> $EXPORT_FILE
397
+      fi
398
+      if [ $SSH_MACS ]; then
399
+          echo "SSH_MACS=$SSH_MACS" >> $EXPORT_FILE
400
+      fi
401
+      if [ $SSH_KEX ]; then
402
+          echo "SSH_KEX=$SSH_KEX" >> $EXPORT_FILE
403
+      fi
404
+      if [ $SSH_HOST_KEY_ALGORITHMS ]; then
405
+          echo "SSH_HOST_KEY_ALGORITHMS=$SSH_HOST_KEY_ALGORITHMS" >> $EXPORT_FILE
406
+      fi
407
+      if [ $SSH_PASSWORDS ]; then
408
+          echo "SSH_PASSWORDS=$SSH_PASSWORDS" >> $EXPORT_FILE
409
+      fi
410
+      if [ $XMPP_CIPHERS ]; then
411
+          echo "XMPP_CIPHERS=$XMPP_CIPHERS" >> $EXPORT_FILE
412
+      fi
413
+      if [ $XMPP_ECC_CURVE ]; then
414
+          echo "XMPP_ECC_CURVE=$XMPP_ECC_CURVE" >> $EXPORT_FILE
415
+      fi
416
+      return
417
+  fi
418
+
419
+  if [ $SSL_PROTOCOLS ]; then
420
+      if grep -q "SSL_PROTOCOLS" $EXPORT_FILE; then
421
+          sed -i "s|SSL_PROTOCOLS=.*|SSL_PROTOCOLS=$SSL_PROTOCOLS|g" $EXPORT_FILE
422
+      else
423
+          echo "SSL_PROTOCOLS=$SSL_PROTOCOLS" >> $EXPORT_FILE
424
+      fi
425
+  fi
426
+  if [ $SSL_CIPHERS ]; then
427
+      if grep -q "SSL_CIPHERS" $EXPORT_FILE; then
428
+          sed -i "s|SSL_CIPHERS=.*|SSL_CIPHERS=$SSL_CIPHERS|g" $EXPORT_FILE
429
+      else
430
+          echo "SSL_CIPHERS=$SSL_CIPHERS" >> $EXPORT_FILE
431
+      fi
432
+  fi
433
+  if [ $SSH_CIPHERS ]; then
434
+      if grep -q "SSH_CIPHERS" $EXPORT_FILE; then
435
+          sed -i "s|SSH_CIPHERS=.*|SSH_CIPHERS=$SSH_CIPHERS|g" $EXPORT_FILE
436
+      else
437
+          echo "SSH_CIPHERS=$SSH_CIPHERS" >> $EXPORT_FILE
438
+      fi
439
+  fi
440
+  if [ $SSH_MACS ]; then
441
+      if grep -q "SSH_MACS" $EXPORT_FILE; then
442
+          sed -i "s|SSH_MACS=.*|SSH_MACS=$SSH_MACS|g" $EXPORT_FILE
443
+      else
444
+          echo "SSH_MACS=$SSH_MACS" >> $EXPORT_FILE
445
+      fi
446
+  fi
447
+  if [ $SSH_KEX ]; then
448
+      if grep -q "SSH_KEX" $EXPORT_FILE; then
449
+          sed -i "s|SSH_KEX=.*|SSH_KEX=$SSH_KEX|g" $EXPORT_FILE
450
+      else
451
+          echo "SSH_KEX=$SSH_KEX" >> $EXPORT_FILE
452
+      fi
453
+  fi
454
+  if [ $SSH_HOST_KEY_ALGORITHMS ]; then
455
+      if grep -q "SSH_HOST_KEY_ALGORITHMS" $EXPORT_FILE; then
456
+          sed -i "s|SSH_HOST_KEY_ALGORITHMS=.*|SSH_HOST_KEY_ALGORITHMS=$SSH_HOST_KEY_ALGORITHMS|g" $EXPORT_FILE
457
+      else
458
+          echo "SSH_HOST_KEY_ALGORITHMS=$SSH_HOST_KEY_ALGORITHMS" >> $EXPORT_FILE
459
+      fi
460
+  fi
461
+  if [ $SSH_PASSWORDS ]; then
462
+      if grep -q "SSH_PASSWORDS" $EXPORT_FILE; then
463
+          sed -i "s|SSH_PASSWORDS=.*|SSH_PASSWORDS=$SSH_PASSWORDS|g" $EXPORT_FILE
464
+      else
465
+          echo "SSH_PASSWORDS=$SSH_PASSWORDS" >> $EXPORT_FILE
466
+      fi
467
+  fi
468
+  if [ $XMPP_CIPHERS ]; then
469
+      if grep -q "XMPP_CIPHERS" $EXPORT_FILE; then
470
+          sed -i "s|XMPP_CIPHERS=.*|XMPP_CIPHERS=$XMPP_CIPHERS|g" $EXPORT_FILE
471
+      else
472
+          echo "XMPP_CIPHERS=$XMPP_CIPHERS" >> $EXPORT_FILE
473
+      fi
474
+  fi
475
+  if [ $XMPP_ECC_CURVE ]; then
476
+      if grep -q "XMPP_ECC_CURVE" $EXPORT_FILE; then
477
+          sed -i "s|XMPP_ECC_CURVE=.*|XMPP_ECC_CURVE=$XMPP_ECC_CURVE|g" $EXPORT_FILE
478
+      else
479
+          echo "XMPP_ECC_CURVE=$XMPP_ECC_CURVE" >> $EXPORT_FILE
480
+      fi
481
+  fi
482
+  echo "Security settings exported to $EXPORT_FILE"
483
+  exit 0
484
+}
485
+
486
+function show_help {
487
+  echo ''
488
+  echo 'freedombone-sec'
489
+  echo ''
490
+  echo 'Alters the security settings'
491
+  echo ''
492
+  echo ''
493
+  echo '  -h --help             Show help'
494
+  echo '  -e --export           Export security settings to a file'
495
+  echo '  -i --import           Import security settings from a file'
496
+  echo ''
497
+  exit 0
498
+}
499
+
500
+
501
+# Get the commandline options
502
+while [[ $# > 1 ]]
503
+do
504
+key="$1"
505
+
506
+case $key in
507
+    -h|--help)
508
+    show_help
509
+    ;;
510
+    # Export settings
511
+    -e|--export)
512
+    shift
513
+    EXPORT_FILE="$1"
514
+    ;;
515
+    # Export settings
516
+    -i|--import)
517
+    shift
518
+    IMPORT_FILE="$1"
519
+    ;;
520
+    *)
521
+    # unknown option
522
+    ;;
523
+esac
524
+shift
525
+done
526
+
314 527
 get_website_settings
315 528
 get_imap_settings
316 529
 get_ssh_settings
317 530
 get_xmpp_settings
531
+import_settings
532
+export_settings
318 533
 interactive_setup
319 534
 change_website_settings
320 535
 change_imap_settings