Bladeren bron

freedombone-config command to interactively create a configuration file

Bob Mottram 10 jaren geleden
bovenliggende
commit
2deeea5303
5 gewijzigde bestanden met toevoegingen van 835 en 601 verwijderingen
  1. 4
    0
      Makefile
  2. 1
    0
      debian/source/include-binaries
  3. BIN
      man/freedombone-config.1.gz
  4. 18
    601
      src/freedombone
  5. 812
    0
      src/freedombone-config

+ 4
- 0
Makefile Bestand weergeven

@@ -15,24 +15,28 @@ install:
15 15
 	install -m 755 src/${APP}-tordongle ${DESTDIR}${PREFIX}/bin
16 16
 	install -m 755 src/${APP}-client ${DESTDIR}${PREFIX}/bin
17 17
 	install -m 755 src/${APP}-remote ${DESTDIR}${PREFIX}/bin
18
+	install -m 755 src/${APP}-config ${DESTDIR}${PREFIX}/bin
18 19
 	mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1
19 20
 	install -m 644 man/${APP}.1.gz ${DESTDIR}${PREFIX}/share/man/man1
20 21
 	install -m 644 man/${APP}-prep.1.gz ${DESTDIR}${PREFIX}/share/man/man1
21 22
 	install -m 644 man/${APP}-tordongle.1.gz ${DESTDIR}${PREFIX}/share/man/man1
22 23
 	install -m 644 man/${APP}-client.1.gz ${DESTDIR}${PREFIX}/share/man/man1
23 24
 	install -m 644 man/${APP}-remote.1.gz ${DESTDIR}${PREFIX}/share/man/man1
25
+	install -m 644 man/${APP}-config.1.gz ${DESTDIR}${PREFIX}/share/man/man1
24 26
 uninstall:
25 27
 	rm -f ${PREFIX}/share/man/man1/${APP}.1.gz
26 28
 	rm -f ${PREFIX}/share/man/man1/${APP}-prep.1.gz
27 29
 	rm -f ${PREFIX}/share/man/man1/${APP}-tordongle.1.gz
28 30
 	rm -f ${PREFIX}/share/man/man1/${APP}-client.1.gz
29 31
 	rm -f ${PREFIX}/share/man/man1/${APP}-remote.1.gz
32
+	rm -f ${PREFIX}/share/man/man1/${APP}-config.1.gz
30 33
 	rm -rf ${PREFIX}/share/${APP}
31 34
 	rm -f ${PREFIX}/bin/${APP}
32 35
 	rm -f ${PREFIX}/bin/${APP}-prep
33 36
 	rm -f ${PREFIX}/bin/${APP}-tordongle
34 37
 	rm -f ${PREFIX}/bin/${APP}-client
35 38
 	rm -f ${PREFIX}/bin/${APP}-remote
39
+	rm -f ${PREFIX}/bin/${APP}-config
36 40
 clean:
37 41
 	rm -f \#* \.#* debian/*.substvars debian/*.log
38 42
 	rm -fr deb.* debian/${APP}

+ 1
- 0
debian/source/include-binaries Bestand weergeven

@@ -3,3 +3,4 @@ man/freedombone-prep.1.gz
3 3
 man/freedombone-tordongle.1.gz
4 4
 man/freedombone-client.1.gz
5 5
 man/freedombone-remote.1.gz
6
+man/freedombone-config.1.gz

BIN
man/freedombone-config.1.gz Bestand weergeven


+ 18
- 601
src/freedombone Bestand weergeven

@@ -397,7 +397,7 @@ function show_help {
397 397
 function interactive_configuration_remote_backups {
398 398
   if [ ! -f /usr/local/bin/freedombone-remote ]; then
399 399
       if [ ! -f /usr/bin/freedombone-remote ]; then
400
-          echo 'The command /usr/bin/freedombone-remote was not found'
400
+          echo 'The command freedombone-remote was not found'
401 401
           exit 87354
402 402
       fi
403 403
   fi
@@ -465,608 +465,25 @@ function save_configuration_file {
465 465
 }
466 466
 
467 467
 function interactive_configuration {
468
-  # create a temporary copy of the configuration file
469
-  # which can be used to pre-populate selections
470
-  if [ -f $CONFIGURATION_FILE ]; then
471
-      cp $CONFIGURATION_FILE temp.cfg
472
-  fi
473
-
474
-  dialog --title "Freedombone" --msgbox "Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE" 15 50
475
-
476
-  data=$(tempfile 2>/dev/null)
477
-  trap "rm -f $data" 0 1 2 5 15
478
-  dialog --backtitle "Freedombone Configuration" \
479
-      --radiolist "Type of Installation:" 15 40 8 \
480
-      1 Full on \
481
-      2 Writer off \
482
-      3 Cloud off \
483
-      4 Chat off \
484
-      5 Mailbox off \
485
-      6 Non-Mailbox off \
486
-      7 Social off \
487
-      8 Media off 2> $data
488
-  sel=$?
489
-  case $sel in
490
-      1) exit 0;;
491
-      255) exit 0;;
492
-  esac
493
-  case $(cat $data) in
494
-      1) SYSTEM_TYPE=$VARIANT_FULL;;
495
-      2) SYSTEM_TYPE=$VARIANT_WRITER;;
496
-      3) SYSTEM_TYPE=$VARIANT_CLOUD;;
497
-      4) SYSTEM_TYPE=$VARIANT_CHAT;;
498
-      5) SYSTEM_TYPE=$VARIANT_MAILBOX;;
499
-      6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;;
500
-      7) SYSTEM_TYPE=$VARIANT_SOCIAL;;
501
-      8) SYSTEM_TYPE=$VARIANT_MEDIA;;
502
-  esac
503
-  save_configuration_file
504
-
505
-  data=$(tempfile 2>/dev/null)
506
-  trap "rm -f $data" 0 1 2 5 15
507
-  dialog --title "Select the user account to install as" \
508
-      --backtitle "Freedombone Configuration" \
509
-      --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
510
-  sel=$?
511
-  case $sel in
512
-      0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
513
-      1) exit 0;;
514
-      255) exit 0;;
515
-  esac
516
-  if [ ! $MY_USERNAME ]; then
517
-      echo 'No user account was selected'
518
-      exit 0
519
-  fi
520
-  if [ ! -d /home/$MY_USERNAME ]; then
521
-      echo "The directory /home/$MY_USERNAME does not exist"
522
-      exit 6437
523
-  fi
524
-  save_configuration_file
525
-
526
-  if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
527
-      dialog --title "Install Target" \
528
-          --backtitle "Freedombone Configuration" \
529
-          --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
530
-  else
531
-      dialog --title "Install Target" \
532
-          --backtitle "Freedombone Configuration" \
533
-          --defaultno \
534
-          --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
535
-  fi
536
-  sel=$?
537
-  case $sel in
538
-      0) INSTALLING_ON_BBB="yes";;
539
-      1) INSTALLING_ON_BBB="no";;
540
-      255) exit 0;;
541
-  esac
542
-  save_configuration_file
543
-
544
-  data=$(tempfile 2>/dev/null)
545
-  trap "rm -f $data" 0 1 2 5 15
546
-  dialog --backtitle "Freedombone Configuration" \
547
-      --radiolist "Where to download Debian packages from:" 25 45 49 \
548
-      1 "Australia" off \
549
-      2 "Austria" off \
550
-      3 "Belarus" off \
551
-      4 "Belgium" off \
552
-      5 "Bosnia and Herzegovina" off \
553
-      6 "Brazil" off \
554
-      7 "Bulgaria" off \
555
-      8 "Canada" off \
556
-      9 "Chile" off \
557
-      10 "China" off \
558
-      11 "Croatia" off \
559
-      12 "Czech Republic" off \
560
-      13 "Denmark" off \
561
-      14 "El Salvador" off \
562
-      15 "Estonia" off \
563
-      16 "Finland" off \
564
-      17 "France 1" off \
565
-      18 "France 2" off \
566
-      19 "Germany 1" off \
567
-      20 "Germany 2" off \
568
-      21 "Greece" off \
569
-      22 "Hungary" off \
570
-      23 "Iceland" off \
571
-      24 "Iran" off \
572
-      25 "Ireland" off \
573
-      26 "Italy" off \
574
-      27 "Japan" off \
575
-      28 "Korea" off \
576
-      29 "Lithuania" off \
577
-      30 "Mexico" off \
578
-      31 "Netherlands" off \
579
-      32 "New Caledonia" off \
580
-      33 "New Zealand" off \
581
-      34 "Norway" off \
582
-      35 "Poland" off \
583
-      36 "Portugal" off \
584
-      37 "Romania" off \
585
-      38 "Russia" off \
586
-      39 "Slovakia" off \
587
-      40 "Slovenia" off \
588
-      41 "Spain" off \
589
-      42 "Sweden" off \
590
-      43 "Switzerland" off \
591
-      44 "Taiwan" off \
592
-      45 "Thailand" off \
593
-      46 "Turkey" off \
594
-      47 "Ukraine" off \
595
-      48 "United Kingdom" off \
596
-      49 "United States" on 2> $data
597
-  sel=$?
598
-  case $sel in
599
-      1) exit 0;;
600
-      255) exit 0;;
601
-  esac
602
-  case $(cat $data) in
603
-      1) DEBIAN_REPO='ftp.au.debian.org';;
604
-      2) DEBIAN_REPO='ftp.at.debian.org';;
605
-      3) DEBIAN_REPO='ftp.by.debian.org';;
606
-      4) DEBIAN_REPO='ftp.be.debian.org';;
607
-      5) DEBIAN_REPO='ftp.ba.debian.org';;
608
-      6) DEBIAN_REPO='ftp.br.debian.org';;
609
-      7) DEBIAN_REPO='ftp.bg.debian.org';;
610
-      8) DEBIAN_REPO='ftp.ca.debian.org';;
611
-      9) DEBIAN_REPO='ftp.cl.debian.org';;
612
-      10) DEBIAN_REPO='ftp.cn.debian.org';;
613
-      11) DEBIAN_REPO='ftp.hr.debian.org';;
614
-      12) DEBIAN_REPO='ftp.cz.debian.org';;
615
-      13) DEBIAN_REPO='ftp.dk.debian.org';;
616
-      14) DEBIAN_REPO='ftp.sv.debian.org';;
617
-      15) DEBIAN_REPO='ftp.ee.debian.org';;
618
-      16) DEBIAN_REPO='ftp.fi.debian.org';;
619
-      17) DEBIAN_REPO='ftp2.fr.debian.org';;
620
-      18) DEBIAN_REPO='ftp.fr.debian.org';;
621
-      19) DEBIAN_REPO='ftp2.de.debian.org';;
622
-      20) DEBIAN_REPO='ftp.de.debian.org';;
623
-      21) DEBIAN_REPO='ftp.gr.debian.org';;
624
-      22) DEBIAN_REPO='ftp.hu.debian.org';;
625
-      23) DEBIAN_REPO='ftp.is.debian.org';;
626
-      24) DEBIAN_REPO='ftp.ir.debian.org';;
627
-      25) DEBIAN_REPO='ftp.ie.debian.org';;
628
-      26) DEBIAN_REPO='ftp.it.debian.org';;
629
-      27) DEBIAN_REPO='ftp.jp.debian.org';;
630
-      28) DEBIAN_REPO='ftp.kr.debian.org';;
631
-      29) DEBIAN_REPO='ftp.lt.debian.org';;
632
-      30) DEBIAN_REPO='ftp.mx.debian.org';;
633
-      31) DEBIAN_REPO='ftp.nl.debian.org';;
634
-      32) DEBIAN_REPO='ftp.nc.debian.org';;
635
-      33) DEBIAN_REPO='ftp.nz.debian.org';;
636
-      34) DEBIAN_REPO='ftp.no.debian.org';;
637
-      35) DEBIAN_REPO='ftp.pl.debian.org';;
638
-      36) DEBIAN_REPO='ftp.pt.debian.org';;
639
-      37) DEBIAN_REPO='ftp.ro.debian.org';;
640
-      38) DEBIAN_REPO='ftp.ru.debian.org';;
641
-      39) DEBIAN_REPO='ftp.sk.debian.org';;
642
-      40) DEBIAN_REPO='ftp.si.debian.org';;
643
-      41) DEBIAN_REPO='ftp.es.debian.org';;
644
-      42) DEBIAN_REPO='ftp.se.debian.org';;
645
-      43) DEBIAN_REPO='ftp.ch.debian.org';;
646
-      44) DEBIAN_REPO='ftp.tw.debian.org';;
647
-      45) DEBIAN_REPO='ftp.th.debian.org';;
648
-      46) DEBIAN_REPO='ftp.tr.debian.org';;
649
-      47) DEBIAN_REPO='ftp.ua.debian.org';;
650
-      48) DEBIAN_REPO='ftp.uk.debian.org';;
651
-      49) DEBIAN_REPO='ftp.us.debian.org';;
652
-      255) exit 0;;
653
-  esac
654
-  save_configuration_file
655
-
656
-  data=$(tempfile 2>/dev/null)
657
-  trap "rm -f $data" 0 1 2 5 15
658
-  dialog --backtitle "Freedombone Configuration" \
659
-      --radiolist "Pick a domain name service (DNS):" 25 50 16 \
660
-      1 "Digital Courage" on \
661
-      2 "German Privacy Foundation 1" off \
662
-      3 "German Privacy Foundation 2" off \
663
-      4 "Chaos Computer Club" off \
664
-      5 "ClaraNet" off \
665
-      6 "OpenNIC 1" off \
666
-      7 "OpenNIC 2" off \
667
-      8 "OpenNIC 3" off \
668
-      9 "OpenNIC 4" off \
669
-      10 "OpenNIC 5" off \
670
-      11 "OpenNIC 6" off \
671
-      12 "OpenNIC 7" off \
672
-      13 "PowerNS" off \
673
-      14 "ValiDOM" off \
674
-      15 "Freie Unzensierte" off \
675
-      16 "Google" off 2> $data
676
-  sel=$?
677
-  case $sel in
678
-      1) exit 0;;
679
-      255) exit 0;;
680
-  esac
681
-  case $(cat $data) in
682
-      1) NAMESERVER1='85.214.73.63'
683
-         NAMESERVER2='213.73.91.35'
684
-         ;;
685
-      2) NAMESERVER1='87.118.100.175'
686
-         NAMESERVER2='94.75.228.29'
687
-         ;;
688
-      3) NAMESERVER1='85.25.251.254'
689
-         NAMESERVER2='2.141.58.13'
690
-         ;;
691
-      4) NAMESERVER1='213.73.91.35'
692
-         NAMESERVER2='85.214.73.63'
693
-         ;;
694
-      5) NAMESERVER1='212.82.225.7'
695
-         NAMESERVER2='212.82.226.212'
696
-         ;;
697
-      6) NAMESERVER1='58.6.115.42'
698
-         NAMESERVER2='58.6.115.43'
699
-         ;;
700
-      7) NAMESERVER1='119.31.230.42'
701
-         NAMESERVER2='200.252.98.162'
702
-         ;;
703
-      8) NAMESERVER1='217.79.186.148'
704
-         NAMESERVER2='81.89.98.6'
705
-         ;;
706
-      9) NAMESERVER1='78.159.101.37'
707
-         NAMESERVER2='203.167.220.153'
708
-         ;;
709
-      10) NAMESERVER1='82.229.244.191'
710
-          NAMESERVER2='82.229.244.191'
711
-          ;;
712
-      11) NAMESERVER1='216.87.84.211'
713
-          NAMESERVER2='66.244.95.20'
714
-          ;;
715
-      12) NAMESERVER1='207.192.69.155'
716
-          NAMESERVER2='72.14.189.120'
717
-          ;;
718
-      13) NAMESERVER1='194.145.226.26'
719
-          NAMESERVER2='77.220.232.44'
720
-          ;;
721
-      14) NAMESERVER1='78.46.89.147'
722
-          NAMESERVER2='88.198.75.145'
723
-          ;;
724
-      15) NAMESERVER1='85.25.149.144'
725
-          NAMESERVER2='87.106.37.196'
726
-          ;;
727
-      16) NAMESERVER1='8.8.8.8'
728
-          NAMESERVER2='4.4.4.4'
729
-          ;;
730
-      255) exit 0;;
731
-  esac
732
-  save_configuration_file
733
-
734
-  data=$(tempfile 2>/dev/null)
735
-  trap "rm -f $data" 0 1 2 5 15
736
-  dialog --backtitle "Freedombone Configuration" \
737
-      --radiolist "Choose Dynamic DNS provider:" 15 40 14 \
738
-      1 dyndns off \
739
-      2 freedns on \
740
-      3 zoneedit off \
741
-      4 no-ip off \
742
-      5 easydns off \
743
-      6 tzo off \
744
-      7 3322 off \
745
-      8 dnsomatic off \
746
-      9 tunnelbroker off \
747
-      10 dns.he.net off \
748
-      11 dynsip off \
749
-      12 sitelutions off \
750
-      13 dnsexit off \
751
-      14 changeip off 2> $data
752
-  sel=$?
753
-  case $sel in
754
-      1) exit 0;;
755
-      255) exit 0;;
756
-  esac
757
-  case $(cat $data) in
758
-      1) DDNS_PROVIDER="default@dyndns.org";;
759
-      2) DDNS_PROVIDER="default@freedns.afraid.org";;
760
-      3) DDNS_PROVIDER="default@zoneedit.com";;
761
-      4) DDNS_PROVIDER="default@no-ip.com";;
762
-      5) DDNS_PROVIDER="default@easydns.com";;
763
-      6) DDNS_PROVIDER="default@tzo.com";;
764
-      7) DDNS_PROVIDER="dyndns@3322.org";;
765
-      8) DDNS_PROVIDER="default@dnsomatic.com";;
766
-      9) DDNS_PROVIDER="ipv6tb@he.net";;
767
-      10) DDNS_PROVIDER="dyndns@he.net";;
768
-      11) DDNS_PROVIDER="default@dynsip.org";;
769
-      12) DDNS_PROVIDER="default@sitelutions.com";;
770
-      13) DDNS_PROVIDER="default@dnsexit.com";;
771
-      14) DDNS_PROVIDER="default@changeip.com";;
772
-      255) exit 0;;
773
-  esac
774
-  save_configuration_file
775
-
776
-  while [ ! $DDNS_USERNAME ]
777
-  do
778
-      data=$(tempfile 2>/dev/null)
779
-      trap "rm -f $data" 0 1 2 5 15
780
-      dialog --backtitle "Freedombone Configuration" \
781
-          --inputbox "Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
782
-      sel=$?
783
-      case $sel in
784
-          0) DDNS_USERNAME=$(cat $data);;
785
-          1) exit 0;;
786
-          255) exit 0;;
787
-      esac
788
-  done
789
-  save_configuration_file
790
-
791
-  while [ ! $DDNS_PASSWORD ]
792
-  do
793
-      data=$(tempfile 2>/dev/null)
794
-      trap "rm -f $data" 0 1 2 5 15
795
-      dialog --backtitle "Freedombone Configuration" \
796
-          --clear \
797
-          --insecure \
798
-          --passwordbox "Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
799
-      sel=$?
800
-      case $sel in
801
-          0) DDNS_PASSWORD=$(cat $data);;
802
-          1) exit 0;;
803
-          255) exit 0;;
804
-      esac
805
-      if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
806
-          dialog --title "Password quality check" --msgbox "The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40
807
-          DDNS_PASSWORD=""
468
+  if [ ! -f /usr/local/bin/freedombone-config ]; then
469
+      if [ ! -f /usr/bin/freedombone-config ]; then
470
+          echo 'The command freedombone-config was not found'
471
+          exit 63935
808 472
       fi
809
-  done
810
-  save_configuration_file
811
-
812
-  while [ ! $MY_NAME ]
813
-  do
814
-      data=$(tempfile 2>/dev/null)
815
-      trap "rm -f $data" 0 1 2 5 15
816
-      dialog --backtitle "Freedombone Configuration" \
817
-          --inputbox "Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
818
-      sel=$?
819
-      case $sel in
820
-          0) MY_NAME=$(cat $data);;
821
-          1) exit 0;;
822
-          255) exit 0;;
823
-      esac
824
-  done
825
-  save_configuration_file
826
-
827
-  data=$(tempfile 2>/dev/null)
828
-  trap "rm -f $data" 0 1 2 5 15
829
-  dialog --backtitle "Freedombone Configuration" \
830
-      --title "Local Network Configuration" \
831
-      --form "\nPlease enter the IP addresses:" 11 55 3 \
832
-      "This system:" 1 1 "$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 1 16 16 15 \
833
-      "Internet router:" 2 1 "$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 2 16 16 15 \
834
-      2> $data
835
-  sel=$?
836
-  case $sel in
837
-      1) exit 0;;
838
-      255) exit 0;;
839
-  esac
840
-  LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
841
-  ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
842
-  save_configuration_file
843
-
844
-  data=$(tempfile 2>/dev/null)
845
-  trap "rm -f $data" 0 1 2 5 15
846
-  if [[ $(grep 'ENABLE_CJDNS' temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
847
-      dialog --title "Mesh Networking" \
848
-          --backtitle "Freedombone Configuration" \
849
-          --yesno "\nDo you want to enable CJDNS?" 7 60
850
-  else
851
-      dialog --title "Mesh Networking" \
852
-          --backtitle "Freedombone Configuration" \
853
-          --defaultno \
854
-          --yesno "\nDo you want to enable CJDNS?" 7 60
855
-  fi
856
-  sel=$?
857
-  case $sel in
858
-      0) ENABLE_CJDNS="yes";;
859
-      1) ENABLE_CJDNS="no";;
860
-      255) exit 0;;
861
-  esac
862
-  save_configuration_file
863
-
864
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
865
-      while [ ! $WIKI_DOMAIN_NAME ]
866
-      do
867
-          data=$(tempfile 2>/dev/null)
868
-          trap "rm -f $data" 0 1 2 5 15
869
-          dialog --backtitle "Freedombone Configuration" \
870
-                 --title "Wiki Configuration" \
871
-                 --form "\nPlease enter your wiki details:" 11 55 3 \
872
-                 "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
873
-                 "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
874
-                 2> $data
875
-          sel=$?
876
-          case $sel in
877
-              1) exit 0;;
878
-              255) exit 0;;
879
-          esac
880
-          WIKI_TITLE=$(cat $data | sed -n 1p)
881
-          WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
882
-          if [ $WIKI_DOMAIN_NAME ]; then
883
-              TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
884
-              validate_domain_name
885
-              if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
886
-                  WIKI_DOMAIN_NAME=
887
-                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
888
-              else
889
-                  if [ ! $DOMAIN_NAME ]; then
890
-                      DOMAIN_NAME=$WIKI_DOMAIN_NAME
891
-                  fi
892
-              fi
893
-          fi
894
-      done
895
-      save_configuration_file
896
-  fi
897
-
898
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
899
-      while [ ! $FULLBLOG_DOMAIN_NAME ]
900
-      do
901
-          data=$(tempfile 2>/dev/null)
902
-          trap "rm -f $data" 0 1 2 5 15
903
-          dialog --backtitle "Freedombone Configuration" \
904
-                 --title "Blog Configuration" \
905
-                 --form "\nPlease enter your blog details:" 11 55 3 \
906
-                 "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
907
-                 "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
908
-                 2> $data
909
-          sel=$?
910
-          case $sel in
911
-              1) exit 0;;
912
-              255) exit 0;;
913
-          esac
914
-          MY_BLOG_TITLE=$(cat $data | sed -n 1p)
915
-          FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p)
916
-          if [ $FULLBLOG_DOMAIN_NAME ]; then
917
-              if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
918
-                  FULLBLOG_DOMAIN_NAME=""
919
-              fi
920
-              TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
921
-              validate_domain_name
922
-              if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
923
-                  FULLBLOG_DOMAIN_NAME=
924
-                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
925
-              else
926
-                  if [ ! $DOMAIN_NAME ]; then
927
-                      DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
928
-                  fi
929
-              fi
930
-          fi
931
-      done
932
-      save_configuration_file
933
-  fi
934
-
935
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
936
-      while [ ! $OWNCLOUD_DOMAIN_NAME ]
937
-      do
938
-          data=$(tempfile 2>/dev/null)
939
-          trap "rm -f $data" 0 1 2 5 15
940
-          dialog --backtitle "Freedombone Configuration" \
941
-                 --title "Owncloud Configuration" \
942
-                 --form "\nPlease enter your Owncloud details:" 11 55 3 \
943
-                 "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
944
-                 2> $data
945
-          sel=$?
946
-          case $sel in
947
-              1) exit 0;;
948
-              255) exit 0;;
949
-          esac
950
-          OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
951
-          if [ $OWNCLOUD_DOMAIN_NAME ]; then
952
-              TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
953
-              validate_domain_name
954
-              if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
955
-                  OWNCLOUD_DOMAIN_NAME=
956
-                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
957
-              else
958
-                  if [ ! $DOMAIN_NAME ]; then
959
-                      DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
960
-                  fi
961
-              fi
962
-          fi
963
-      done
964
-      save_configuration_file
965
-  fi
966
-
967
-  if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
968
-      while [ ! $REDMATRIX_DOMAIN_NAME ]
969
-      do
970
-          data=$(tempfile 2>/dev/null)
971
-          trap "rm -f $data" 0 1 2 5 15
972
-          dialog --backtitle "Freedombone Configuration" \
973
-                 --title "RedMatrix Configuration" \
974
-                 --form "\nPlease enter your RedMatrix details:" 11 55 3 \
975
-                 "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
976
-                 2> $data
977
-          sel=$?
978
-          case $sel in
979
-              1) exit 0;;
980
-              255) exit 0;;
981
-          esac
982
-          REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
983
-          if [ $REDMATRIX_DOMAIN_NAME ]; then
984
-              TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
985
-              validate_domain_name
986
-              if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
987
-                  REDMATRIX_DOMAIN_NAME=
988
-                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
989
-              else
990
-                  if [ ! $DOMAIN_NAME ]; then
991
-                      DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
992
-                  fi
993
-              fi
994
-          fi
995
-      done
996
-      save_configuration_file
997
-  fi
998
-
999
-  if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
1000
-      while [ ! $MICROBLOG_DOMAIN_NAME ]
1001
-      do
1002
-          data=$(tempfile 2>/dev/null)
1003
-          trap "rm -f $data" 0 1 2 5 15
1004
-          dialog --backtitle "Freedombone Configuration" \
1005
-                 --title "Microblog Configuration" \
1006
-                 --form "\nPlease enter your Microblog details:" 11 55 3 \
1007
-                 "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
1008
-                 2> $data
1009
-          sel=$?
1010
-          case $sel in
1011
-              1) exit 0;;
1012
-              255) exit 0;;
1013
-          esac
1014
-          MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
1015
-          if [ $MICROBLOG_DOMAIN_NAME ]; then
1016
-              if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
1017
-                  MICROBLOG_DOMAIN_NAME=""
1018
-              fi
1019
-              TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
1020
-              validate_domain_name
1021
-              if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
1022
-                  MICROBLOG_DOMAIN_NAME=
1023
-                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
1024
-              else
1025
-                  if [ ! $DOMAIN_NAME ]; then
1026
-                      DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
1027
-                  fi
1028
-              fi
1029
-          fi
1030
-      done
1031
-      save_configuration_file
1032 473
   fi
1033 474
 
1034
-  if [ ! $DOMAIN_NAME ]; then
1035
-      while [ ! $DOMAIN_NAME ]
1036
-      do
1037
-          data=$(tempfile 2>/dev/null)
1038
-          trap "rm -f $data" 0 1 2 5 15
1039
-          dialog --backtitle "Freedombone Configuration" \
1040
-              --inputbox "Domain name" 10 30 "$(grep 'DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
1041
-          sel=$?
1042
-          case $sel in
1043
-              0) DOMAIN_NAME=$(cat $data);;
1044
-              1) exit 0;;
1045
-              255) exit 0;;
1046
-          esac
1047
-      done
1048
-      save_configuration_file
1049
-  fi
1050
-
1051
-  while [ ! $MY_EMAIL_ADDRESS ]
1052
-  do
1053
-      data=$(tempfile 2>/dev/null)
1054
-      trap "rm -f $data" 0 1 2 5 15
1055
-      dialog --backtitle "Freedombone Configuration" \
1056
-          --inputbox "Your email address" 10 30 "$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 2> $data
1057
-      sel=$?
1058
-      case $sel in
1059
-          0) MY_EMAIL_ADDRESS=$(cat $data);;
1060
-          1) exit 0;;
1061
-          255) exit 0;;
1062
-      esac
1063
-  done
1064
-
1065
-  save_configuration_file
1066
-
1067
-  # delete the temporary configuration file
1068
-  if [ -f temp.cfg ]; then
1069
-      shred -zu temp.cfg
475
+  freedombone-config \
476
+      -u $MY_USERNAME \
477
+      -f $CONFIGURATION_FILE \
478
+      -w $FREEDOMBONE_WEBSITE \
479
+      -b $FREEDOMBONE_BITMESSAGE \
480
+      -m $MINIMUM_PASSWORD_LENGTH
481
+  if [ ! "$?" = "0" ]; then
482
+      echo 'Command failed:'
483
+      echo ''
484
+      echo "  freedombone-config -u $MY_USERNAME -f $CONFIGURATION_FILE -w $FREEDOMBONE_WEBSITE -b $FREEDOMBONE_BITMESSAGE -m $MINIMUM_PASSWORD_LENGTH"
485
+      echo ''
486
+      exit 73594
1070 487
   fi
1071 488
 
1072 489
   FRIENDS_SERVERS_LIST=/home/$MY_USERNAME/backup.list
@@ -1082,7 +499,7 @@ function interactive_configuration {
1082 499
 }
1083 500
 
1084 501
 if [[ $1 == "menuconfig" ]]; then
1085
-    interactive_configuration
502
+  interactive_configuration
1086 503
 else
1087 504
 
1088 505
 # Oddly it appears that command line parsing cannot be done inside of a function

+ 812
- 0
src/freedombone-config Bestand weergeven

@@ -0,0 +1,812 @@
1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# Interactively creates a configuration file for use with the main
12
+# freedombone command
13
+#
14
+# License
15
+# =======
16
+#
17
+# Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
18
+#
19
+# This program is free software: you can redistribute it and/or modify
20
+# it under the terms of the GNU General Public License as published by
21
+# the Free Software Foundation, either version 3 of the License, or
22
+# (at your option) any later version.
23
+#
24
+# This program is distributed in the hope that it will be useful,
25
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
26
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
+# GNU General Public License for more details.
28
+#
29
+# You should have received a copy of the GNU General Public License
30
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
31
+
32
+NO_OF_ARGS=$#
33
+
34
+# Web site
35
+FREEDOMBONE_WEBSITE="http://freedombone.uk.to"
36
+
37
+# Contact details
38
+FREEDOMBONE_BITMESSAGE="BM-2cWuhmBvVdfrHhLoZTdspCkKeiTorUesSL"
39
+
40
+# Minimum number of characters in a password
41
+MINIMUM_PASSWORD_LENGTH=10
42
+
43
+# Different system variants which may be specified within
44
+# the SYSTEM_TYPE option
45
+VARIANT_FULL="full"
46
+VARIANT_WRITER="writer"
47
+VARIANT_CLOUD="cloud"
48
+VARIANT_CHAT="chat"
49
+VARIANT_MAILBOX="mailbox"
50
+VARIANT_NONMAILBOX="nonmailbox"
51
+VARIANT_SOCIAL="social"
52
+VARIANT_MEDIA="media"
53
+VARIANT_TOR_DONGLE="tordongle"
54
+
55
+MY_USERNAME=
56
+DOMAIN_NAME=
57
+MY_EMAIL_ADDRESS=
58
+SYSTEM_TYPE=
59
+INSTALLING_ON_BBB=
60
+DDNS_PROVIDER=
61
+DDNS_USERNAME=
62
+DDNS_PASSWORD=
63
+MY_NAME=
64
+LOCAL_NETWORK_STATIC_IP_ADDRESS=
65
+ROUTER_IP_ADDRESS=
66
+ENABLE_CJDNS=
67
+DEBIAN_REPO=
68
+NAMESERVER1=
69
+NAMESERVER2=
70
+WIKI_TITLE=
71
+WIKI_DOMAIN_NAME=
72
+MY_BLOG_TITLE=
73
+FULLBLOG_DOMAIN_NAME=
74
+OWNCLOUD_DOMAIN_NAME=
75
+REDMATRIX_DOMAIN_NAME=
76
+MICROBLOG_DOMAIN_NAME=
77
+
78
+CONFIGURATION_FILE=
79
+
80
+function show_help {
81
+  echo ''
82
+  echo 'freedombone-config -f [config filename] -m [min password length]'
83
+  echo ''
84
+  echo 'Creates an inventory of remote backup locations'
85
+  echo ''
86
+  echo ''
87
+  echo '  -h --help             Show help'
88
+  echo '  -f --filename         Configuration file (usually freedombone.cfg)'
89
+  echo '  -m --min              Minimum password length (characters)'
90
+  echo '  -w --www              Freedombone web site'
91
+  echo '  -b --bm               Freedombone support Bitmessage address'
92
+  echo ''
93
+  exit 0
94
+}
95
+
96
+# Get the commandline options
97
+while [[ $# > 1 ]]
98
+do
99
+key="$1"
100
+
101
+case $key in
102
+    -h|--help)
103
+    show_help
104
+    ;;
105
+    # Configuration filename
106
+    -f|--filename)
107
+    shift
108
+    CONFIGURATION_FILE="$1"
109
+    ;;
110
+    # Minimum password length
111
+    -m|--min)
112
+    shift
113
+    MINIMUM_PASSWORD_LENGTH="$1"
114
+    ;;
115
+    # Freedombone website
116
+    -w|--www)
117
+    shift
118
+    FREEDOMBONE_WEBSITE="$1"
119
+    ;;
120
+    # Bitmessage address for support
121
+    -b|--bm)
122
+    shift
123
+    FREEDOMBONE_BITMESSAGE="$1"
124
+    ;;
125
+    *)
126
+    # unknown option
127
+    ;;
128
+esac
129
+shift
130
+done
131
+
132
+function save_configuration_file {
133
+  if [ ! $CONFIGURATION_FILE ]; then
134
+      CONFIGURATION_FILE='freedombone.cfg'
135
+  fi
136
+
137
+  echo "MY_USERNAME=$MY_USERNAME" > $CONFIGURATION_FILE
138
+  echo "DOMAIN_NAME=$DOMAIN_NAME" >> $CONFIGURATION_FILE
139
+  echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
140
+  echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
141
+  echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
142
+  echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
143
+  echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
144
+  # does this need to be saved?
145
+  echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
146
+  echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
147
+  echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
148
+  echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
149
+  echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
150
+  echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
151
+  echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
152
+  echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
153
+  if [ $WIKI_TITLE ]; then
154
+      echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
155
+  fi
156
+  if [ $WIKI_DOMAIN_NAME ]; then
157
+      echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
158
+  fi
159
+  if [ $MY_BLOG_TITLE ]; then
160
+      echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE
161
+  fi
162
+  if [ $FULLBLOG_DOMAIN_NAME ]; then
163
+      echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
164
+  fi
165
+  if [ $OWNCLOUD_DOMAIN_NAME ]; then
166
+      echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
167
+  fi
168
+  if [ $REDMATRIX_DOMAIN_NAME ]; then
169
+      echo "REDMATRIX_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME" >> $CONFIGURATION_FILE
170
+  fi
171
+  if [ $MICROBLOG_DOMAIN_NAME ]; then
172
+      echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
173
+  fi
174
+}
175
+
176
+# test a domain name to see if it's valid
177
+function validate_domain_name {
178
+  # count the number of dots in the domain name
179
+  dots=${TEST_DOMAIN_NAME//[^.]}
180
+  no_of_dots=${#dots}
181
+  if (( $no_of_dots > 2 )); then
182
+      TEST_DOMAIN_NAME="The domain $TEST_DOMAIN_NAME has too many subdomains. It should be of the type x.y.z or y.z"
183
+  fi
184
+  if (( $no_of_dots == 0 )); then
185
+      TEST_DOMAIN_NAME="The domain $TEST_DOMAIN_NAME has no top level domain. It should be of the type x.y.z or y.z"
186
+  fi
187
+}
188
+
189
+function interactive_configuration {
190
+  # create a temporary copy of the configuration file
191
+  # which can be used to pre-populate selections
192
+  if [ -f $CONFIGURATION_FILE ]; then
193
+      cp $CONFIGURATION_FILE temp.cfg
194
+  fi
195
+
196
+  dialog --title "Freedombone" --msgbox "Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE" 15 50
197
+
198
+  data=$(tempfile 2>/dev/null)
199
+  trap "rm -f $data" 0 1 2 5 15
200
+  dialog --backtitle "Freedombone Configuration" \
201
+      --radiolist "Type of Installation:" 15 40 8 \
202
+      1 Full on \
203
+      2 Writer off \
204
+      3 Cloud off \
205
+      4 Chat off \
206
+      5 Mailbox off \
207
+      6 Non-Mailbox off \
208
+      7 Social off \
209
+      8 Media off 2> $data
210
+  sel=$?
211
+  case $sel in
212
+      1) exit 0;;
213
+      255) exit 0;;
214
+  esac
215
+  case $(cat $data) in
216
+      1) SYSTEM_TYPE=$VARIANT_FULL;;
217
+      2) SYSTEM_TYPE=$VARIANT_WRITER;;
218
+      3) SYSTEM_TYPE=$VARIANT_CLOUD;;
219
+      4) SYSTEM_TYPE=$VARIANT_CHAT;;
220
+      5) SYSTEM_TYPE=$VARIANT_MAILBOX;;
221
+      6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;;
222
+      7) SYSTEM_TYPE=$VARIANT_SOCIAL;;
223
+      8) SYSTEM_TYPE=$VARIANT_MEDIA;;
224
+  esac
225
+  save_configuration_file
226
+
227
+  data=$(tempfile 2>/dev/null)
228
+  trap "rm -f $data" 0 1 2 5 15
229
+  dialog --title "Select the user account to install as" \
230
+      --backtitle "Freedombone Configuration" \
231
+      --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
232
+  sel=$?
233
+  case $sel in
234
+      0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
235
+      1) exit 0;;
236
+      255) exit 0;;
237
+  esac
238
+  if [ ! $MY_USERNAME ]; then
239
+      echo 'No user account was selected'
240
+      exit 64398
241
+  fi
242
+  if [[ $MY_USERNAME == '-f' ]]; then
243
+      echo 'No user account was selected'
244
+      exit 8347
245
+  fi
246
+  if [ ! -d /home/$MY_USERNAME ]; then
247
+      echo "The directory /home/$MY_USERNAME does not exist"
248
+      exit 6437
249
+  fi
250
+  save_configuration_file
251
+
252
+  if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
253
+      dialog --title "Install Target" \
254
+          --backtitle "Freedombone Configuration" \
255
+          --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
256
+  else
257
+      dialog --title "Install Target" \
258
+          --backtitle "Freedombone Configuration" \
259
+          --defaultno \
260
+          --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
261
+  fi
262
+  sel=$?
263
+  case $sel in
264
+      0) INSTALLING_ON_BBB="yes";;
265
+      1) INSTALLING_ON_BBB="no";;
266
+      255) exit 0;;
267
+  esac
268
+  save_configuration_file
269
+
270
+  data=$(tempfile 2>/dev/null)
271
+  trap "rm -f $data" 0 1 2 5 15
272
+  dialog --backtitle "Freedombone Configuration" \
273
+      --radiolist "Where to download Debian packages from:" 25 45 49 \
274
+      1 "Australia" off \
275
+      2 "Austria" off \
276
+      3 "Belarus" off \
277
+      4 "Belgium" off \
278
+      5 "Bosnia and Herzegovina" off \
279
+      6 "Brazil" off \
280
+      7 "Bulgaria" off \
281
+      8 "Canada" off \
282
+      9 "Chile" off \
283
+      10 "China" off \
284
+      11 "Croatia" off \
285
+      12 "Czech Republic" off \
286
+      13 "Denmark" off \
287
+      14 "El Salvador" off \
288
+      15 "Estonia" off \
289
+      16 "Finland" off \
290
+      17 "France 1" off \
291
+      18 "France 2" off \
292
+      19 "Germany 1" off \
293
+      20 "Germany 2" off \
294
+      21 "Greece" off \
295
+      22 "Hungary" off \
296
+      23 "Iceland" off \
297
+      24 "Iran" off \
298
+      25 "Ireland" off \
299
+      26 "Italy" off \
300
+      27 "Japan" off \
301
+      28 "Korea" off \
302
+      29 "Lithuania" off \
303
+      30 "Mexico" off \
304
+      31 "Netherlands" off \
305
+      32 "New Caledonia" off \
306
+      33 "New Zealand" off \
307
+      34 "Norway" off \
308
+      35 "Poland" off \
309
+      36 "Portugal" off \
310
+      37 "Romania" off \
311
+      38 "Russia" off \
312
+      39 "Slovakia" off \
313
+      40 "Slovenia" off \
314
+      41 "Spain" off \
315
+      42 "Sweden" off \
316
+      43 "Switzerland" off \
317
+      44 "Taiwan" off \
318
+      45 "Thailand" off \
319
+      46 "Turkey" off \
320
+      47 "Ukraine" off \
321
+      48 "United Kingdom" off \
322
+      49 "United States" on 2> $data
323
+  sel=$?
324
+  case $sel in
325
+      1) exit 0;;
326
+      255) exit 0;;
327
+  esac
328
+  case $(cat $data) in
329
+      1) DEBIAN_REPO='ftp.au.debian.org';;
330
+      2) DEBIAN_REPO='ftp.at.debian.org';;
331
+      3) DEBIAN_REPO='ftp.by.debian.org';;
332
+      4) DEBIAN_REPO='ftp.be.debian.org';;
333
+      5) DEBIAN_REPO='ftp.ba.debian.org';;
334
+      6) DEBIAN_REPO='ftp.br.debian.org';;
335
+      7) DEBIAN_REPO='ftp.bg.debian.org';;
336
+      8) DEBIAN_REPO='ftp.ca.debian.org';;
337
+      9) DEBIAN_REPO='ftp.cl.debian.org';;
338
+      10) DEBIAN_REPO='ftp.cn.debian.org';;
339
+      11) DEBIAN_REPO='ftp.hr.debian.org';;
340
+      12) DEBIAN_REPO='ftp.cz.debian.org';;
341
+      13) DEBIAN_REPO='ftp.dk.debian.org';;
342
+      14) DEBIAN_REPO='ftp.sv.debian.org';;
343
+      15) DEBIAN_REPO='ftp.ee.debian.org';;
344
+      16) DEBIAN_REPO='ftp.fi.debian.org';;
345
+      17) DEBIAN_REPO='ftp2.fr.debian.org';;
346
+      18) DEBIAN_REPO='ftp.fr.debian.org';;
347
+      19) DEBIAN_REPO='ftp2.de.debian.org';;
348
+      20) DEBIAN_REPO='ftp.de.debian.org';;
349
+      21) DEBIAN_REPO='ftp.gr.debian.org';;
350
+      22) DEBIAN_REPO='ftp.hu.debian.org';;
351
+      23) DEBIAN_REPO='ftp.is.debian.org';;
352
+      24) DEBIAN_REPO='ftp.ir.debian.org';;
353
+      25) DEBIAN_REPO='ftp.ie.debian.org';;
354
+      26) DEBIAN_REPO='ftp.it.debian.org';;
355
+      27) DEBIAN_REPO='ftp.jp.debian.org';;
356
+      28) DEBIAN_REPO='ftp.kr.debian.org';;
357
+      29) DEBIAN_REPO='ftp.lt.debian.org';;
358
+      30) DEBIAN_REPO='ftp.mx.debian.org';;
359
+      31) DEBIAN_REPO='ftp.nl.debian.org';;
360
+      32) DEBIAN_REPO='ftp.nc.debian.org';;
361
+      33) DEBIAN_REPO='ftp.nz.debian.org';;
362
+      34) DEBIAN_REPO='ftp.no.debian.org';;
363
+      35) DEBIAN_REPO='ftp.pl.debian.org';;
364
+      36) DEBIAN_REPO='ftp.pt.debian.org';;
365
+      37) DEBIAN_REPO='ftp.ro.debian.org';;
366
+      38) DEBIAN_REPO='ftp.ru.debian.org';;
367
+      39) DEBIAN_REPO='ftp.sk.debian.org';;
368
+      40) DEBIAN_REPO='ftp.si.debian.org';;
369
+      41) DEBIAN_REPO='ftp.es.debian.org';;
370
+      42) DEBIAN_REPO='ftp.se.debian.org';;
371
+      43) DEBIAN_REPO='ftp.ch.debian.org';;
372
+      44) DEBIAN_REPO='ftp.tw.debian.org';;
373
+      45) DEBIAN_REPO='ftp.th.debian.org';;
374
+      46) DEBIAN_REPO='ftp.tr.debian.org';;
375
+      47) DEBIAN_REPO='ftp.ua.debian.org';;
376
+      48) DEBIAN_REPO='ftp.uk.debian.org';;
377
+      49) DEBIAN_REPO='ftp.us.debian.org';;
378
+      255) exit 0;;
379
+  esac
380
+  save_configuration_file
381
+
382
+  data=$(tempfile 2>/dev/null)
383
+  trap "rm -f $data" 0 1 2 5 15
384
+  dialog --backtitle "Freedombone Configuration" \
385
+      --radiolist "Pick a domain name service (DNS):" 25 50 16 \
386
+      1 "Digital Courage" on \
387
+      2 "German Privacy Foundation 1" off \
388
+      3 "German Privacy Foundation 2" off \
389
+      4 "Chaos Computer Club" off \
390
+      5 "ClaraNet" off \
391
+      6 "OpenNIC 1" off \
392
+      7 "OpenNIC 2" off \
393
+      8 "OpenNIC 3" off \
394
+      9 "OpenNIC 4" off \
395
+      10 "OpenNIC 5" off \
396
+      11 "OpenNIC 6" off \
397
+      12 "OpenNIC 7" off \
398
+      13 "PowerNS" off \
399
+      14 "ValiDOM" off \
400
+      15 "Freie Unzensierte" off \
401
+      16 "Google" off 2> $data
402
+  sel=$?
403
+  case $sel in
404
+      1) exit 0;;
405
+      255) exit 0;;
406
+  esac
407
+  case $(cat $data) in
408
+      1) NAMESERVER1='85.214.73.63'
409
+         NAMESERVER2='213.73.91.35'
410
+         ;;
411
+      2) NAMESERVER1='87.118.100.175'
412
+         NAMESERVER2='94.75.228.29'
413
+         ;;
414
+      3) NAMESERVER1='85.25.251.254'
415
+         NAMESERVER2='2.141.58.13'
416
+         ;;
417
+      4) NAMESERVER1='213.73.91.35'
418
+         NAMESERVER2='85.214.73.63'
419
+         ;;
420
+      5) NAMESERVER1='212.82.225.7'
421
+         NAMESERVER2='212.82.226.212'
422
+         ;;
423
+      6) NAMESERVER1='58.6.115.42'
424
+         NAMESERVER2='58.6.115.43'
425
+         ;;
426
+      7) NAMESERVER1='119.31.230.42'
427
+         NAMESERVER2='200.252.98.162'
428
+         ;;
429
+      8) NAMESERVER1='217.79.186.148'
430
+         NAMESERVER2='81.89.98.6'
431
+         ;;
432
+      9) NAMESERVER1='78.159.101.37'
433
+         NAMESERVER2='203.167.220.153'
434
+         ;;
435
+      10) NAMESERVER1='82.229.244.191'
436
+          NAMESERVER2='82.229.244.191'
437
+          ;;
438
+      11) NAMESERVER1='216.87.84.211'
439
+          NAMESERVER2='66.244.95.20'
440
+          ;;
441
+      12) NAMESERVER1='207.192.69.155'
442
+          NAMESERVER2='72.14.189.120'
443
+          ;;
444
+      13) NAMESERVER1='194.145.226.26'
445
+          NAMESERVER2='77.220.232.44'
446
+          ;;
447
+      14) NAMESERVER1='78.46.89.147'
448
+          NAMESERVER2='88.198.75.145'
449
+          ;;
450
+      15) NAMESERVER1='85.25.149.144'
451
+          NAMESERVER2='87.106.37.196'
452
+          ;;
453
+      16) NAMESERVER1='8.8.8.8'
454
+          NAMESERVER2='4.4.4.4'
455
+          ;;
456
+      255) exit 0;;
457
+  esac
458
+  save_configuration_file
459
+
460
+  data=$(tempfile 2>/dev/null)
461
+  trap "rm -f $data" 0 1 2 5 15
462
+  dialog --backtitle "Freedombone Configuration" \
463
+      --radiolist "Choose Dynamic DNS provider:" 15 40 14 \
464
+      1 dyndns off \
465
+      2 freedns on \
466
+      3 zoneedit off \
467
+      4 no-ip off \
468
+      5 easydns off \
469
+      6 tzo off \
470
+      7 3322 off \
471
+      8 dnsomatic off \
472
+      9 tunnelbroker off \
473
+      10 dns.he.net off \
474
+      11 dynsip off \
475
+      12 sitelutions off \
476
+      13 dnsexit off \
477
+      14 changeip off 2> $data
478
+  sel=$?
479
+  case $sel in
480
+      1) exit 0;;
481
+      255) exit 0;;
482
+  esac
483
+  case $(cat $data) in
484
+      1) DDNS_PROVIDER="default@dyndns.org";;
485
+      2) DDNS_PROVIDER="default@freedns.afraid.org";;
486
+      3) DDNS_PROVIDER="default@zoneedit.com";;
487
+      4) DDNS_PROVIDER="default@no-ip.com";;
488
+      5) DDNS_PROVIDER="default@easydns.com";;
489
+      6) DDNS_PROVIDER="default@tzo.com";;
490
+      7) DDNS_PROVIDER="dyndns@3322.org";;
491
+      8) DDNS_PROVIDER="default@dnsomatic.com";;
492
+      9) DDNS_PROVIDER="ipv6tb@he.net";;
493
+      10) DDNS_PROVIDER="dyndns@he.net";;
494
+      11) DDNS_PROVIDER="default@dynsip.org";;
495
+      12) DDNS_PROVIDER="default@sitelutions.com";;
496
+      13) DDNS_PROVIDER="default@dnsexit.com";;
497
+      14) DDNS_PROVIDER="default@changeip.com";;
498
+      255) exit 0;;
499
+  esac
500
+  save_configuration_file
501
+
502
+  while [ ! $DDNS_USERNAME ]
503
+  do
504
+      data=$(tempfile 2>/dev/null)
505
+      trap "rm -f $data" 0 1 2 5 15
506
+      dialog --backtitle "Freedombone Configuration" \
507
+          --inputbox "Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
508
+      sel=$?
509
+      case $sel in
510
+          0) DDNS_USERNAME=$(cat $data);;
511
+          1) exit 0;;
512
+          255) exit 0;;
513
+      esac
514
+  done
515
+  save_configuration_file
516
+
517
+  while [ ! $DDNS_PASSWORD ]
518
+  do
519
+      data=$(tempfile 2>/dev/null)
520
+      trap "rm -f $data" 0 1 2 5 15
521
+      dialog --backtitle "Freedombone Configuration" \
522
+          --clear \
523
+          --insecure \
524
+          --passwordbox "Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
525
+      sel=$?
526
+      case $sel in
527
+          0) DDNS_PASSWORD=$(cat $data);;
528
+          1) exit 0;;
529
+          255) exit 0;;
530
+      esac
531
+      if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
532
+          dialog --title "Password quality check" --msgbox "The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40
533
+          DDNS_PASSWORD=""
534
+      fi
535
+  done
536
+  save_configuration_file
537
+
538
+  while [ ! $MY_NAME ]
539
+  do
540
+      data=$(tempfile 2>/dev/null)
541
+      trap "rm -f $data" 0 1 2 5 15
542
+      dialog --backtitle "Freedombone Configuration" \
543
+          --inputbox "Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
544
+      sel=$?
545
+      case $sel in
546
+          0) MY_NAME=$(cat $data);;
547
+          1) exit 0;;
548
+          255) exit 0;;
549
+      esac
550
+  done
551
+  save_configuration_file
552
+
553
+  data=$(tempfile 2>/dev/null)
554
+  trap "rm -f $data" 0 1 2 5 15
555
+  dialog --backtitle "Freedombone Configuration" \
556
+      --title "Local Network Configuration" \
557
+      --form "\nPlease enter the IP addresses:" 11 55 3 \
558
+      "This system:" 1 1 "$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 1 16 16 15 \
559
+      "Internet router:" 2 1 "$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 2 16 16 15 \
560
+      2> $data
561
+  sel=$?
562
+  case $sel in
563
+      1) exit 0;;
564
+      255) exit 0;;
565
+  esac
566
+  LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
567
+  ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
568
+  save_configuration_file
569
+
570
+  data=$(tempfile 2>/dev/null)
571
+  trap "rm -f $data" 0 1 2 5 15
572
+  if [[ $(grep 'ENABLE_CJDNS' temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
573
+      dialog --title "Mesh Networking" \
574
+          --backtitle "Freedombone Configuration" \
575
+          --yesno "\nDo you want to enable CJDNS?" 7 60
576
+  else
577
+      dialog --title "Mesh Networking" \
578
+          --backtitle "Freedombone Configuration" \
579
+          --defaultno \
580
+          --yesno "\nDo you want to enable CJDNS?" 7 60
581
+  fi
582
+  sel=$?
583
+  case $sel in
584
+      0) ENABLE_CJDNS="yes";;
585
+      1) ENABLE_CJDNS="no";;
586
+      255) exit 0;;
587
+  esac
588
+  save_configuration_file
589
+
590
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
591
+      while [ ! $WIKI_DOMAIN_NAME ]
592
+      do
593
+          data=$(tempfile 2>/dev/null)
594
+          trap "rm -f $data" 0 1 2 5 15
595
+          dialog --backtitle "Freedombone Configuration" \
596
+                 --title "Wiki Configuration" \
597
+                 --form "\nPlease enter your wiki details:" 11 55 3 \
598
+                 "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
599
+                 "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
600
+                 2> $data
601
+          sel=$?
602
+          case $sel in
603
+              1) exit 0;;
604
+              255) exit 0;;
605
+          esac
606
+          WIKI_TITLE=$(cat $data | sed -n 1p)
607
+          WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
608
+          if [ $WIKI_DOMAIN_NAME ]; then
609
+              TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
610
+              validate_domain_name
611
+              if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
612
+                  WIKI_DOMAIN_NAME=
613
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
614
+              else
615
+                  if [ ! $DOMAIN_NAME ]; then
616
+                      DOMAIN_NAME=$WIKI_DOMAIN_NAME
617
+                  fi
618
+              fi
619
+          fi
620
+      done
621
+      save_configuration_file
622
+  fi
623
+
624
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
625
+      while [ ! $FULLBLOG_DOMAIN_NAME ]
626
+      do
627
+          data=$(tempfile 2>/dev/null)
628
+          trap "rm -f $data" 0 1 2 5 15
629
+          dialog --backtitle "Freedombone Configuration" \
630
+                 --title "Blog Configuration" \
631
+                 --form "\nPlease enter your blog details:" 11 55 3 \
632
+                 "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
633
+                 "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
634
+                 2> $data
635
+          sel=$?
636
+          case $sel in
637
+              1) exit 0;;
638
+              255) exit 0;;
639
+          esac
640
+          MY_BLOG_TITLE=$(cat $data | sed -n 1p)
641
+          FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p)
642
+          if [ $FULLBLOG_DOMAIN_NAME ]; then
643
+              if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
644
+                  FULLBLOG_DOMAIN_NAME=""
645
+              fi
646
+              TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
647
+              validate_domain_name
648
+              if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
649
+                  FULLBLOG_DOMAIN_NAME=
650
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
651
+              else
652
+                  if [ ! $DOMAIN_NAME ]; then
653
+                      DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
654
+                  fi
655
+              fi
656
+          fi
657
+      done
658
+      save_configuration_file
659
+  fi
660
+
661
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
662
+      while [ ! $OWNCLOUD_DOMAIN_NAME ]
663
+      do
664
+          data=$(tempfile 2>/dev/null)
665
+          trap "rm -f $data" 0 1 2 5 15
666
+          dialog --backtitle "Freedombone Configuration" \
667
+                 --title "Owncloud Configuration" \
668
+                 --form "\nPlease enter your Owncloud details:" 11 55 3 \
669
+                 "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
670
+                 2> $data
671
+          sel=$?
672
+          case $sel in
673
+              1) exit 0;;
674
+              255) exit 0;;
675
+          esac
676
+          OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
677
+          if [ $OWNCLOUD_DOMAIN_NAME ]; then
678
+              TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
679
+              validate_domain_name
680
+              if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
681
+                  OWNCLOUD_DOMAIN_NAME=
682
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
683
+              else
684
+                  if [ ! $DOMAIN_NAME ]; then
685
+                      DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
686
+                  fi
687
+              fi
688
+          fi
689
+      done
690
+      save_configuration_file
691
+  fi
692
+
693
+  if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
694
+      while [ ! $REDMATRIX_DOMAIN_NAME ]
695
+      do
696
+          data=$(tempfile 2>/dev/null)
697
+          trap "rm -f $data" 0 1 2 5 15
698
+          dialog --backtitle "Freedombone Configuration" \
699
+                 --title "RedMatrix Configuration" \
700
+                 --form "\nPlease enter your RedMatrix details:" 11 55 3 \
701
+                 "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
702
+                 2> $data
703
+          sel=$?
704
+          case $sel in
705
+              1) exit 0;;
706
+              255) exit 0;;
707
+          esac
708
+          REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
709
+          if [ $REDMATRIX_DOMAIN_NAME ]; then
710
+              TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
711
+              validate_domain_name
712
+              if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
713
+                  REDMATRIX_DOMAIN_NAME=
714
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
715
+              else
716
+                  if [ ! $DOMAIN_NAME ]; then
717
+                      DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
718
+                  fi
719
+              fi
720
+          fi
721
+      done
722
+      save_configuration_file
723
+  fi
724
+
725
+  if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
726
+      while [ ! $MICROBLOG_DOMAIN_NAME ]
727
+      do
728
+          data=$(tempfile 2>/dev/null)
729
+          trap "rm -f $data" 0 1 2 5 15
730
+          dialog --backtitle "Freedombone Configuration" \
731
+                 --title "Microblog Configuration" \
732
+                 --form "\nPlease enter your Microblog details:" 11 55 3 \
733
+                 "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
734
+                 2> $data
735
+          sel=$?
736
+          case $sel in
737
+              1) exit 0;;
738
+              255) exit 0;;
739
+          esac
740
+          MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
741
+          if [ $MICROBLOG_DOMAIN_NAME ]; then
742
+              if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
743
+                  MICROBLOG_DOMAIN_NAME=""
744
+              fi
745
+              TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
746
+              validate_domain_name
747
+              if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
748
+                  MICROBLOG_DOMAIN_NAME=
749
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
750
+              else
751
+                  if [ ! $DOMAIN_NAME ]; then
752
+                      DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
753
+                  fi
754
+              fi
755
+          fi
756
+      done
757
+      save_configuration_file
758
+  fi
759
+
760
+  if [ ! $DOMAIN_NAME ]; then
761
+      while [ ! $DOMAIN_NAME ]
762
+      do
763
+          data=$(tempfile 2>/dev/null)
764
+          trap "rm -f $data" 0 1 2 5 15
765
+          dialog --backtitle "Freedombone Configuration" \
766
+              --inputbox "Domain name" 10 30 "$(grep 'DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
767
+          sel=$?
768
+          case $sel in
769
+              0) DOMAIN_NAME=$(cat $data);;
770
+              1) exit 0;;
771
+              255) exit 0;;
772
+          esac
773
+      done
774
+      save_configuration_file
775
+  fi
776
+
777
+  while [ ! $MY_EMAIL_ADDRESS ]
778
+  do
779
+      data=$(tempfile 2>/dev/null)
780
+      trap "rm -f $data" 0 1 2 5 15
781
+      dialog --backtitle "Freedombone Configuration" \
782
+          --inputbox "Your email address" 10 30 "$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')" 2> $data
783
+      sel=$?
784
+      case $sel in
785
+          0) MY_EMAIL_ADDRESS=$(cat $data);;
786
+          1) exit 0;;
787
+          255) exit 0;;
788
+      esac
789
+  done
790
+
791
+  save_configuration_file
792
+
793
+  # delete the temporary configuration file
794
+  if [ -f temp.cfg ]; then
795
+      shred -zu temp.cfg
796
+  fi
797
+}
798
+
799
+function show_result {
800
+  clear
801
+  echo ''
802
+  echo "Configuration filename: $CONFIGURATION_FILE"
803
+  echo ''
804
+  echo 'Contents:'
805
+  echo ''
806
+  cat $CONFIGURATION_FILE
807
+  echo ''
808
+}
809
+
810
+interactive_configuration
811
+show_result
812
+exit 0