Browse Source

Implement letsencrypt automation process for backend services.

Raphael Schneeberger 6 years ago
parent
commit
ebf59f5ab0
1 changed files with 81 additions and 0 deletions
  1. 81 0
      bin/v-add-letsencrypt-host

+ 81 - 0
bin/v-add-letsencrypt-host

@@ -0,0 +1,81 @@
+#!/bin/bash
+# info: add letsencrypt for host and backend
+# options:
+#
+# The function check and validates the backend certificate and generate
+# a new let's encrypt certificate.
+
+
+#----------------------------------------------------------#
+#                    Variable&Function                     #
+#----------------------------------------------------------#
+
+# Argument definition
+user="admin"
+domain=$HOSTNAME
+
+# Includes
+source $HESTIA/func/main.sh
+source $HESTIA/func/domain.sh
+source $HESTIA/conf/hestia.conf
+
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+is_format_valid 'user' 'domain' 'aliases'
+is_object_valid 'user' 'USER' "$user"
+is_object_unsuspended 'user' 'USER' "$user"
+is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
+
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Check if hostname already exists as domain
+if [ "$($BIN/v-list-web-domain $user $domain plain |cut -f 1)" != "$domain" ]; then
+    # Create web domain for hostname
+    $BIN/v-add-web-domain $user $domain
+fi
+
+# Validate web domain
+is_object_valid 'web' 'DOMAIN' "$domain"
+is_object_unsuspended 'web' 'DOMAIN' "$domain"
+get_domain_values 'web'
+
+# Load domain data
+eval $(grep "DOMAIN='$domain'" $USER_DATA/web.conf)
+
+# Set ssl installation to yes
+add_ssl="yes"
+
+if [ "$SSL" = "yes" ]; then
+    # Valildate SSL Certificate
+    if [ -e "$USER_DATA/ssl/$domain.ca" ]; then
+        if openssl verify -CAfile $USER_DATA/ssl/$domain.ca $USER_DATA/ssl/$domain.pem | grep -q "$domain.pem: OK"; then
+            add_ssl="no"
+        fi
+    else
+        if openssl verify $USER_DATA/ssl/$domain.pem | grep -q "$domain.pem: OK"; then
+            add_ssl="no"
+        fi
+    fi
+fi
+
+# Add let's encrypt ssl if needed
+if [ "$add_ssl" = "yes" ]; then
+    # Add let's encrypt ssl
+    $BIN/v-add-letsencrypt-domain $user $domain
+fi
+
+# Add certificate to backend
+$BIN/v-update-host-certificate $user $domain
+
+
+#----------------------------------------------------------#
+#                        Hestia                            #
+#----------------------------------------------------------#
+
+exit