From 0d6ecf23e3fc5a0e448f7cd4dc868d1ed6c3ab7b Mon Sep 17 00:00:00 2001
From: cytopia <cytopia@everythingcli.org>
Date: Fri, 20 Nov 2020 14:30:09 +0100
Subject: [PATCH] check-config.sh: check customizations

---
 check-config.sh | 102 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 99 insertions(+), 3 deletions(-)

diff --git a/check-config.sh b/check-config.sh
index 79cbb903..f734fd18 100755
--- a/check-config.sh
+++ b/check-config.sh
@@ -25,6 +25,10 @@ log_err() {
 	>&2 printf "\\e[1;31m[ERR]   %s\\e[0m\\n" "${1}"
 }
 
+log_note() {
+	>&2 printf "\\e[1;33m[NOTE]  %s\\e[0m\\n" "${1}"
+}
+
 log_info() {
 	printf "\\e[;34m[INFO]  %s\\e[0m\\n" "${1}"
 }
@@ -148,7 +152,7 @@ print_head_1 "Checking git"
 
 GIT_STATUS="$( git status -s )"
 if [ -z "${GIT_STATUS}" ]; then
-	log_info "git is clean"
+	log_ok "git is clean"
 else
 	log_err "git is unclean"
 	echo "${GIT_STATUS}"
@@ -720,6 +724,88 @@ if [ "${DOCROOT_WRONG}" = "0" ]; then
 	log_ok "All projects have valid HTTPD_DOCROOT_DIR"
 fi
 
+
+#--------------------------------------------------------------------------------------------------
+# Check Customizations
+#--------------------------------------------------------------------------------------------------
+print_head_1 "Checking customizations"
+
+CUSTOMIZATIONS=0
+
+# vhost-gen
+HOST_PATH_HTTPD_DATADIR="$( get_path "$( get_env_value "HOST_PATH_HTTPD_DATADIR" )" )"
+HTTPD_TEMPLATE_DIR="$( get_env_value "HTTPD_TEMPLATE_DIR" )"
+while read -r project; do
+	if [ -f "${project}/${HTTPD_TEMPLATE_DIR}/apache22.yml" ]; then
+		log_note "[vhost-gen] Custom Apache 2.2 vhost-gen config present in: ${project}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	elif [ -f "${project}/${HTTPD_TEMPLATE_DIR}/apache24.yml" ]; then
+		log_note "[vhost-gen] Custom Apache 2.4 vhost-gen config present in: ${project}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	elif [ -f "${project}/${HTTPD_TEMPLATE_DIR}/nginx.yml" ]; then
+		log_note "[vhost-gen] Custom Nginx vhost-gen config present in: ${project}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(get_sub_dirs_level_1 "${HOST_PATH_HTTPD_DATADIR}")
+
+# docker-compose.override.yml
+if [ -f "docker-compose.override.yml" ]; then
+	log_note "[docker]    Custom docker-compose.override.yml present"
+	CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+fi
+
+# cfg/HTTPD/
+while read -r httpd; do
+	if find "cfg/${httpd}" | grep -E '\.conf$' >/dev/null; then
+		log_note "[httpd]     Custom config present in cfg/${httpd}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(grep -E '^#?HTTPD_SERVER=' env-example  | awk -F'=' '{print $2}')
+
+# cfg/php-ini-${version}/
+while read -r php_version; do
+	if find "cfg/php-ini-${php_version}" | grep -E '\.ini$' >/dev/null; then
+		log_note "[php.ini]   Custom config present in cfg/php-ini-${php_version}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(grep -E '^#?PHP_SERVER=' env-example  | awk -F'=' '{print $2}')
+
+# cfg/php-fpm-${version}/
+while read -r php_version; do
+	if find "cfg/php-fpm-${php_version}" | grep -E '\.conf$' >/dev/null; then
+		log_note "[php-fpm]   Custom config present in cfg/php-fpm-${php_version}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(grep -E '^#?PHP_SERVER=' env-example  | awk -F'=' '{print $2}')
+
+# cfg/MYSQL/
+while read -r mysql; do
+	if find "cfg/${mysql}" | grep -E '\.cnf$' >/dev/null; then
+		log_note "[mysql]     Custom config present in cfg/${mysql}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(grep -E '^#?MYSQL_SERVER=' env-example  | awk -F'=' '{print $2}')
+
+# cfg/php-startup-${version}/
+while read -r php_version; do
+	if find "cfg/php-startup-${php_version}" | grep -E '\.sh$' >/dev/null; then
+		log_note "[startup]   Custom script present in cfg/php-startup-${php_version}/"
+		CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+	fi
+done < <(grep -E '^#?PHP_SERVER=' env-example  | awk -F'=' '{print $2}')
+
+# autostart/
+if find "autostart" | grep -E '\.sh$' >/dev/null; then
+	log_note "[startup]   Custom script present in autostart/"
+	CUSTOMIZATIONS=$(( CUSTOMIZATIONS + 1 ))
+fi
+
+# Total?
+if [ "${CUSTOMIZATIONS}" = "0" ]; then
+	log_info "No custom configurations applied"
+fi
+
+
 #--------------------------------------------------------------------------------------------------
 # Summary
 #--------------------------------------------------------------------------------------------------
@@ -729,10 +815,20 @@ if [ "${RET_CODE}" -gt "0" ]; then
 	log_err "Found ${RET_CODE} error(s)"
 	log_err "Devilbox might not work properly"
 	log_err "Fix the issues before submitting a bug report"
-	log_info "Ensure to run 'docker-compose stop; docker-compose rm -f' on changes in .env"
+	if [ "${CUSTOMIZATIONS}" -gt "0" ]; then
+		log_note "${CUSTOMIZATIONS} custom configurations applied. If you encounter issues, reset them first."
+	else
+		log_info "No custom configurations applied"
+	fi
+	log_info "Ensure to run 'docker-compose stop; docker-compose rm -f' on .env changes or custom configs"
 	exit 1
 else
 	log_ok "Found no errors"
-	log_info "Ensure to run 'docker-compose stop; docker-compose rm -f' when .env was changed"
+	if [ "${CUSTOMIZATIONS}" -gt "0" ]; then
+		log_note "${CUSTOMIZATIONS} custom configurations applied. If you encounter issues, reset them first."
+	else
+		log_info "No custom configurations applied"
+	fi
+	log_info "Ensure to run 'docker-compose stop; docker-compose rm -f' on .env changes or custom configs"
 	exit 0
 fi