#!/bin/sh
# postrm script for 66-service-boot-user.
#
# See: dh_installdeb(1).

#set -e

# Summary of how this script can be called:
#        * <postrm> 'remove'
#        * <postrm> 'purge'
#        * <old-postrm> 'upgrade' <new-version>
#        * <new-postrm> 'failed-upgrade' <old-version>
#        * <new-postrm> 'abort-install'
#        * <new-postrm> 'abort-install' <old-version>
#        * <new-postrm> 'abort-upgrade' <old-version>
#        * <disappearer's-postrm> 'disappear' <overwriter>
#          <overwriter-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package.


TIMESTAMP="@$(date +%Y%m%d-%H%M%S)"

SERVICE1="service1"
SERVICE2="service2"
SERVICE3="service3"
SERVICE4="service4"

INSTANTIATED_SERVICE1="boot-user@"
INSTANTIATED_SERVICE2="instantiated-service2@"
INSTANTIATED_SERVICE3="instantiated-service3@"
INSTANTIATED_SERVICE4="instantiated-service4@"

USER_SERVICE1="user-service1"
USER_SERVICE2="user-service2"
USER_SERVICE3="user-service3"
USER_SERVICE4="user-service4"

INSTANTIATED_USER_SERVICE1="instantiated-user-service1@"
INSTANTIATED_USER_SERVICE2="instantiated-user-service2@"
INSTANTIATED_USER_SERVICE3="instantiated-user-service3@"
INSTANTIATED_USER_SERVICE4="instantiated-user-service4@"

case "$1" in
    remove)
	;;

    purge)
    

	########## GLOBAL SERVICES ###########
		## This should clean-out problematic frontends from older formats
		if [ -e /etc/66/service/${SERVICE1} ]; then
			echo "Purging frontend /etc/66/service/${SERVICE1}"
			rm -rf /etc/66/service/${SERVICE1}
		fi
		if [ -e /etc/66/service/${SERVICE2} ]; then
			echo "Purging frontend /etc/66/service/${SERVICE2}"
			rm -rf /etc/66/service/${SERVICE2}
		fi
		if [ -e /etc/66/service/${SERVICE3} ]; then
			echo "Purging frontend /etc/66/service/${SERVICE3}"
			rm -rf /etc/66/service/${SERVICE3}
		fi
		if [ -e /etc/66/service/${SERVICE4} ]; then
			echo "Purging frontend /etc/66/service/${SERVICE4}"
			rm -rf /etc/66/service/${SERVICE4}
		fi
		## This should cleanly remove the actual services
		## Errors can be ignored as we are using placeholders
		66 remove ${SERVICE1} >/dev/null 2>&1	
		66 remove ${SERVICE2} >/dev/null 2>&1	
		66 remove ${SERVICE3} >/dev/null 2>&1	
		66 remove ${SERVICE4} >/dev/null 2>&1	
		## The below shoudn't be necessary if the 66 remove command was succesfull
		## Cleans out problematic services which didn't parse properly
			rm -rf /etc/66/conf/${SERVICE1}
			rm -rf /var/lib/66/system/service/svc/${SERVICE1}
			rm -rf /var/lib/66/system/service/svc/${SERVICE1}-log
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE1}
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE1}-log

			rm -rf /etc/66/conf/${SERVICE2}
			rm -rf /var/lib/66/system/service/svc/${SERVICE2}
			rm -rf /var/lib/66/system/service/svc/${SERVICE2}-log
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE2}
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE2}-log

			rm -rf /etc/66/conf/${SERVICE3}
			rm -rf /var/lib/66/system/service/svc/${SERVICE3}
			rm -rf /var/lib/66/system/service/svc/${SERVICE3}-log
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE3}
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE3}-log

			rm -rf /etc/66/conf/${SERVICE4}
			rm -rf /var/lib/66/system/service/svc/${SERVICE4}
			rm -rf /var/lib/66/system/service/svc/${SERVICE4}-log
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE4}
			rm -rf /var/lib/66/system/.resolve/service/${SERVICE4}-log

	########## INSTANTIATED GLOBAL SERVICES ##########
		## This should clean-out problematic frontends from older formats
		if [ -e /etc/66/service/${INSTANTIATED_SERVICE1} ]; then
			echo "Purging frontend /etc/66/service/${INSTANTIATED_SERVICE1}"; 
			rm -rf /etc/66/service/${INSTANTIATED_SERVICE1}
		fi
		if [ -e /etc/66/service/${INSTANTIATED_SERVICE2} ]; then
			echo "Purging frontend /etc/66/service/${INSTANTIATED_SERVICE2}"; 
			rm -rf /etc/66/service/${INSTANTIATED_SERVICE2}
		fi
		if [ -e /etc/66/service/${INSTANTIATED_SERVICE3} ]; then
			echo "Purging frontend /etc/66/service/${INSTANTIATED_SERVICE3}"; 
			rm -rf /etc/66/service/${INSTANTIATED_SERVICE3}
		fi
		if [ -e /etc/66/service/${INSTANTIATED_SERVICE4} ]; then
			echo "Purging frontend /etc/66/service/${INSTANTIATED_SERVICE4}"; 
			rm -rf /etc/66/service/${INSTANTIATED_SERVICE4}
		fi
		## This should cleanly remove the actual services
		## Errors can be ignored as we are using placeholders
		getent passwd $(basename -a /home/*) | awk -F: '{print $1}' | while read user; do 
		66 remove ${INSTANTIATED_SERVICE1}${user} >/dev/null 2>&1
		66 remove ${INSTANTIATED_SERVICE2}${user} >/dev/null 2>&1
		66 remove ${INSTANTIATED_SERVICE3}${user} >/dev/null 2>&1
		66 remove ${INSTANTIATED_SERVICE4}${user} >/dev/null 2>&1
		done
		## The below shoudn't be necessary if the 66 remove command was succesfull			
			rm -rf /etc/66/conf/${INSTANTIATED_SERVICE1}*
			rm -rf /var/lib/66/system/service/svc/${INSTANTIATED_SERVICE1}*
			rm -rf /var/lib/66/system/.resolve/service/${INSTANTIATED_SERVICE1}*
			rm -rf /etc/66/conf/${INSTANTIATED_SERVICE2}*
			rm -rf /var/lib/66/system/service/svc/${INSTANTIATED_SERVICE2}*
			rm -rf /var/lib/66/system/.resolve/service/${INSTANTIATED_SERVICE2}*
			rm -rf /etc/66/conf/${INSTANTIATED_SERVICE3}*
			rm -rf /var/lib/66/system/service/svc/${INSTANTIATED_SERVICE3}*
			rm -rf /var/lib/66/system/.resolve/service/${INSTANTIATED_SERVICE3}*
			rm -rf /etc/66/conf/${INSTANTIATED_SERVICE4}*
			rm -rf /var/lib/66/system/service/svc/${INSTANTIATED_SERVICE4}*
			rm -rf /var/lib/66/system/.resolve/service/${INSTANTIATED_SERVICE4}*


	########## USER SERVICES ##########
		## This should clean-out problematic frontends from older formats
		if [ -e /etc/66/service/user/${USER_SERVICE1} ]; then
			echo "Purging frontend /etc/66/service/user/${USER_SERVICE1}"
			rm -rf /etc/66/service/user/${USER_SERVICE1}
		fi
		if [ -e /etc/66/service/user/${USER_SERVICE2} ]; then
			echo "Purging frontend /etc/66/service/user/${USER_SERVICE2}"
			rm -rf /etc/66/service/user/${USER_SERVICE2}
		fi
		if [ -e /etc/66/service/user/${USER_SERVICE3} ]; then
			echo "Purging frontend /etc/66/service/user/${USER_SERVICE3}"
			rm -rf /etc/66/service/user/${USER_SERVICE3}
		fi
		if [ -e /etc/66/service/user/${USER_SERVICE4} ]; then
			echo "Purging frontend/etc/66/service/user/${USER_SERVICE4}"
			rm -rf /etc/66/service/user/${USER_SERVICE4}
		fi
	########## INSTANTIATED USER SERVICES ##########
		## This should clean-out problematic frontends from older formats
		if [ -e /etc/66/service/user/${INSTANTIATED_USER_SERVICE1} ]; then
			echo "Purging frontend /etc/66/service/user/${INSTANTIATED_USER_SERVICE1}"
			rm -rf /etc/66/service/user/${INSTANTIATED_USER_SERVICE1}
		fi
		if [ -e /etc/66/service/user/${INSTANTIATED_USER_SERVICE2} ]; then
			echo "Purging frontend /etc/66/service/user/${INSTANTIATED_USER_SERVICE2}"
			rm -rf /etc/66/service/user/${INSTANTIATED_USER_SERVICE2}
		fi
		if [ -e /etc/66/service/user/${INSTANTIATED_USER_SERVICE3} ]; then
			echo "Purging frontend /etc/66/service/user/${INSTANTIATED_USER_SERVICE3}"
			rm -rf /etc/66/service/user/${INSTANTIATED_USER_SERVICE3}
		fi
		if [ -e /etc/66/service/user/${INSTANTIATED_USER_SERVICE4} ]; then
			echo "Purging frontend /etc/66/service/user/${INSTANTIATED_USER_SERVICE4}"
			rm -rf /etc/66/service/user/${INSTANTIATED_USER_SERVICE4}
		fi
		
	##### THIS SECTION CREATES A BACKUP OF SERVICES IN USERS HOME FOLDERS BEFORE PURGING #####
		getent passwd $(basename -a /home/*) | awk -F: '{print $1}' | while read user; do 
		USER66HOMEDIR="$(/usr/lib/execline/bin/homeof ${user})/.66"
		echo "Backing Up ${USER66HOMEDIR} to ${USER66HOMEDIR}-backup-${TIMESTAMP}"
		runuser -u ${user} -- cp -r "${USER66HOMEDIR}" "${USER66HOMEDIR}-backup-${TIMESTAMP}"
		
		## This should cleanly remove the actual services
		## Errors can be ignored as we are using placeholders
		runuser -u ${user} -- 66 remove ${USER_SERVICE1} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${USER_SERVICE2} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${USER_SERVICE3} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${USER_SERVICE4} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${INSTANTIATED_USER_SERVICE1}${user} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${INSTANTIATED_USER_SERVICE2}${user} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${INSTANTIATED_USER_SERVICE3}${user} >/dev/null 2>&1
		runuser -u ${user} -- 66 remove ${INSTANTIATED_USER_SERVICE4}${user} >/dev/null 2>&1
		## The below shoudn't be necessary if the 66 remove commands were succesfull			
			rm -rf ${USER66HOMEDIR}/conf/${USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/conf/${USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/conf/${USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/conf/${USER_SERVICE4}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${USER_SERVICE4}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${USER_SERVICE4}*
			rm -rf ${USER66HOMEDIR}/conf/${INSTANTIATED_USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${INSTANTIATED_USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${INSTANTIATED_USER_SERVICE1}*
			rm -rf ${USER66HOMEDIR}/conf/${INSTANTIATED_USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${INSTANTIATED_USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${INSTANTIATED_USER_SERVICE2}*
			rm -rf ${USER66HOMEDIR}/conf/${INSTANTIATED_USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${INSTANTIATED_USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${INSTANTIATED_USER_SERVICE3}*
			rm -rf ${USER66HOMEDIR}/conf/${INSTANTIATED_USER_SERVICE4}*
			rm -rf ${USER66HOMEDIR}/system/service/svc/${INSTANTIATED_USER_SERVICE4}*
			rm -rf ${USER66HOMEDIR}/system/.resolve/service/${INSTANTIATED_USER_SERVICE4}*
		done
	;;
	
    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
    ;;

    *)
        echo "postrm called with unknown argument '$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0
