diff --git a/BashScripts/install-apache/apache-add-proxy.sh b/BashScripts/install-apache/apache-add-proxy.sh new file mode 100644 index 0000000..c890c28 --- /dev/null +++ b/BashScripts/install-apache/apache-add-proxy.sh @@ -0,0 +1,108 @@ +#!/bin/bash +# Make sure script is ran as root +if [[ $EUID -ne 0 ]]; then + exec sudo /bin/bash "$0" "$@" +fi +if [[ $1 = "" ]]; then + echo "Usage: apache-add-proxy.sh [domain.com] [http://192.168.0.108:3000/]" + exit 0 +fi +domain=$(perl -e "(\$d)=\"$1\"=~/(\\w+\\.\\w+)\$/;print \$d") +host=$(perl -e "(\$d)=\"$1\"=~/(\\w+)\\.\\w+\\.\\w+\$/;print \$d") +red='\033[0;31m' +green='\033[0;32m' +nocolor='\033[0m' +if [[ -f "/etc/apache2/sites-enabled/$1.conf" ]]; then + echo "Config file $1.conf does already exist" + exit 1 +fi +if [[ ! -d "/var/www/$1" ]]; then + mkdir "/var/www/$1" +fi +if [[ ! -d "/var/www/$1/logs" ]]; then + mkdir "/var/www/$1/logs" +fi +chmod -R 777 "/var/www/$1" + +echo "Searching for SSL certificate for $domain ..." +declare -a CertDirectories=("/var/www/$domain/certs" "/var/www/SSL-Certificates") +unset CertDirectory +for TestDirectory in "${CertDirectories[@]}" +do + if [[ -f "$TestDirectory/$domain-crt.pem" ]] && [[ -f "$TestDirectory/$domain-key.pem" ]] && [[ -f "$TestDirectory/$domain-chain.pem" ]]; then + echo "SSL certificate found!" + CertDirectory=$TestDirectory; + fi +done + +if [[ $host = "" ]]; then + serveralias="ServerAlias www.$1" +else + serveralias="" +fi + +echo Adding site +cat <> "/etc/apache2/sites-enabled/$1.conf" + + + ServerName $1 + $serveralias + ServerAdmin webmaster@$1 + + HostnameLookups Off + ErrorLog /var/www/$1/logs/error.log + CustomLog /var/www/$1/logs/access.log combined + + + + ProxyPreserveHost On + ProxyPass "/" $2 + ProxyPassReverse "/" $2 + + + + +EOT1 + +if [[ ! $CertDirectory = "" ]]; then + echo Adding SSL settings + cat <> "/etc/apache2/sites-enabled/$1.conf" + + + + ServerName $1 + $serveralias + ServerAdmin webmaster@$1 + + HostnameLookups Off + LogFormat "%h %l %u %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b" mylogformat + ErrorLog /var/www/$1/logs/error-ssl.log + CustomLog /var/www/$1/logs/access-ssl.log mylogformat + + SSLEngine on + SSLCertificateFile "$CertDirectory/$domain-crt.pem" + SSLCertificateKeyFile "$CertDirectory/$domain-key.pem" + SSLCertificateChainFile "$CertDirectory/$domain-chain.pem" + BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 + + + + ProxyPreserveHost On + ProxyPass "/" $2 + ProxyPassReverse "/" $2 + + + + +EOT2 +fi + +apacheresult=$(apachectl configtest 2>&1) +if [[ ! $apacheresult =~ "Syntax OK" ]]; then + rm "/etc/apache2/sites-enabled/$1.conf" + echo "Errors detected:" + echo "$apacheresult" +else + echo "Site added!" + systemctl restart apache2 +fi