From 376d6196e1bc6b6ed1859c52cdcc05727ea259f3 Mon Sep 17 00:00:00 2001 From: gyurix Date: Thu, 1 Jul 2021 08:18:25 +0000 Subject: [PATCH] Some bugfixes. --- scripts/check_certificates.sh | 11 +++--- scripts/nginx_config_create.sh | 66 +++++++++++++++++----------------- scripts/scheduler.sh | 42 +++++++++++----------- 3 files changed, 63 insertions(+), 56 deletions(-) diff --git a/scripts/check_certificates.sh b/scripts/check_certificates.sh index ea3288d..9d5bd11 100755 --- a/scripts/check_certificates.sh +++ b/scripts/check_certificates.sh @@ -3,21 +3,24 @@ # Set env variables DOMAIN_DIR=$DOMAIN_DIR - CERT_DIR=$CERT_DIR DOMAIN=$1 + CERT_DIR=$CERT_DIR/$DOMAIN -# generate dhparam file -openssl dhparam -out $CERT_DIR/dhparam.pem 4096 create_self_signed_certificate() { + +# generate dhparam file +openssl dhparam -dsaparam -out $CERT_DIR/dhparam.pem 4096 + # generate key -openssl req -x509 -newkey rsa:4096 -keyout $CERT_DIR/key.pem -out $CERT_DIR/cert.pem -days 365 -sha256 -nodes -subj '/CN=$DOMAIN' +openssl req -x509 -newkey rsa:4096 -keyout $CERT_DIR/key.pem -out $CERT_DIR/fullchain.pem -days 365 -sha256 -nodes -subj "/CN=$DOMAIN" } if [[ "$(ls -A $CERT_DIR)" == "" ]]; then echo "$DOMAIN not contains certificates, creates new." + mkdir -p $CERT_DIR; create_self_signed_certificate; fi diff --git a/scripts/nginx_config_create.sh b/scripts/nginx_config_create.sh index 5abb826..4e5bcce 100755 --- a/scripts/nginx_config_create.sh +++ b/scripts/nginx_config_create.sh @@ -1,15 +1,12 @@ #!/bin/sh -JQ="jq -r" - cd /proxy_config DOMAIN=$1 DEL=$2 -if [[ "$DEL" != "" ]]; then +if [[ $DEL != "" ]]; then echo "$DOMAIN DELETED"; rm $DOMAIN.conf; - exit; fi DOMAIN_SOURCE=/domains/$DOMAIN @@ -27,15 +24,14 @@ ERROR_PAGE=$(jq -r .ERROR_PAGE $DOMAIN_SOURCE) # check whether certificates exist or not if [ $HTTPS_PORT != "" ]; then - ./check_certificates.sh "$DOMAIN"; + /scripts/check_certificates.sh "$DOMAIN"; fi echo $DOMAIN; -exit; -file="$DOMAIN.conf" +file="/tmp/$DOMAIN.conf" -cp -a nginx_template.conf $DOMAIN.conf +cp -a /scripts/nginx_template.conf /tmp/$DOMAIN.conf { @@ -43,30 +39,36 @@ if [ $HTTP_PORT != "" ]; then echo "server { listen $HTTP_PORT; server_name $DOMAIN_NAME; -rewrite_log on" -fi +rewrite_log on;" echo -if [[ $REDIRECT_HTTP != "" ]]; then - echo "return 301 http://$REDIRECT_HTTP; + if [[ $REDIRECT_HTTP != "" && $HTTP_PORT != "" ]]; then + echo "return 301 http://$REDIRECT_HTTP; }" -elif [[ $REDIRECT_HTTPS != "" ]]; then - echo "return 301 https://$REDIRECT_HTTPS; + elif [[ $REDIRECT_HTTPS != "" && $HTTP_PORT != "" ]]; then + echo "return 301 https://$REDIRECT_HTTPS; }" else - if [[ $ERROR_PAGE != "" ]]; then - echo "error_page 404 /$ERROR_PAGE; + if [[ $ERROR_PAGE != "" && $HTTP_PORT != "" ]]; then + echo "error_page 404 /$ERROR_PAGE; location = /$ERROR_PAGE { root html; allow all; - index 404.html - rewrite ^ "'$scheme'"http://$ERROR_PAGE"'$request_uri'" permanent; + index 404.html; + rewrite ^ "'$scheme'" http://$ERROR_PAGE"'$request_uri'" permanent; }" fi - echo "location / { - proxy_pass http://$LOCAL_IP:$HTTP_PORT; - proxy_redirect off; + fi + echo "location / {" + + if [ $HTTP_PORT == "" ]; then + echo "proxy_pass http://$LOCAL_IP:80;" + else + echo "proxy_pass http://$LOCAL_IP:$HTTP_PORT;" + fi + + echo "proxy_redirect off; proxy_buffering off; proxy_set_header X-Forwarded-For "'$proxy_add_x_forwarded_for'"; proxy_set_header Upgrade "'$http_upgrade'"; @@ -84,11 +86,11 @@ if [ $HTTPS_PORT != "" ]; then echo "server { listen $HTTPS_PORT ssl; server_name $DOMAIN_NAME; -rewrite_log on +rewrite_log on; proxy_ssl_server_name on; -ssl_dhparam /etc/ssl/keys/dhparam.pem; - ssl_certificate /etc/ssl/keys/fullchain.pem; - ssl_certificate_key /etc/ssl/keys/key.pem; +ssl_dhparam /etc/ssl/keys/$DOMAIN/dhparam.pem; + ssl_certificate /etc/ssl/keys/$DOMAIN/fullchain.pem; + ssl_certificate_key /etc/ssl/keys/$DOMAIN/key.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "'"EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"'"; @@ -97,20 +99,18 @@ ssl_dhparam /etc/ssl/keys/dhparam.pem; ssl_session_cache shared:SSL:50m; ssl_session_timeout 5m; ssl_stapling on;" -fi echo -if [[ $ERROR_PAGE != "" ]]; then - echo "error_page 404 /$ERROR_PAGE; + if [[ $ERROR_PAGE != "" && $HTTPS_PORT != "" ]]; then + echo "error_page 404 /$ERROR_PAGE; location = /$ERROR_PAGE { root html; allow all; - index 404.html - rewrite ^ "'$scheme'" http://$ERROR_PAGE"'$request_uri'" permanent; + index 404.html; + rewrite ^ "'$scheme'":http://$ERROR_PAGE"'$request_uri'" permanent; }" -fi -echo + fi echo "location / { proxy_pass http://$LOCAL_IP:$HTTP_PORT; @@ -123,6 +123,8 @@ echo "location / { access_log off; } }" +fi } >> "$file" +mv /tmp/$DOMAIN.conf $DOMAIN.conf diff --git a/scripts/scheduler.sh b/scripts/scheduler.sh index e817106..9495f9a 100755 --- a/scripts/scheduler.sh +++ b/scripts/scheduler.sh @@ -130,28 +130,30 @@ elif [[ "$RUNNING_CONTAINERS" -eq 1 ]] ; then done -# At last need to restart the only one running proxy when the others started successful. -for CHECK_PROXIES in $CONTAINERS ; do -if [[ $CHECK_PROXIES != $ONLY_RUNNING_PROXY_NAME ]] ; then - if docker ps | grep $CHECK_PROXIES ; then - echo "Not running proxies successfuly started, let's start the only running one."; - do_proxy_restart $ONLY_RUNNING_PROXY_NAME; - else - echo "Not enough running proxies found, can't start the only running one."; - fi -fi -done + # At last need to restart the only one running proxy when the others started successful. + for CHECK_PROXIES in $CONTAINERS ; do + if [[ $CHECK_PROXIES != $ONLY_RUNNING_PROXY_NAME ]] ; then + if docker ps | grep $CHECK_PROXIES ; then + echo "Not running proxies successfuly started, let's start the only running one."; + do_proxy_restart $ONLY_RUNNING_PROXY_NAME; + else + echo "Not enough running proxies found, can't start the only running one."; + fi + fi + done -else - sleep $TIMEOUT; - RESTART_COUNTER=$((RESTART_COUNTER +1)) - - if [[ "$RESTART_COUNTER" -le "$RESTART" ]] ; then - check_proxy_state; - else - recover_process; - fi +# sleep $TIMEOUT; +# RESTART_COUNTER=$((RESTART_COUNTER +1)) +# +# echo "RUNNING CONTAINERS: "$RUNNING_CONTAINERS; +# +# if [[ "$RESTART_COUNTER" -le "$RESTART" ]] ; then +# echo "ELSE: check proxy state"; +# check_proxy_state; +# else +# recover_process; +# fi # for CONTAINER in `echo $CONTAINER_NAMES`; do