From 659bd906417db7052b64077d5e9be9d909323a1c Mon Sep 17 00:00:00 2001 From: Tristan Ancelet Date: Wed, 3 May 2023 11:05:54 -0500 Subject: [PATCH] Made the 'Enabling Services' section of the setup script --- setup-server.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/setup-server.sh b/setup-server.sh index d5385f5..2464f5e 100644 --- a/setup-server.sh +++ b/setup-server.sh @@ -31,9 +31,24 @@ declare -a needed_packages=( # Check packages bind-utils ) +declare -a packages_to_install + +INSTALLED_PACKAGES="$( apt list --installed )" + +# Filtering packages from my needed_packages array (in case some are already installed) +for package in ${needed_packages[@]}; do + if [[ ! "$INSTALLED_PACKAGES" == *$package* ]]; then + packages_to_install+=( "$package" ) + fi +done + +unset needed_packages + +# Installing the packages that aren't already installed +apt install -y ${packages_to_install} -# Start Firewall Setup +# Start: Firewall Setup # Setting up the rules for the webserver firewall-cmd --zone=public --add-service=http --perm @@ -41,7 +56,8 @@ firewall-cmd --zone=public --add-service=https --perm # Setup rules for SSH server (omitting from repo-commit for obvious reasons) ###Do SSH Rule setup### -# End Firewall Setup + +# End: Firewall Setup # Wildcard SSL Cert installation @@ -82,7 +98,8 @@ if [[ ! "$ALLOWED_ACCESS_CONFIG" =~ ^$IP_REGEX$ ]]; then exit 1 fi -echo " +site_config_file=/etc/apache2/sites-available/webcron.conf +site_config=" # Redirecting all http traffic to https ServerAdmin webmaster@tristanancelet.com @@ -113,16 +130,57 @@ echo " SSLOptions +StdEnvVars -" > /etc/apache2/sites-available/web-cron.conf +" + +# If the site config files doesn't exist or doesn't match what it needs to be then it will be overwritten. +if [[ ! -f $site_config_file ]] || [[ ! "$(<$site_config_file)" == "$site_config" ]] ; then + echo "$site_config" > $site_config_file +fi +# Enable the site with a2ensite a2ensite web-cron [[ $? -ne 0 ]] && log " There was an error when enabling the site, please read the error message, that was provided from the a2ensite command" # End apache2 config -# Begin Post-Setup tests + +# Start: Enabling Services + +for services in firewalld apache2; do + service_status="$( systemctl status $service )" + service_enabled="$( grep Loaded <<< "$service_status" | awk '{ print $4 }' )" + service_active="$( grep Active <<< "$service_status" | awk '{ pring $2 }' )" + + if [[ "$service_enabled" == *disabled* ]]; then + # Enabling the service if it isn't + systemctl enable $service + fi + + case $service_active in + *inactive*) + # If the service wasn't started in installation, go ahead and start it (as it would've also been enabled above) + systemctl start $service + continue + ;; + + *active*) + # If the service was already running then just restart it so it can reload the new configs + systemctl restart $service + ;; + esac + + # Unsetting these variables to ensure that it doesn't cause an issue (although it's impossible with the current setup) + unset service_status service_enabled service_active +done + +# End: Enabling Services + + + + +# Start: Post-Setup tests ## Checking that the A record for webcron.tristanancelet.com has been installed/configured on my DNS server echo Doing post setup tests @@ -145,4 +203,4 @@ else " fi -# End Post-Setup tests +# End: Post-Setup tests