#!/bin/sh

color_subr="/usr/share/veil/color.subr"
system_subr="/usr/share/veil/system.subr"
deb_subr="/usr/share/veil/deb.subr"

set -e
. ${color_subr}
. ${system_subr}
. ${deb_subr}
set +e

init_color

ADDHELP="
${H3_COLOR}Description${N0_COLOR}:

 Controller NGINX factory reset default script.

 The script can destroy all crt and rollback the nginx settings 
   to their original state.

${H3_COLOR}Options${N0_COLOR}:

 ${N2_COLOR}-m${N0_COLOR} - mode: 'start' to execute factory reset default.
 ${N2_COLOR}-t${N0_COLOR} - target of components: 'data', 'settings', 'all':
                            'data'    - DROP CRT only;
                            'settings - DROP Nginx settings only;
                            'all' (default) - 'data settings'

${H3_COLOR}Examples${N0_COLOR}:

 # reset_nginx -m start
 # reset_nginx -m start -t 'data'

"

usage()
{
	${ECHO} "${ADDHELP}"
	exit 0
}

reset_data()
{
	local _ret=

	${ECHO} "${N1_COLOR}reset: ${N2_COLOR}data ...${N0_COLOR}"
	${ECHO} "${N1_COLOR}reset_nginx: reset_data"

	[ ! -d /var/lib/ecp-veil/certs ] && return 0

	# todo: make sure that this directory contains nginx-certificates
	#${FIND_CMD} /var/lib/ecp-veil/certs/ -type f -exec ${RM_CMD} -f {} \;

	return 0
}

reset_settings()
{
	${ECHO} "${N1_COLOR}reset: ${N2_COLOR}settings ...${N0_COLOR}"

	for i in local_modules modules users local_user; do
		[ -r /var/lib/ecp-veil/data/${i}/nginx.yaml ] && ${RM_CMD} -f /var/lib/ecp-veil/data/${i}/nginx.yaml
	done

	return 0
}


## MAIN
mode=
target="data settings"

# -t just test for update available
while getopts "m:t:" opt; do
	case "${opt}" in
		m)
			mode="${OPTARG}"
			;;
		t)
			target="${OPTARG}"
			;;
		*)
			usage
			;;
	esac
done
shift $(($OPTIND - 1))

case "${mode}" in
	start)
		true
		;;
	*)
		usage
		;;
esac

NGINX_SERVER_INSTALLED=0

# check if nginx package exist
NGINX_SERVER_CMD=$( which nginx 2>/dev/null )

if [ -n "${NGINX_SERVER_CMD}" ]; then
	NGINX_SERVER_INSTALLED=1
else
	NGINX_SERVER_INSTALLED=0
fi

[ ${NGINX_SERVER_INSTALLED} -eq 0 ] && err 1 "${W1_COLOR}reset_nginx warning: ${N1_COLOR}your installation does not contain nginx${N2_COLOR}"

[ ${NGINX_SERVER_INSTALLED} -eq 1 ] && ${SYSTEMCTL_CMD} stop nginx.service

for i in ${target}; do
	case "${i}" in
		data|settings)
			reset_${i}
			;;
		*)
			${ECHO} "${W1_COLOR}reset target unknown: ${N2_COLOR}${i}${N0_COLOR}"
			usage
			;;
	esac
done

/usr/local/sbin/veil-role -a nginx
ret=$?

exit ${ret}
