Browse Source

Consolidate certificate creation into a function

Bob Mottram 9 years ago
parent
commit
7202346800
1 changed files with 48 additions and 80 deletions
  1. 48
    80
      src/freedombone

+ 48
- 80
src/freedombone View File

@@ -1933,7 +1933,11 @@ function check_certificates {
1933 1933
     if [ ! $1 ]; then
1934 1934
         return
1935 1935
     fi
1936
-    if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
1936
+    USE_LETSENCRYPT='no'
1937
+    if [ $2 ]; then
1938
+        USE_LETSENCRYPT=$2
1939
+    fi
1940
+    if [[ $USE_LETSENCRYPT == 'no' ]]; then
1937 1941
         if [ ! -f /etc/ssl/private/$1.key ]; then
1938 1942
             echo $"Private certificate for $CHECK_HOSTNAME was not created"
1939 1943
             exit 63959
@@ -1958,6 +1962,39 @@ function check_certificates {
1958 1962
     fi
1959 1963
 }
1960 1964
 
1965
+function create_site_certificate {
1966
+    SITE_DOMAIN_NAME="$1"
1967
+
1968
+    # if yes then only "valid" certs are allowed, not self-signed
1969
+    NO_SELF_SIGNED='no'
1970
+    if [ $2 ]; then
1971
+        NO_SELF_SIGNED="$2"
1972
+    fi
1973
+
1974
+    if [[ $ONION_ONLY == "no" ]]; then
1975
+        if [ ! -f /etc/ssl/certs/$SITE_DOMAIN_NAME.dhparam ]; then
1976
+            if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
1977
+                ${PROJECT_NAME}-addcert -h $SITE_DOMAIN_NAME --dhkey $DH_KEYLENGTH
1978
+                check_certificates $SITE_DOMAIN_NAME
1979
+            else
1980
+                ${PROJECT_NAME}-addcert -e $SITE_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
1981
+                if [ ! "$?" = "0" ]; then
1982
+                    if [[ $NO_SELF_SIGNED == 'no' ]]; then
1983
+                        echo $"Lets Encrypt failed for $SITE_DOMAIN_NAME, so try making a self-signed cert"
1984
+                        ${PROJECT_NAME}-addcert -h $SITE_DOMAIN_NAME --dhkey $DH_KEYLENGTH
1985
+                        check_certificates $SITE_DOMAIN_NAME
1986
+                    else
1987
+                        echo $"Lets Encrypt failed for $SITE_DOMAIN_NAME"
1988
+                        exit 682529
1989
+                    fi
1990
+                else
1991
+                    check_certificates $SITE_DOMAIN_NAME 'yes'
1992
+                fi
1993
+            fi
1994
+        fi
1995
+    fi
1996
+}
1997
+
1961 1998
 function backup_database_local {
1962 1999
     # Makes local backups of databases which can then be automatically rolled
1963 2000
     # back if corruption is detected
@@ -6452,16 +6489,7 @@ function install_owncloud_official_deb {
6452 6489
 
6453 6490
     configure_php
6454 6491
 
6455
-    if [[ $ONION_ONLY == "no" ]]; then
6456
-        if [ ! -f /etc/ssl/certs/$OWNCLOUD_DOMAIN_NAME.dhparam ]; then
6457
-            if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
6458
-                ${PROJECT_NAME}-addcert -h $OWNCLOUD_DOMAIN_NAME --dhkey $DH_KEYLENGTH
6459
-            else
6460
-                ${PROJECT_NAME}-addcert -e $OWNCLOUD_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
6461
-            fi
6462
-            check_certificates $OWNCLOUD_DOMAIN_NAME
6463
-        fi
6464
-    fi
6492
+    create_site_certificate $OWNCLOUD_DOMAIN_NAME
6465 6493
 
6466 6494
     # Ensure that the database gets backed up locally, if remote
6467 6495
     # backups are not being used
@@ -6804,16 +6832,7 @@ function install_gogs {
6804 6832
 
6805 6833
     configure_php
6806 6834
 
6807
-    if [[ $ONION_ONLY == "no" ]]; then
6808
-        if [ ! -f /etc/ssl/certs/$GIT_DOMAIN_NAME.dhparam ]; then
6809
-            if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
6810
-                ${PROJECT_NAME}-addcert -h $GIT_DOMAIN_NAME --dhkey $DH_KEYLENGTH
6811
-            else
6812
-                ${PROJECT_NAME}-addcert -e $GIT_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
6813
-            fi
6814
-            check_certificates $GIT_DOMAIN_NAME
6815
-        fi
6816
-    fi
6835
+    create_site_certificate $GIT_DOMAIN_NAME
6817 6836
 
6818 6837
     nginx_ensite $GIT_DOMAIN_NAME
6819 6838
 
@@ -7726,16 +7745,7 @@ function install_wiki {
7726 7745
     echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7727 7746
     echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
7728 7747
 
7729
-    if [[ $ONION_ONLY == "no" ]]; then
7730
-        if [ ! -f /etc/ssl/certs/$WIKI_DOMAIN_NAME.dhparam ]; then
7731
-            if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
7732
-                ${PROJECT_NAME}-addcert -h $WIKI_DOMAIN_NAME --dhkey $DH_KEYLENGTH
7733
-            else
7734
-                ${PROJECT_NAME}-addcert -e $WIKI_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
7735
-            fi
7736
-            check_certificates $WIKI_DOMAIN_NAME
7737
-        fi
7738
-    fi
7748
+    create_site_certificate $WIKI_DOMAIN_NAME
7739 7749
 
7740 7750
     configure_php
7741 7751
 
@@ -8049,16 +8059,7 @@ function install_blog {
8049 8059
     echo '    }' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
8050 8060
     echo '}' >> /etc/nginx/sites-available/$FULLBLOG_DOMAIN_NAME
8051 8061
 
8052
-    if [[ $ONION_ONLY == "no" ]]; then
8053
-        if [ ! -f /etc/ssl/certs/$FULLBLOG_DOMAIN_NAME.dhparam ]; then
8054
-            if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
8055
-                ${PROJECT_NAME}-addcert -h $FULLBLOG_DOMAIN_NAME --dhkey $DH_KEYLENGTH
8056
-            else
8057
-                ${PROJECT_NAME}-addcert -e $FULLBLOG_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
8058
-            fi
8059
-            check_certificates $FULLBLOG_DOMAIN_NAME
8060
-        fi
8061
-    fi
8062
+    create_site_certificate $FULLBLOG_DOMAIN_NAME
8062 8063
 
8063 8064
     configure_php
8064 8065
 
@@ -8647,12 +8648,7 @@ function install_gnu_social {
8647 8648
 
8648 8649
     configure_php
8649 8650
 
8650
-    if [[ $ONION_ONLY == "no" ]]; then
8651
-        if [ ! -f /etc/ssl/certs/$MICROBLOG_DOMAIN_NAME.dhparam ]; then
8652
-            ${PROJECT_NAME}-addcert -e $MICROBLOG_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
8653
-            check_certificates $MICROBLOG_DOMAIN_NAME
8654
-        fi
8655
-    fi
8651
+    create_site_certificate $MICROBLOG_DOMAIN_NAME 'yes'
8656 8652
 
8657 8653
     # Ensure that the database gets backed up locally, if remote
8658 8654
     # backups are not being used
@@ -9397,12 +9393,7 @@ function install_hubzilla {
9397 9393
 
9398 9394
     configure_php
9399 9395
 
9400
-    if [[ $ONION_ONLY == "no" ]]; then
9401
-        if [ ! -f /etc/ssl/certs/$HUBZILLA_DOMAIN_NAME.dhparam ]; then
9402
-            ${PROJECT_NAME}-addcert -e $HUBZILLA_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
9403
-            check_certificates $HUBZILLA_DOMAIN_NAME
9404
-        fi
9405
-    fi
9396
+    create_site_certificate $HUBZILLA_DOMAIN_NAME 'yes'
9406 9397
 
9407 9398
     if [ ! -d $HUBZILLA_PATH/view/tpl/smarty3 ]; then
9408 9399
         mkdir $HUBZILLA_PATH/view/tpl/smarty3
@@ -9689,7 +9680,7 @@ function install_mediagoblin {
9689 9680
     else
9690 9681
         sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
9691 9682
     fi
9692
-    
9683
+
9693 9684
     # web config
9694 9685
     MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
9695 9686
     nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
@@ -9759,7 +9750,7 @@ function install_mediagoblin {
9759 9750
     else
9760 9751
         echo -n '' > $MEDIAGOBLIN_VIRTUAL_HOST
9761 9752
     fi
9762
-    
9753
+
9763 9754
     echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
9764 9755
     echo "  listen 127.0.0.1:${MEDIAGOBLIN_ONION_PORT} default_server;" >> $MEDIAGOBLIN_VIRTUAL_HOST
9765 9756
     echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
@@ -9821,18 +9812,7 @@ function install_mediagoblin {
9821 9812
     echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
9822 9813
     echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
9823 9814
 
9824
-    if [ ! -f /etc/ssl/certs/$MEDIAGOBLIN_DOMAIN_NAME.dhparam ]; then
9825
-        if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
9826
-            ${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
9827
-        else
9828
-            ${PROJECT_NAME}-addcert -e $MEDIAGOBLIN_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
9829
-            if [ ! "$?" = "0" ]; then
9830
-                echo $'Lets Encrypt failed for this domain, so try making a self-signed cert'
9831
-                ${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
9832
-            fi          
9833
-        fi
9834
-        check_certificates $MEDIAGOBLIN_DOMAIN_NAME
9835
-    fi
9815
+    create_site_certificate $MEDIAGOBLIN_DOMAIN_NAME
9836 9816
 
9837 9817
     nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
9838 9818
     systemctl restart php5-fpm
@@ -10522,19 +10502,7 @@ function install_sip_turn {
10522 10502
         VOIP_TURN_NONCE="$(openssl rand -base64 32 | cut -c1-30)"
10523 10503
     fi
10524 10504
 
10525
-    # create a certificate if needed
10526
-    if [ ! -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem ]; then
10527
-        if [ ! -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt ]; then
10528
-            if [ ! -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.dhparam ]; then
10529
-                if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
10530
-                    ${PROJECT_NAME}-addcert -h $DEFAULT_DOMAIN_NAME --dhkey $DH_KEYLENGTH
10531
-                else
10532
-                    ${PROJECT_NAME}-addcert -e $DEFAULT_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
10533
-                fi
10534
-                check_certificates $DEFAULT_DOMAIN_NAME
10535
-            fi
10536
-        fi
10537
-    fi
10505
+    create_site_certificate $DEFAULT_DOMAIN_NAME
10538 10506
 
10539 10507
     echo '##' > /etc/turnserver/turnserver.conf
10540 10508
     echo '# TurnServer configuration file.' >> /etc/turnserver/turnserver.conf