Browse Source

Domain name validation in interactive installer

Bob Mottram 10 years ago
parent
commit
3de54edf47
1 changed files with 65 additions and 17 deletions
  1. 65
    17
      src/freedombone

+ 65
- 17
src/freedombone View File

437
   fi
437
   fi
438
 }
438
 }
439
 
439
 
440
+# test a domain name to see if it's valid
441
+function validate_domain_name {
442
+  # count the number of dots in the domain name
443
+  dots=${TEST_DOMAIN_NAME//[^.]}
444
+  no_of_dots=${#dots}
445
+  if (( $no_of_dots > 2 )); then
446
+      TEST_DOMAIN_NAME="The domain $TEST_DOMAIN_NAME has too many subdomains. It should be of the type x.y.z or y.z"
447
+  fi
448
+  if (( $no_of_dots == 0 )); then
449
+      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"
450
+  fi
451
+}
452
+
440
 function save_configuration_file {
453
 function save_configuration_file {
441
   echo "MY_USERNAME=$MY_USERNAME" > freedombone.cfg
454
   echo "MY_USERNAME=$MY_USERNAME" > freedombone.cfg
442
   echo "DOMAIN_NAME=$DOMAIN_NAME" >> freedombone.cfg
455
   echo "DOMAIN_NAME=$DOMAIN_NAME" >> freedombone.cfg
662
           dialog --backtitle "Freedombone Configuration" \
675
           dialog --backtitle "Freedombone Configuration" \
663
                  --title "Wiki Configuration" \
676
                  --title "Wiki Configuration" \
664
                  --form "\nPlease enter your wiki details:" 11 55 3 \
677
                  --form "\nPlease enter your wiki details:" 11 55 3 \
665
-                 "Title:" 1 1 "My Wiki" 1 16 16 15 \
666
-                 "Domain:" 2 1 "" 2 16 16 15 \
678
+                 "Title:" 1 1 "$WIKI_TITLE" 1 16 25 40 \
679
+                 "Domain:" 2 1 "$WIKI_DOMAIN_NAME" 2 16 25 40 \
667
                  2> $data
680
                  2> $data
668
           sel=$?
681
           sel=$?
669
           case $sel in
682
           case $sel in
673
           WIKI_TITLE=$(cat $data | sed -n 1p)
686
           WIKI_TITLE=$(cat $data | sed -n 1p)
674
           WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
687
           WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
675
           if [ $WIKI_DOMAIN_NAME ]; then
688
           if [ $WIKI_DOMAIN_NAME ]; then
676
-              if [ ! $DOMAIN_NAME ]; then
677
-                  DOMAIN_NAME=$WIKI_DOMAIN_NAME
689
+              TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
690
+              validate_domain_name
691
+              if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
692
+                  WIKI_DOMAIN_NAME=
693
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
694
+              else
695
+                  if [ ! $DOMAIN_NAME ]; then
696
+                      DOMAIN_NAME=$WIKI_DOMAIN_NAME
697
+                  fi
678
               fi
698
               fi
679
           fi
699
           fi
680
       done
700
       done
688
           dialog --backtitle "Freedombone Configuration" \
708
           dialog --backtitle "Freedombone Configuration" \
689
                  --title "Blog Configuration" \
709
                  --title "Blog Configuration" \
690
                  --form "\nPlease enter your blog details:" 11 55 3 \
710
                  --form "\nPlease enter your blog details:" 11 55 3 \
691
-                 "Title:" 1 1 "My Blog" 1 16 16 15 \
692
-                 "Domain:" 2 1 "" 2 16 16 15 \
711
+                 "Title:" 1 1 "My Blog" 1 16 25 30 \
712
+                 "Domain:" 2 1 "" 2 16 25 30 \
693
                  2> $data
713
                  2> $data
694
           sel=$?
714
           sel=$?
695
           case $sel in
715
           case $sel in
702
               if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
722
               if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
703
                   FULLBLOG_DOMAIN_NAME=""
723
                   FULLBLOG_DOMAIN_NAME=""
704
               fi
724
               fi
705
-              if [ ! $DOMAIN_NAME ]; then
706
-                  DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
725
+              TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
726
+              validate_domain_name
727
+              if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
728
+                  FULLBLOG_DOMAIN_NAME=
729
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
730
+              else
731
+                  if [ ! $DOMAIN_NAME ]; then
732
+                      DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
733
+                  fi
707
               fi
734
               fi
708
           fi
735
           fi
709
       done
736
       done
717
           dialog --backtitle "Freedombone Configuration" \
744
           dialog --backtitle "Freedombone Configuration" \
718
                  --title "Owncloud Configuration" \
745
                  --title "Owncloud Configuration" \
719
                  --form "\nPlease enter your Owncloud details:" 11 55 3 \
746
                  --form "\nPlease enter your Owncloud details:" 11 55 3 \
720
-                 "Domain:" 1 1 "" 1 16 16 15 \
747
+                 "Domain:" 1 1 "" 1 16 25 30 \
721
                  2> $data
748
                  2> $data
722
           sel=$?
749
           sel=$?
723
           case $sel in
750
           case $sel in
726
           esac
753
           esac
727
           OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
754
           OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
728
           if [ $OWNCLOUD_DOMAIN_NAME ]; then
755
           if [ $OWNCLOUD_DOMAIN_NAME ]; then
729
-              if [ ! $DOMAIN_NAME ]; then
730
-                  DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
756
+              TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
757
+              validate_domain_name
758
+              if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
759
+                  OWNCLOUD_DOMAIN_NAME=
760
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
761
+              else
762
+                  if [ ! $DOMAIN_NAME ]; then
763
+                      DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
764
+                  fi
731
               fi
765
               fi
732
           fi
766
           fi
733
       done
767
       done
741
           dialog --backtitle "Freedombone Configuration" \
775
           dialog --backtitle "Freedombone Configuration" \
742
                  --title "RedMatrix Configuration" \
776
                  --title "RedMatrix Configuration" \
743
                  --form "\nPlease enter your RedMatrix details:" 11 55 3 \
777
                  --form "\nPlease enter your RedMatrix details:" 11 55 3 \
744
-                 "Domain:" 1 1 "" 1 16 16 15 \
778
+                 "Domain:" 1 1 "" 1 16 25 30 \
745
                  2> $data
779
                  2> $data
746
           sel=$?
780
           sel=$?
747
           case $sel in
781
           case $sel in
750
           esac
784
           esac
751
           REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
785
           REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
752
           if [ $REDMATRIX_DOMAIN_NAME ]; then
786
           if [ $REDMATRIX_DOMAIN_NAME ]; then
753
-              if [ ! $DOMAIN_NAME ]; then
754
-                  DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
787
+              TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
788
+              validate_domain_name
789
+              if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
790
+                  REDMATRIX_DOMAIN_NAME=
791
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
792
+              else
793
+                  if [ ! $DOMAIN_NAME ]; then
794
+                      DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
795
+                  fi
755
               fi
796
               fi
756
           fi
797
           fi
757
       done
798
       done
765
           dialog --backtitle "Freedombone Configuration" \
806
           dialog --backtitle "Freedombone Configuration" \
766
                  --title "Microblog Configuration" \
807
                  --title "Microblog Configuration" \
767
                  --form "\nPlease enter your Microblog details:" 11 55 3 \
808
                  --form "\nPlease enter your Microblog details:" 11 55 3 \
768
-                 "Domain:" 1 1 "" 1 16 16 15 \
809
+                 "Domain:" 1 1 "" 1 16 25 30 \
769
                  2> $data
810
                  2> $data
770
           sel=$?
811
           sel=$?
771
           case $sel in
812
           case $sel in
777
               if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
818
               if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
778
                   MICROBLOG_DOMAIN_NAME=""
819
                   MICROBLOG_DOMAIN_NAME=""
779
               fi
820
               fi
780
-              if [ ! $DOMAIN_NAME ]; then
781
-                  DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
821
+              TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
822
+              validate_domain_name
823
+              if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
824
+                  MICROBLOG_DOMAIN_NAME=
825
+                  dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
826
+              else
827
+                  if [ ! $DOMAIN_NAME ]; then
828
+                      DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
829
+                  fi
782
               fi
830
               fi
783
           fi
831
           fi
784
       done
832
       done