Procházet zdrojové kódy

Domain name validation in interactive installer

Bob Mottram před 10 roky
rodič
revize
3de54edf47
1 změnil soubory, kde provedl 65 přidání a 17 odebrání
  1. 65
    17
      src/freedombone

+ 65
- 17
src/freedombone Zobrazit soubor

@@ -437,6 +437,19 @@ function interactive_configuration_remote_backups {
437 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 453
 function save_configuration_file {
441 454
   echo "MY_USERNAME=$MY_USERNAME" > freedombone.cfg
442 455
   echo "DOMAIN_NAME=$DOMAIN_NAME" >> freedombone.cfg
@@ -662,8 +675,8 @@ function interactive_configuration {
662 675
           dialog --backtitle "Freedombone Configuration" \
663 676
                  --title "Wiki Configuration" \
664 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 680
                  2> $data
668 681
           sel=$?
669 682
           case $sel in
@@ -673,8 +686,15 @@ function interactive_configuration {
673 686
           WIKI_TITLE=$(cat $data | sed -n 1p)
674 687
           WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
675 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 698
               fi
679 699
           fi
680 700
       done
@@ -688,8 +708,8 @@ function interactive_configuration {
688 708
           dialog --backtitle "Freedombone Configuration" \
689 709
                  --title "Blog Configuration" \
690 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 713
                  2> $data
694 714
           sel=$?
695 715
           case $sel in
@@ -702,8 +722,15 @@ function interactive_configuration {
702 722
               if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
703 723
                   FULLBLOG_DOMAIN_NAME=""
704 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 734
               fi
708 735
           fi
709 736
       done
@@ -717,7 +744,7 @@ function interactive_configuration {
717 744
           dialog --backtitle "Freedombone Configuration" \
718 745
                  --title "Owncloud Configuration" \
719 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 748
                  2> $data
722 749
           sel=$?
723 750
           case $sel in
@@ -726,8 +753,15 @@ function interactive_configuration {
726 753
           esac
727 754
           OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
728 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 765
               fi
732 766
           fi
733 767
       done
@@ -741,7 +775,7 @@ function interactive_configuration {
741 775
           dialog --backtitle "Freedombone Configuration" \
742 776
                  --title "RedMatrix Configuration" \
743 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 779
                  2> $data
746 780
           sel=$?
747 781
           case $sel in
@@ -750,8 +784,15 @@ function interactive_configuration {
750 784
           esac
751 785
           REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
752 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 796
               fi
756 797
           fi
757 798
       done
@@ -765,7 +806,7 @@ function interactive_configuration {
765 806
           dialog --backtitle "Freedombone Configuration" \
766 807
                  --title "Microblog Configuration" \
767 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 810
                  2> $data
770 811
           sel=$?
771 812
           case $sel in
@@ -777,8 +818,15 @@ function interactive_configuration {
777 818
               if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
778 819
                   MICROBLOG_DOMAIN_NAME=""
779 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 830
               fi
783 831
           fi
784 832
       done