#!/bin/sh
#
# Uninstall AntiVir for UNIX
#
# Copyright (c) 2010 AVIRA GmbH
#

PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
OS=`uname | env LANG=C LC_ALL=C LC_CTYPE=C tr '[:upper:]' '[:lower:]'`

AVDIR="/usr/lib/AntiVir"
BACKUP_NAME="avira"
BACKUPDIR="/var/backups/${BACKUP_NAME}"

FORCE="0"
BACKUP="0"
REMOVE_KEY_FILE="1"
REMOVE_RE="1"
KEY_FOUND="0"
CONF_FOUND="0"
LOG_FOUND="0"
CRON_FOUND="0"
ERR_SCRIPT="1"
NO_SAVAPI_UNINSTALL="1"
OTHER_PRODS_INSTALLED="1"
REMOVE_DAZUKOFS="0"

AVLINFO_LOCATION=""
INSTALLED_PRODUCTS=""
SMC_PLUGIN=""
START_STOP_SCRIPT=""
SET_LIBRARY_PATH=""
RCSCRIPTS=""

case "${OS}" in
	sunos)
		PROCCMD="ps -ef -o pid,comm"
		ECHO="echo_sun"
		RM_DIR="-r"
		SET_LIBRARY_PATH="env LD_LIBRARY_PATH="/usr/local/lib:/usr/lib/AntiVir/agent""
		;;
	*)
		PROCCMD="ps axw -o pid,command"
		ECHO="echo"
		RM_DIR="-r"
		;;
esac


remove()
{
	REMOVE_MODE="${1}"
        REMOVE="${2}"
        REMOVE_DIR=""

        if [ ${REMOVE_MODE} = "--dir" ]
        then
                REMOVE_DIR="$RM_DIR"
        fi

	${ECHO} -n "remove ${REMOVE} ... "
	rm ${REMOVE_DIR} ${REMOVE}
	if [ ${?} -eq 0 ]
	then
		${ECHO} "done"
	else
		${ECHO} "failed"
	fi
}


echo_sun()
{
	# this script comes from the man page of echo(1) on Solaris 9
	
	if [ "X$1" = "X-n" ]
	then
		shift
		printf "%s" "$*"
	else
		printf "%s\n" "$*"
	fi
}


detect_prod()
{
	if [ -x ${AVDIR}/avguard.bin -o -x ${AVDIR}/guard/avguard.bin ]
	then
		INSTALLED_PRODUCTS="Guard"
	fi

	if [ -x ${AVDIR}/savapi3_oem/savapi ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS Savapi3"
	fi

	if [ -x ${AVDIR}/savapi -o -x ${AVDIR}/guard/savapi -o -x ${AVDIR}/mailgate/savapi -o -x ${AVDIR}/webgate/savapi ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS Scanner"
	fi

	if [ -x ${AVDIR}/avmailgate.bin -o -x ${AVDIR}/mailgate/avmailgate.bin ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS Mailgate"
	fi

	if [ -x ${AVDIR}/avwebgate.bin -o -x ${AVDIR}/webgate/avwebgate.bin ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS Webgate"
	fi

	if [ -x ${AVDIR}/ium/ium ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS IUM"
	fi

	if [ -x ${AVDIR}/agent/agent ]
	then
		INSTALLED_PRODUCTS="$INSTALLED_PRODUCTS Agent"
	fi
}


root_check()
{
	ID=`id`
	CUT=`${ECHO} $ID | sed -e 's,uid=0(,,'`
	if [ "$CUT" = "$ID" ]
	then
		CUT=`${ECHO} $ID | sed -e 's,\euid=0(,,'`
		if [ "$CUT" = "$ID" ]
		then
			${ECHO} " "
			${ECHO} "This script must be run as root."
			${ECHO} " "
			exit 2
		fi
	fi
}


check_if_product_installed()
{
	if [ "${PRODUCT}" = "all" ]
	then
		return 0
	fi

	TEMP1="`${ECHO} ${INSTALLED_PRODUCTS} | env LANG=C LC_ALL=C LC_CTYPE=C tr '[:upper:]' '[:lower:]'`"

	${ECHO} ${TEMP1} | grep ${PRODUCT} > /dev/null 2>&1
	if [ ${?} -ne 0 ]
	then
		${ECHO} "Invalid product specified: ${PRODUCT}"
		${ECHO} " "
		${ECHO} "Please run \"uninstall\" to view which products are installed"
		exit 3
	fi
}


get_ium_http_root()
{
	if [ -f "/etc/avira/ium.conf" ]
	then
		DIR_IUM_HTTPROOT_DEFAULT="`grep "http_server_root value" /etc/avira/ium.conf | sed -e 's,.*<http_server_root value\=\",,' -e 's,\"\ \/>.*,,'`"
	fi
}


detect_prod


if [ "$#" -eq 0 ]
then
	${ECHO} "uninstall [--product=productname] [--no-interactive] [--inf=inf-file]"
	${ECHO} "          [--force] [--skip] [--version] [--help]"
	${ECHO} " "
	${ECHO} "installed products:"
	
	if [ -z "${INSTALLED_PRODUCTS}" ]
	then
		${ECHO} "   no installed product found"
		exit 4
	else
		for ITEM in ${INSTALLED_PRODUCTS}
		do
			${ECHO} "   ${ITEM}"
		done
		exit 0
	fi
fi


# check the given parameters
for PARAM in "$@"
do
	case "${PARAM}" in
		--product=*)
			TEMP="`${ECHO} "${PARAM}" | sed -e 's,^--product=,,'`"
			PRODUCT="`${ECHO} "${TEMP}" | env LANG=C LC_ALL=C LC_CTYPE=C tr '[:upper:]' '[:lower:]'`"
			;;

		--no-interactive)
			BACKUP_CONF_FILES="n"
			BACKUP_LOG_FILES="n"
			REMOVE_CRONJOB="y"
			BACKUP_KEY_FILES="n"
			REMOVE_KEY_FILE_ANYWAY="n"
			REMOVE_REJECTED="y"
			REMOVE_HTTPROOT="y"
			FORCE_YES="y"
			SKIP="n"
			;;

		 --inf=*)
			TEMP="`${ECHO} "${PARAM}" | sed -e 's,^--inf=,,'`"
			INF_FILE="${TEMP}"

			if [ -f "${INF_FILE}" ]
			then
# 				source inf_file for no interactive mode
				. ${INF_FILE}
			else
				${ECHO} "${INF_FILE} not found"
				exit 5
			fi
			;;

		--force)
			FORCE="1"
			;;

		--skip)
			SKIP="y"
			;;

		--help|-help|help|-h)
			if [ -f ./README.uninstall ]
			then
				less ./README.uninstall
				exit 0

			elif [ -f ${AVDIR}/guard/README.uninstall ]
			then
				less ${AVDIR}/guard/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/mailgate/README.uninstall ]
			then
				less ${AVDIR}/mailgate/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/webgate/README.uninstall ]
			then
				less ${AVDIR}/webgate/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/ium/README.uninstall ]
			then
				less ${AVDIR}/ium/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/agent/README.uninstall ]
			then
				less ${AVDIR}/agent/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/savapi3_oem/README.uninstall ]
			then
				less ${AVDIR}/savapi3_oem/README.uninstall
				exit 0
			
			elif [ -f ${AVDIR}/README.uninstall ]
			then
				less ${AVDIR}/README.uninstall
				exit 0
			else
				${ECHO} "README.uninstall not found"
				exit 6
			fi
			;;

		--version)
			${ECHO} "product:            Avira Product Uninstall"
			${ECHO} "product version:    2.0.0"
			exit 0
			;;

		*)
			${ECHO} "${PARAM} unknown option, read README for the available options"
			exit 1
			;;
	esac
done


check_if_product_installed


if [ -f ${AVDIR}/${PRODUCT}/file_list -a -f ${AVDIR}/${PRODUCT}/dir_list ]
then
	. ${AVDIR}/${PRODUCT}/file_list
	. ${AVDIR}/${PRODUCT}/dir_list

elif [ -f ${AVDIR}/guard/file_list -a -f ${AVDIR}/guard/dir_list ]
then
	. ${AVDIR}/guard/file_list
	. ${AVDIR}/guard/dir_list

elif [ -f ${AVDIR}/mailgate/file_list -a -f ${AVDIR}/mailgate/dir_list ]
then
	. ${AVDIR}/mailgate/file_list
	. ${AVDIR}/mailgate/dir_list

elif [ -f ${AVDIR}/webgate/file_list -a -f ${AVDIR}/webgate/dir_list ]
then
	. ${AVDIR}/webgate/file_list
	. ${AVDIR}/webgate/dir_list

elif [ -f ${AVDIR}/ium/file_list -a -f ${AVDIR}/ium/dir_list ]
then
	. ${AVDIR}/ium/file_list
	. ${AVDIR}/ium/dir_list

elif [ -f ${AVDIR}/agent/file_list -a -f ${AVDIR}/agent/dir_list ]
then
	. ${AVDIR}/agent/file_list
	. ${AVDIR}/agent/dir_list

elif [ -f ${AVDIR}/savapi3_oem/file_list -a -f ${AVDIR}/savapi3_oem/dir_list ]
then
	. ${AVDIR}/savapi3_oem/file_list
	. ${AVDIR}/savapi3_oem/dir_list

elif [ -f ${AVDIR}/file_list -a -f ${AVDIR}/dir_list ]
then
	. ${AVDIR}/file_list
	. ${AVDIR}/dir_list

elif [ -f ./etc/file_list -a -f ./etc/dir_list ]
then
	. ./etc/file_list
	. ./etc/dir_list

else
	${ECHO} " "
	${ECHO} "file and dir list are not available"
	exit 7
fi


root_check


# set variables for the products
if [ -n "${PRODUCT}" ]
then
	case "${PRODUCT}" in
		agent)
			ENTER_PATH="/usr/lib/AntiVir/smc-registry/hkey_local_machine/software/h+bedv/enterprise management console"
			FULLPRODUCTNAME="Avira SMC Agent"
			DAEMONNAME="/usr/lib/AntiVir/agent/${PRODUCT}"
			FILE_LIST="${FILE_AGENT}"
			DIR_LIST="${DIR_AGENT}"
			CONF_LIST="${FILE_AGENT_CONF}"
			LOG_LIST="${FILE_AGENT_LOG}"
			NO_SAVAPI_UNINSTALL="0"
			CRONJOB="Agent agent"
			INSTALL_LIST="$AVDIR/agent/install_list_agent"
			SSS="$AVDIR/agent/smc-agent"
			KEY_DIR="${AVDIR}/agent"
			if [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/guard/avguard.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/savapi3_oem/savapi ]
			then
				CRONJOB="Agent agent"
				FILE_LIST="${FILE_AGENT} ${FILE_AVUPDATE}"
				DIR_LIST="${DIR_AGENT} ${DIR_SHARED_AGENT} ${DIR_AVUPDATE} ${DIR_SHARED}"
				CONF_LIST="${FILE_AGENT_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
				LOG_LIST="${FILE_AGENT_LOG} ${FILE_AVUPDATE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			;;

		savapi3)
			FULLPRODUCTNAME="Avira AntiVir Savapi3"
			DAEMONNAME="/usr/lib/AntiVir/savapi3_oem/savapi"
			FILE_LIST="${FILE_SAVAPI3}"
			DIR_LIST="${DIR_SAVAPI3}"
			CONF_LIST="${FILE_SAVAPI3_CONF}"
			LOG_LIST="${FILE_SAVAPI3_LOG}"
			INSTALL_LIST="$AVDIR/savapi3_oem/install_list_savapi3_oem"
			SSS="$AVDIR/savapi3_oem/savapi"
			SSS_CONFIG="/usr/lib/AntiVir/savapi3_oem/savapi3.conf"
			KEY_DIR="${AVDIR}/savapi3_oem"
			if [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/guard/avguard.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent ]
			then
				FILE_LIST="${FILE_SAVAPI3}"
				DIR_LIST="${DIR_SAVAPI3} ${DIR_SHARED}"
				CONF_LIST="${FILE_SAVAPI3_CONF}"
				LOG_LIST=""
				OTHER_PRODS_INSTALLED="0"
			fi
			;;

		scanner)
			FULLPRODUCTNAME="Avira AntiVir Savapi3"
			DAEMONNAME="/usr/lib/AntiVir/savapi savapi"
			START_STOP_SCRIPT=""
			FILE_LIST="${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE}"
			DIR_LIST="${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE}"
			CONF_LIST="${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} /etc/cron.d/avira_updater"
			LOG_LIST="${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG}"
			CRONJOB="Scanner scanner"
			SSS="/usr/lib/AntiVir/savapi"
			KEY_DIR="${AVDIR}"
			if [ -x ${AVDIR}/avguard.bin -o -x ${AVDIR}/avwebgate.bin -o -x ${AVDIR}/avmailgate.bin -o -x ${AVDIR}/guard/avguard.bin ]
			then
				${ECHO} "Savapi3 is a necessary component for the installed products and can not be"
				${ECHO} "uninstalled. This component is automatically removed when uninstalling the"
				${ECHO} "Savapi3 based products."
				exit 9
			fi
			;;

		mailgate)
			FULLPRODUCTNAME="Avira AntiVir MailGate"
			DAEMONNAME="${AVDIR}/av${PRODUCT}.bin ${AVDIR}/gui/bin/avmg_stats ${AVDIR}/savapi"	
			DAEMONNAME_CONFIG="/etc/avmailgate-scanner.conf"
			SMC_PLUGIN="libuxmgt.so"
			FILE_LIST="${FILE_MAILGATE}"
			DIR_LIST="${DIR_MAILGATE}"
			CONF_LIST="${FILE_MAILGATE_CONF}"
			LOG_LIST="${FILE_MAILGATE_LOG}"
			PRODUCT_CONF_FILE="/etc/av${PRODUCT}.conf"
			CRONJOB="Mailgate mailgate"
			SSS="$AVDIR/avmailgate"
			KEY_DIR="${AVDIR}"
			if [ -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/guard/avguard.bin ]
			then
				CRONJOB="Mailgate mailgate Scanner scanner"
				FILE_LIST="${FILE_MAILGATE} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_MAILGATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_MAILGATE_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF}"
				LOG_LIST="${FILE_MAILGATE_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"

			elif [ ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent -a -x ${AVDIR}/guard/avguard.bin ]
			then
				CRONJOB="Mailgate mailgate Scanner scanner"
				FILE_LIST="${FILE_MAILGATE} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_MAILGATE} ${DIR_AVUPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_MAILGATE_CONF}"
				LOG_LIST="${FILE_MAILGATE_LOG}"
				OTHER_PRODS_INSTALLED="1"
				NO_SAVAPI_UNINSTALL="0"

			elif [ ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/guard/avguard.bin -a ! -x ${AVDIR}/savapi3_oem/savapi ]
			then
				CRONJOB="Mailgate mailgate Scanner scanner"
				FILE_LIST="${FILE_MAILGATE} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_MAILGATE} ${DIR_AVUPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_AGENT} ${DIR_SHARED_TEMPLATES} ${DIR_SHARED}"
				CONF_LIST="${FILE_MAILGATE_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
				LOG_LIST="${FILE_MAILGATE_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG} ${FILE_AVUPDATE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			;;

		guard)
			FULLPRODUCTNAME="Avira AntiVir Guard"
			if [ -f "$AVDIR/avguard.bin.obsolete" -o ! -f "$AVDIR/avguard.bin" ]
			then
				DAEMONNAME="${AVDIR}/guard/avguard-scanner ${AVDIR}/guard/avsavapi-super  ${AVDIR}/guard/avguard-ondemand-mgmt ${AVDIR}/guard/avguard.bin ${AVDIR}/guard/gui/bin/avgu_stats ${AVDIR}/guard/savapi"
			else
				DAEMONNAME="${AVDIR}/avguard-scanner ${AVDIR}/avsavapi-super  ${AVDIR}/avguard-ondemand-mgmt ${AVDIR}/avguard.bin ${AVDIR}/gui/bin/avgu_stats ${AVDIR}/savapi"
			fi
			DAEMONNAME_CONFIG="/etc/avira/avguard-scanner.conf"
			SMC_PLUGIN="libuxsrv.so libuxwks.so"
			FILE_LIST="${FILE_GUARD}"
			DIR_LIST="${DIR_GUARD}"
			if [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/agent/agent ]
			then
				DIR_LIST="${DIR_GUARD} ${AVDIR}/agent"
			fi
			CONF_LIST="${FILE_GUARD_CONF}"
			LOG_LIST="${FILE_GUARD_LOG}"
			PRODUCT_CONF_FILE="/etc/avira/av${PRODUCT}.conf"
			CRONJOB="guard"
			if [ ! -f "$AVDIR/avguard.bin" -o -f "$AVDIR/avguard.bin.obsolete" ]
			then
				CRONJOB="guard scanner"
			fi
			REMOVE_DAZUKOFS="1"
			INSTALL_LIST="$AVDIR/guard/install_list_guard"
			SSS="$AVDIR/avguard $AVDIR/guard/avguard"
			KEY_DIR="${AVDIR}"
			if [ -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/ium/ium ]
			then
				CRONJOB="Guard guard Scanner scanner"
				FILE_LIST="${FILE_GUARD} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_GUARD} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_GUARD_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF}"
				LOG_LIST="${FILE_GUARD_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			if [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/savapi3_oem/savapi ]
			then
				CRONJOB="Guard guard Scanner scanner"
				FILE_LIST="${FILE_GUARD} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_GUARD} ${DIR_UPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_AGENT} ${DIR_SHARED_TEMPLATES} ${DIR_SHARED}"
				CONF_LIST="${FILE_GUARD_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
				LOG_LIST="${FILE_GUARD_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG} ${FILE_AVUPDATE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			;;
	
		webgate)
			FULLPRODUCTNAME="Avira AntiVir WebGate"
			DAEMONNAME="${AVDIR}/av${PRODUCT}.bin ${AVDIR}/savapi"
			DAEMONNAME_CONFIG="/etc/avwebgate-scanner.conf"
			SMC_PLUGIN="libuxwgt.so"
			FILE_LIST="${FILE_WEBGATE}"
			DIR_LIST="${DIR_WEBGATE}"
			CONF_LIST="${FILE_WEBGATE_CONF}"
			LOG_LIST="${FILE_WEBGATE_LOG}"
			PRODUCT_CONF_FILE="/etc/av${PRODUCT}.conf"
			CRONJOB="Webgate webgate"
			SSS="$AVDIR/avwebgate"
			KEY_DIR="${AVDIR}"
			if [ -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/guard/avguard.bin ]
			then
				CRONJOB="Webgate webgate"
				FILE_LIST="${FILE_WEBGATE} ${FILE_SAVAPI} ${FILE_ENGINE} ${FILE_VDF} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_WEBGATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_WEBGATE_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF}"
				LOG_LIST="${FILE_WEBGATE_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"

			elif [ ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent -a -x ${AVDIR}/guard/avguard.bin ]
			then
				CRONJOB="Webgate webgate Scanner scanner"
				FILE_LIST="${FILE_WEBGATE} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_WEBGATE} ${DIR_UPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_WEBGATE_CONF}"
				LOG_LIST="${FILE_WEBGATE_LOG}"
				OTHER_PRODS_INSTALLED="1"
				NO_SAVAPI_UNINSTALL="0"

			elif [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/ium/ium -a ! -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/guard/avguard.bin -a ! -x ${AVDIR}/savapi3_oem/savapi ]
			then
				CRONJOB="Webgate webgate Scanner scanner"
				FILE_LIST="${FILE_WEBGATE} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_WEBGATE} ${DIR_UPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_AGENT} ${DIR_SHARED_TEMPLATES} ${DIR_SHARED}"
				CONF_LIST="${FILE_WEBGATE_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
				LOG_LIST="${FILE_WEBGATE_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG} ${FILE_AVUPDATE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			;;

		ium)
			FULLPRODUCTNAME="Avira IUM"
			DAEMONNAME="${AVDIR}/ium/${PRODUCT}"
			FILE_LIST="${FILE_IUM}"
			DIR_LIST="${DIR_IUM}"
			CONF_LIST="${FILE_IUM_CONF}"
			LOG_LIST="${FILE_IUM_LOG}"
			CRONJOB="IUM ium"
			INSTALL_LIST="$AVDIR/ium/install_list_ium"
			SSS="$AVDIR/ium/avium"
			KEY_DIR="${AVDIR}/ium"
			get_ium_http_root
			if [ -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/guard/avguard.bin ]
			then
				CRONJOB="IUM ium"
				FILE_LIST="${FILE_IUM} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_IUM} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_TEMPLATES}"
				CONF_LIST="${FILE_IUM_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF}"
				LOG_LIST="${FILE_IUM_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			if [ ! -x ${AVDIR}/avmailgate.bin -a ! -x ${AVDIR}/avguard.bin -a ! -x ${AVDIR}/avwebgate.bin -a ! -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/guard/avguard.bin -a ! -x ${AVDIR}/savapi3_oem/savapi ]
			then
				CRONJOB="IUM ium"
				FILE_LIST="${FILE_IUM} ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
				DIR_LIST="${DIR_IUM} ${DIR_UPDATE} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_SHARED_SMC} ${DIR_SHARED_AGENT} ${DIR_SHARED_TEMPLATES} ${DIR_SHARED}"
				CONF_LIST="${FILE_IUM_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
				LOG_LIST="${FILE_IUM_LOG} ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG} ${FILE_AVUPDATE_LOG}"
				OTHER_PRODS_INSTALLED="0"
				NO_SAVAPI_UNINSTALL="0"
			fi
			;;
	
		all)
			get_ium_http_root
			KEY_DIR="${AVDIR}"
			FULLPRODUCTNAME="All installed Products"
			DAEMONNAME="${AVDIR}/savapi ${AVDIR}/savapi3_oem/savapi ${AVDIR}/avguard.bin ${AVDIR}/gui/bin/avgu_stats ${AVDIR}/guard/avguard.bin ${AVDIR}/guard/gui/bin/avgu_stats ${AVDIR}/avmailgate.bin ${AVDIR}/gui/bin/avmg_stats ${AVDIR}/avwebgate.bin ${AVDIR}/agent/agent ${AVDIR}/ium/ium"
			INSTALL_LIST="$AVDIR/guard/install_list_guard $AVDIR/ium/install_list_ium $AVDIR/agent/install_list_agent"
			SSS="$AVDIR/agent/smc-agent $AVDIR/ium/avium $AVDIR/avmailgate $AVDIR/avwebgate $AVDIR/avguard $AVDIR/guard/avguard"
			FILE_LIST="${FILE_AGENT} ${FILE_MAILGATE} ${FILE_WEBGATE} ${FILE_GUARD} ${FILE_IUM} \
				   ${FILE_SAVAPI} ${FILE_VDF} ${FILE_ENGINE} ${FILE_AVUPDATE} ${FILE_SHARED_SMC}"
			DIR_LIST="${DIR_AGENT} ${DIR_MAILGATE} ${DIR_WEBGATE} ${DIR_UPDATE} \
				  ${DIR_IUM} ${DIR_SAVAPI} ${DIR_VDF} ${DIR_ENGINE} ${DIR_GUARD} ${DIR_SHARED_SMC} ${DIR_SHARED_AGENT} 
				  ${DIR_SHARED_TEMPLATES} ${DIR_SHARED}"
			CONF_LIST="${FILE_AGENT_CONF} ${FILE_MAILGATE_CONF} ${FILE_WEBGATE_CONF} ${FILE_GUARD_CONF} \
				   ${FILE_IUM_CONF} ${FILE_SAVAPI_CONF} ${FILE_VDF_CONF} ${FILE_ENGINE_CONF} ${FILE_AVUPDATE_CONF} /etc/cron.d/avira_updater"
			LOG_LIST="${FILE_AGENT_LOG} ${FILE_MAILGATE_LOG} ${FILE_WEBGATE_LOG} ${FILE_GUARD_LOG} ${FILE_IUM_LOG} \
				  ${FILE_SAVAPI_LOG} ${FILE_VDF_LOG} ${FILE_ENGINE_LOG} ${FILE_AVUPDATE_LOG}"	
			PRODUCT_CONF_FILE="/etc/avmailgate.conf /etc/avwebgate.conf /etc/avira/avguard.conf"
			OTHER_PRODS_INSTALLED="0"
			NO_SAVAPI_UNINSTALL="0"
			REMOVE_DAZUKOFS="1"
			CRONJOB="Agent agent IUM ium Maiglate mailgate Guard guard Webgate webgate Scanner scanner"
			;;
	
		*)
			${ECHO} "Your specified product does not exist. Please read the README or --help for more informations."
			exit 8
			;;
	esac
else
	${ECHO} "You have to set --product to use this script"
	exit 8
fi

getPROCESSLIST()
{
	PROCESSLIST=""
	for PROC in $DAEMONNAME
	do
		echo $PROC | grep savapi > /dev/null 2>&1
		if [ "$?" -eq "0" ]
		then
			PROC="$PROC --config=$DAEMONNAME_CONFIG"
		fi

		for PID in `$PROCCMD | grep "$PROC" | grep -v uninstall | grep -v grep | awk -F' ' '{ print $1 }'`
		do
			PROCESSLIST="$PROCESSLIST $PID"
		done
	done
}

getPROCESSLIST_withnames()
{
	PROCESSLIST=""
	TMP_PROCESSLIST=""
	for PROC in $DAEMONNAME
	do
		echo $PROC | grep savapi > /dev/null 2>&1
		if [ "$?" -eq "0" ]
		then
			PROC="$PROC --config=$DAEMONNAME_CONFIG"
		fi

		for PID in `$PROCCMD | grep "$PROC" | grep -v uninstall | grep -v grep | awk -F' ' '{ print $1 }'`
		do
			TMP_PROCESSLIST="$TMP_PROCESSLIST $PID"
		done
	done

	PROCESSLIST="`for i in $TMP_PROCESSLIST; do echo $i; done | sort | uniq`"
}

stop_running_processes()
{
# 	check if there are running procudt processes
	${ECHO} " "
	${ECHO} -n "Check for running processes ... "

	PROCESS_FOUND="0"

	getPROCESSLIST
	if [ ! -z "${PROCESSLIST}" ]
	then
		PROCESS_FOUND="1"
	fi

# 	if there are running processes, check which start/stop script exists(old/new) and try to stop the running processes
	if [ "${PROCESS_FOUND}" -eq "0" ]
	then
		${ECHO} "no processes found"
	else
		${ECHO} "processes found"

		if [ "${PRODUCT}" = "savapi3" ]
		then
			for SSS_2_CHECK in ${SSS}
			do
				if [ -f "${SSS_2_CHECK}" ]
				then
					${ECHO} -n "      stop running processes ... "
					${SSS_2_CHECK} --config=${SSS_CONFIG} --stop > /dev/null 2>&1
					${ECHO} "done"
				fi
			done
		else
			for SSS_2_CHECK in ${SSS}
			do
				if [ -f "${SSS_2_CHECK}" ]
				then
					${ECHO} -n "      stop running processes with the start/stop script ... "
					/bin/sh ${SSS_2_CHECK} stop > /dev/null 2>&1
					${ECHO} "done"
				fi
			done
		fi

		PROCESS_FOUND="0"
		${ECHO} -n "Check for remaining processes ..."

		getPROCESSLIST_withnames
		if [ ! -z "${PROCESSLIST}" ]
		then
			PROCESS_FOUND="1"
		fi
	
		if [ "${PROCESS_FOUND}" -eq "0" ]
		then
			${ECHO} "no processes found"
		else
			${ECHO} "processes found"
			${ECHO} " "
			${ECHO} "It was not possible to stop all relevant product processes."
			${ECHO} "Please shutdown all processes before you perform a new uninstall."
			${ECHO} " "
			${ECHO} "The following processes were found:"
			for RUNNING_PROCESSES in $PROCESSLIST
			do
				$PROCCMD | grep $RUNNING_PROCESSES | grep -v uninstall | grep -v grep
			done

			${ECHO} " "
			${ECHO} -n "Do you like to continue with the uninstall, even though there are detected processes? [n] "
			INPUT=${SKIP}

			if [ -z "${INPUT}" ]
			then
				read INPUT
			else
				${ECHO} "${INPUT}"
			fi

			case ${INPUT} in
					y*|Y*|j*|J*)
						return 0
						;;
			esac

			exit 10

			
		fi
	fi
}


unregister_agent()
{
	if [ "${PRODUCT}" != "agent" ]
	then
		return 0
	fi

	${ECHO} -n "unresgister agent from SMC ... "
	$AVDIR/agent/agent -u > /dev/null 2>&1
	${ECHO} "done"
}


make_backupdir()
{
	${ECHO} -n "   Looking for existing backupdir ..."

	if [ -d "${BACKUPDIR}" ]
	then
		${ECHO} " found"
	else
		${ECHO} " not found"
		${ECHO} "      -> mkdir backupdir: "${BACKUPDIR}""
		mkdir -p "${BACKUPDIR}"
		ERR=$?
		if [ "${ERR}" -eq 0 ]
		then
			return 0
		else
			return 1
		fi
	fi
}


handle_license_file()
{
	if [ "${PRODUCT}" = "guard" ]
	then
		if [ -x "${AVDIR}/avguard.bin" ]
		then
			KEY_DIR="${AVDIR}"

		elif [ -x "${AVDIR}/guard/avguard.bin" ]
		then
			KEY_DIR="${AVDIR}/guard"
		fi
	fi

	${ECHO} " "
	${ECHO} -n "Looking for existing key-files ..."

	if [ "${PRODUCT}" = "all" ]
	then
		for ITEM in `find ${AVDIR} -type f | sed -e 's,\/usr\/lib\/AntiVir\/,,' | grep -i "\.key$"`
		do
			if [ -f "${AVDIR}/${ITEM}" ]
			then
				KEY_FOUND=`expr ${KEY_FOUND} + 1`
				KEY_FILES="$KEY_FILES $ITEM"
			fi
		done
	else
		for ITEM in `ls ${KEY_DIR} | grep -i "\.key$"`
		do
			if [ -f "${KEY_DIR}/${ITEM}" ]
			then
				KEY_FOUND=`expr ${KEY_FOUND} + 1`
				KEY_FILES="$KEY_FILES $ITEM"
			fi
		done
	fi

	if [ "${KEY_FOUND}" -eq 0 ]
	then
		${ECHO} " no key-file found"
	else
		${ECHO} " ${KEY_FOUND} key-file found"
		if [ $OTHER_PRODS_INSTALLED -eq 1 -a ${PRODUCT} != "all" -a ${FORCE} -eq 0 ]
		then
			${ECHO} -n "   Other products are installed, would you like to remove the key-file anyway? [n] "
			INPUT=${REMOVE_KEY_FILE_ANYWAY}

			if [ -z "${INPUT}" ]
			then
				read INPUT
			else
				${ECHO} "${INPUT}"
			fi

			REMOVE_KEY_FILE=0
			case ${INPUT} in
					y*|Y*|j*|J*)
					REMOVE_KEY_FILE=1
					;;
			esac
		fi

		if [ "${PRODUCT}" =  "guard" -a "${REMOVE_KEY_FILE}" -eq "0" ]
		then
			REMOVE_KEY_FILE=1
			${ECHO} "Uninstall AVIRA Guard will also remove the Key-File."
		fi

		if [ $REMOVE_KEY_FILE -eq 1 ]
		then
			${ECHO} -n "   Would you like to back-up these key-files? [n] "
			INPUT=${BACKUP_KEY_FILES}
		
			if [ -z "${INPUT}" ]
			then
				read INPUT
			else
				${ECHO} "${INPUT}"
				fi
		
			BACKUP=0
			case ${INPUT} in
					y*|Y*|j*|J*)
					BACKUP=1
					;;
			esac
	
			if [ ${REMOVE_KEY_FILE} -eq 1 ]
			then
				if [ "$BACKUP" -eq 1 ]
				then
					make_backupdir
		
					for ITEM in ${KEY_FILES}
					do
						if [ -f "${KEY_DIR}/${ITEM}" ]
						then
							NEWKEY="`echo ${ITEM} | cut -d'/' -f2`"
							FINDKEYCOUNT=""
	
							KEYBASENAME="`echo $NEWKEY | sed -e 's,\.key$,,'`"
							while [ -f "${BACKUPDIR}/${NEWKEY}" ]
							do
								if [ -z "${FINDKEYCOUNT}" ]
								then
									FINDKEYCOUNT=2
								else
									FINDKEYCOUNT=`expr ${FINDKEYCOUNT} + 1`
								fi
								NEWKEY="${KEYBASENAME}_${FINDKEYCOUNT}.key"
							done
	
							${ECHO} "      cp ${KEY_DIR}/${ITEM} ${BACKUPDIR}/${NEWKEY}"
							cp ${KEY_DIR}/${ITEM} ${BACKUPDIR}/${NEWKEY}
							${ECHO} -n "      -> "
							remove --file ${KEY_DIR}/${ITEM}
						fi
					done
				else
					for ITEM in ${KEY_FILES}
					do
						if [ -f "${KEY_DIR}/${ITEM}" ]
						then
							${ECHO} -n "      -> "
							remove --file ${KEY_DIR}/${ITEM}
						fi
					done
				fi
			fi
		fi
	fi
}


handle_conf_file()
{
	${ECHO} " "
	${ECHO} -n "Looking for existing ${FULLPRODUCTNAME} conf-files ..."
	for ITEM in ${CONF_LIST}
	do
		if [ -f "${ITEM}" ]
		then
			CONF_FOUND=`expr ${CONF_FOUND} + 1`
		fi
	done

	if [ "${CONF_FOUND}" -eq 0 ]
	then
		${ECHO} " no conf-file found"
	else
		${ECHO} " ${CONF_FOUND} conf-file found"
		${ECHO} -n "   Would you like to back-up these conf-files? [n] "
		INPUT=${BACKUP_CONF_FILES}
		if [ -z "${INPUT}" ]
		then
			read INPUT
		else
			${ECHO} "${INPUT}"
		fi
	
		BACKUP=0
		case ${INPUT} in
			y*|Y*|j*|J*)
				BACKUP=1
				;;
		esac
	
		if [ "$BACKUP" -eq 1 ]
		then
			make_backupdir

			for ITEM in ${CONF_LIST}
			do
				if [ -f "${ITEM}" ]
				then
					${ECHO} "      cp ${ITEM} ${BACKUPDIR}"
					cp ${ITEM} ${BACKUPDIR}
					${ECHO} -n "      -> "
					remove --file ${ITEM}
				fi
			done
		else
			for ITEM in ${CONF_LIST}
			do
				if [ -f "${ITEM}" ]
				then
					${ECHO} -n "      -> "
					remove --file ${ITEM}
				fi
			done
		fi
	fi
}


handle_log_file()
{
	${ECHO} " "
	${ECHO} -n "Looking for existing ${FULLPRODUCTNAME} log-files ..."
	for ITEM in ${LOG_LIST}
	do
		if [ -f "${ITEM}" ]
		then
			LOG_FOUND=`expr ${LOG_FOUND} + 1`
		fi
	done

# 	check for custom logfiles
	for ITEM in ${PRODUCT_CONF_FILE}
	do
		if [ -f "${ITEM}" ]
		then
			CUSTOM_LOG_FILE="`grep '^LogFile' ${ITEM} | sed 's/LogFile[ \t][ \t]*//'`"
			if [ -f "${CUSTOM_LOG_FILE}" ]
			then
				LOG_LIST="${LOG_LIST} ${CUSTOM_LOG_FILE}"
				LOG_FOUND=`expr ${LOG_FOUND} + 1`
			fi
		fi
	done

	if [ "${LOG_FOUND}" -eq 0 ]
	then
		${ECHO} " no log-file found"
	else
		${ECHO} " ${LOG_FOUND} log-file found"
		${ECHO} -n "   Would you like to back-up these log-files? [n] "
		INPUT=${BACKUP_LOG_FILES}
		if [ -z "${INPUT}" ]
		then
			read INPUT
		else
			${ECHO} "${INPUT}"
		fi
	
		BACKUP=0
		case ${INPUT} in
			y*|Y*|j*|J*)
				BACKUP=1
				;;
		esac
	
		if [ "$BACKUP" -eq 1 ]
		then
			for ITEM in ${LOG_LIST}
			do
				if [ -f "${ITEM}" ]
				then
					${ECHO} "   cp ${ITEM} ${BACKUPDIR}"
					cp ${ITEM} ${BACKUPDIR}
					${ECHO} -n "      -> "
					remove --file ${ITEM}
				fi
			done
		else
			for ITEM in ${LOG_LIST}
			do
				if [ -f "${ITEM}" ]
				then
					${ECHO} -n "      -> "
					remove --file ${ITEM}
				fi
			done
		fi
	fi
}


handle_cronjob()
{
	${ECHO} " "
	${ECHO} -n "Looking for existing ${FULLPRODUCTNAME} cronjob ..."
	if [ -d /etc/cron.d ]
	then
		if [ -f /etc/cron.d/avira_updater ]
		then
			for ITEM in ${CRONJOB}
			do
				grep -i ${ITEM} /etc/cron.d/avira_updater > /dev/null 2>&1
				if [ $? -eq 0 ]
				then
					CRON_FOUND=`expr ${CRON_FOUND} + 1`
				fi
			done
		fi
	else
		for ITEM in ${CRONJOB}
		do
			crontab -l | grep -i "${ITEM}" > $AVDIR/avira_updater
			if [ $? -eq 0 ]
			then
				CRON_FOUND=`expr ${CRON_FOUND} + 1`
			fi
		done
	fi

	if [ "${CRON_FOUND}" -eq 0 ]
	then
		${ECHO} " no cronjob found"
	else
		${ECHO} " cronjob found"
		${ECHO} -n "   Would you like to remove the cronjob? [y] "
		INPUT=${REMOVE_CRONJOB}
		if [ -z "${INPUT}" ]
		then
			read INPUT
		else
			${ECHO} "${INPUT}"
		fi
	
		REMOVE=1
		case ${INPUT} in
			n*|N*)
				REMOVE=0
				;;
		esac
	
		if [ "${REMOVE}" -eq 1 ]
		then
			if [ -d /etc/cron.d ]
			then
				if [ -f /etc/cron.d/avira_updater ]
				then
					for ITEM in ${CRONJOB}
					do
						grep -i ${ITEM} /etc/cron.d/avira_updater > /dev/null 2>&1
						if [ ${?} -eq 0 ]
						then
							${ECHO} -n "      -> remove ${ITEM} cron job ... "
							cp -f /etc/cron.d/avira_updater /etc/cron.d/avira_updater.backup
							if [ -x "$AVDIR/guard/avguard.bin" -a "$PRODUCT" != "guard" -a "$PRODUCT" != "all" ]
							then
								cat /etc/cron.d/avira_updater.backup | grep -iv "avupdate --product=${ITEM}" > /etc/cron.d/avira_updater
								grep "avupdate --product=${ITEM}" /etc/cron.d/avira_updater > /dev/null 2>&1
								if [ ${?} -ne 0 ]
								then
									${ECHO} "done"
								else
									${ECHO} "failed"
								fi

							elif [ -x "$AVDIR/guard/avguard.bin" -a "$PRODUCT" = "guard" -a "$PRODUCT" != "all" ]
							then
								cat /etc/cron.d/avira_updater.backup | grep -iv "avupdate-guard --product=${ITEM}" > /etc/cron.d/avira_updater
								grep "avupdate-guard --product=${ITEM}" /etc/cron.d/avira_updater > /dev/null 2>&1
								if [ ${?} -ne 0 ]
								then
									${ECHO} "done"
								else
									${ECHO} "failed"
								fi

							elif [ "$PRODUCT" != "all" ]
							then
								cat /etc/cron.d/avira_updater.backup | grep -iv "${ITEM}" > /etc/cron.d/avira_updater
								grep "${ITEM}" /etc/cron.d/avira_updater > /dev/null 2>&1
								if [ ${?} -ne 0 ]
								then
									${ECHO} "done"
								else
									${ECHO} "failed"
								fi
							fi
						fi
					done

					rm /etc/cron.d/avira_updater.backup
				fi
			else
				for ITEM in ${CRONJOB}
				do
					${ECHO} "      -> remove ${ITEM} cron job ... "
					cp -f $AVDIR/avira_updater $AVDIR/avira_updater.backup

					if [ -x "$AVDIR/guard/avguard.bin" -a "$PRODUCT" != "guard" -a "$PRODUCT" != "all" ]
					then
						crontab -l | grep -iv "avupdate --product=${ITEM}" > $AVDIR/avira_updater
						crontab $AVDIR/avira_updater
						crontab -l | grep "avupdate --product=${ITEM}" > /dev/null 2>&1
						if [ ${?} -ne 0 ]
						then
							${ECHO} "done"
						else
							${ECHO} "failed"
						fi

					elif [ -x "$AVDIR/guard/avguard.bin" -a "$PRODUCT" = "guard" -a "$PRODUCT" != "all" ]
					then
						crontab -l | grep -iv "avupdate-guard --product=${ITEM}" > $AVDIR/avira_updater
						crontab $AVDIR/avira_updater
						crontab -l | grep "avupdate-guard --product=${ITEM}" > /dev/null 2>&1
						if [ ${?} -ne 0 ]
						then
							${ECHO} "done"
						else
							${ECHO} "failed"
						fi

					elif [ "$PRODUCT" != "all" ]
					then
						crontab -l | grep -iv "${ITEM}" > $AVDIR/avira_updater
						crontab $AVDIR/avira_updater
						crontab -l | grep "${ITEM}" > /dev/null 2>&1
						if [ ${?} -ne 0 ]
						then
							${ECHO} "done"
						else
							${ECHO} "failed"
						fi
					fi
				done
			fi
		fi
	fi
}


handle_agent()
{
	if [ "${PRODUCT}" = "agent" -o -z "${SMC_PLUGIN}" -o ! -x ${AVDIR}/agent/agent -a ! -x ${AVDIR}/agent/smc-agent -a ! -f /etc/avira/agent.ini ]
	then
		return 0
	fi

	${ECHO} -n "uninstall SMC plugin ${SMC_PLUGIN} ... "
	if [ -f uninstall_smcplugin.sh ]
	then
		/bin/sh uninstall_smcplugin.sh ${SMC_PLUGIN} &
	
	elif [ -f ${AVDIR}/guard/uninstall_smcplugin.sh ]
	then
		/bin/sh ${AVDIR}/guard/uninstall_smcplugin.sh ${SMC_PLUGIN} &

	elif [ -f ${AVDIR}/uninstall_smcplugin.sh ]
	then
		/bin/sh ${AVDIR}/uninstall_smcplugin.sh ${SMC_PLUGIN} &
	
	else
		${ECHO} "no result"
		${ECHO} " "
		${ECHO} "SMC plugins will not be uninstalled"
	fi
	${ECHO} "done"
}


handle_dazukofs()
{
	if [ ${REMOVE_DAZUKOFS} -ne "1" ]
	then
		return 0
	fi

	${ECHO} "umount dazukofs protected directories"
	DAZUKOFS_MOUNT="`cat /etc/fstab | grep -v "#" | grep dazukofs | sed 's,\ .*,,'`"
	for a in ${DAZUKOFS_MOUNT}
	do
		${ECHO} -n "umount ${a} ... "
		umount ${a} > /dev/null 2>&1
		if [ ${?} -eq "0" ]
		then
			${ECHO} "done"
		else
			${ECHO} "fail"
		fi
	done

	${ECHO} -n "remove dazukofs entries from /etc/fstab ... "
	cp /etc/fstab /etc/fstab.orig
	grep -vi dazukofs /etc/fstab.orig > /etc/fstab
	rm /etc/fstab.orig
	${ECHO} "done"
}


handle_product()
{
	if [ "${PRODUCT}" = "guard" -a -x "${AVDIR}/guard/avguard.bin" ]
	then
		NO_SAVAPI_UNINSTALL="0"
	fi

	if [ -x "$AVDIR/guard/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/guard/rcscript"
	
	elif [ -x "$AVDIR/mailgate/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/mailgate/rcscript"
	
	elif [ -x "$AVDIR/webgate/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/webgate/rcscript"
	
	elif [ -x "$AVDIR/ium/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/ium/rcscript"
	
	elif [ -x "$AVDIR/agent/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/agent/rcscript"
	
	elif [ -x "$AVDIR/savapi3_oem/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/savapi3_oem/rcscript"
	
	elif [ -x "$AVDIR/rcscript" ]
	then
		RCSCRIPTS="$AVDIR/rcscript"
	
	elif [ -x "$AVDIR/" ]
	then
		RCSCRIPTS=""
	
	elif [ -x "./script/rcscript" ]
	then
		RCSCRIPTS="./script/rcscript"
	fi

	if [ ! -z "${RCSCRIPTS}" ]
	then
		${ECHO} " "
		${ECHO} "Starting to remove the start/stop scripts ..."
		for ITEM in $SSS
		do
			/bin/sh ${RCSCRIPTS} remove "$SSS"
		done
	fi

	${ECHO} " "
	${ECHO} "starting to remove listed files and directories ..."
	for INSTALL_FILE_LIST in $INSTALL_LIST
	do
		if [ -f "$INSTALL_FILE_LIST" ]
		then
			while read FILE_2_REMOVE
			do
				echo "$FILE_2_REMOVE" | grep FILE > /dev/null 2>&1
				if [ $? -eq 0 ]
				then
					FILE_2_REMOVE="`echo "$FILE_2_REMOVE" | sed -e 's,\,,\ ,g' | awk -F' ' '{ print $3 }'`"
					if [ -f "$FILE_2_REMOVE" -o -x "$FILE_2_REMOVE" -o -h "$FILE_2_REMOVE" ]
					then
						${ECHO} -n "      -> "
						remove --file ${FILE_2_REMOVE}
					fi
				fi
			done < $INSTALL_FILE_LIST
		fi
	done

	for ITEM in `${ECHO} ${FILE_LIST}`
	do
		if [ -f "${ITEM}" -o -x "${ITEM}" -o -h "${ITEM}" ]
		then
			${ECHO} -n "      -> "
			remove --file ${ITEM}
		fi
	done

	for ITEM in `${ECHO} ${DIR_LIST}`
	do
		if [ -d "${ITEM}" ]
		then
			${ECHO} -n "      -> "
			remove --dir ${ITEM}
		fi
	done

	if [ ${PRODUCT} = "mailgate" -a ${FORCE} -eq 0 -o ${PRODUCT} = "all" -a ${FORCE} -eq 0 -a -d /var/spool/avmailgate ]
	then
		${ECHO} " "
		${ECHO} -n "   Do you like to remove the rejected directory from mailgate? [y] "
		INPUT=${REMOVE_REJECTED}
		if [ -z "${INPUT}" ]
		then
			read INPUT
		else
			${ECHO} "${INPUT}"
		fi

		if [ -z "$INPUT" ]
		then
			INPUT="y"
		fi

		REMOVE_RE=0
		case ${INPUT} in
			y*|Y*|j*|J*)
				REMOVE_RE=1
				;;
		esac
	
		if [ "$REMOVE_RE" -eq 1 ]
		then
			for ITEM in `${ECHO} ${DIR_MAILGATE_REJECTED}`
			do
				if [ -d "${ITEM}" ]
				then
					${ECHO} -n "      -> "
					remove --dir ${ITEM}
				fi
			done
		fi
	fi

	if [ ${PRODUCT} = "ium" -a ${FORCE} -eq 0 -o ${PRODUCT} = "all" -a ${FORCE} -eq 0 ]
	then
		if [ -d "/var/avira/ium/HttpRoot" ]
		then
			${ECHO} " "
			${ECHO} -n "   Do you like to remove the HttpRoot directory from ium? [y] "
			INPUT=${REMOVE_HTTPROOT}
			if [ -z "${INPUT}" ]
			then
				read INPUT
			else
				${ECHO} "${INPUT}"
			fi
	
			if [ -z "$INPUT" ]
			then
				INPUT="y"
			fi
	
			REMOVE_RE=0
			case ${INPUT} in
				y*|Y*|j*|J*)
					REMOVE_RE=1
					;;
			esac
		
			if [ "$REMOVE_RE" -eq 1 ]
			then
				for ITEM in `${ECHO} ${DIR_IUM_HTTPROOT}`
				do
					if [ -d "${ITEM}" ]
					then
						${ECHO} -n "      -> "
						remove --dir ${ITEM}
					fi
				done
			fi
		else
			echo ${INSTALLED_PRODUCTS} | grep -i ium > /dev/nul 2>&1
			if [ "$?" -eq "0" ]
			then
				${ECHO} " "
				${ECHO} "INFO: The default HttpRoot (/var/avira/ium/HttpRoot) does not exist."
				${ECHO} "Please remove your specified HttpRoot manually."
				if [ "${DIR_IUM_HTTPROOT_DEFAULT}" != "/var/avira/ium/HttpRoot" ]
				then
					${ECHO} "${DIR_IUM_HTTPROOT_DEFAULT}"
				fi
			fi
		fi
	fi

	if [ $NO_SAVAPI_UNINSTALL -eq 1 -a $FORCE -eq 0 ]
	then
		${ECHO} " "
		${ECHO} "   INFO: savapi dependency:"
		if [ -f "${AVDIR}/avmailgate.bin" ]
		then
			${ECHO} "      savapi is needed by (installed) mailgate and not uninstalled"
		fi
		if [ -f "${AVDIR}/avguard.bin" ]
		then
			${ECHO} "      savapi is needed by (installed) guard and not uninstalled"
		fi
		if [ -f "${AVDIR}/avwebgate.bin" ]
		then
			${ECHO} "      savapi is needed by (installed) webgate and not uninstalled"
		fi
	fi
}


restore_avlinfo()
{
	rm /usr/bin/avlinfo > /dev/null 2>&1

	if [ -x "$AVDIR/guard/avlinfo" ]
	then
		AVLINFO_LOCATION="$AVDIR/guard/avlinfo"

	elif [ -x "$AVDIR/agent/avlinfo" ]
	then
		AVLINFO_LOCATION="$AVDIR/agent/avlinfo"

	elif [ -x "$AVDIR/ium/avlinfo" ]
	then
		AVLINFO_LOCATION="$AVDIR/ium/avlinfo"
	
	elif [ -x "$AVDIR/avlinfo" ]
	then
		AVLINFO_LOCATION="$AVDIR/avlinfo"
	fi

	if [ ! -z "$AVLINFO_LOCATION" ]
	then
		${ECHO} " "
		${ECHO} -n "restore /usr/bin/avlinfo ... "
		ln -s $AVLINFO_LOCATION /usr/bin/avlinfo
		$ECHO "done"
	fi
}


# main ()
	if [ "${FORCE}" -eq "1" ]
	then
		${ECHO} "INFO: You are using --force. this option will remove the product"
		${ECHO} "without checking the dependencies on other products."
		${ECHO} -n "Would you like to continue? [n] "
		INPUT=${FORCE_YES}
		if [ -z "${INPUT}" ]
			then
			read INPUT
		else
			${ECHO} "${INPUT}"
		fi
	
		START_FORCE=0
		case ${INPUT} in
			y*|Y*|j*|J*)
				START_FORCE=1
				;;
		esac
		
		if [ "${START_FORCE}" -eq 0 ]
		then
			exit 0
		fi
	fi

# 	looking for running processes
	stop_running_processes

# 	uninstall smc agent from smc command center
	unregister_agent

# 	looking for existing key files in /usr/lib/AntiVir and backup them
	handle_license_file

# 	looking for the product log files and backup them before remove
	handle_log_file

# 	looking for the product conf files and backup them before remove
	handle_conf_file

# 	looking for created cronjobs and remove them
	handle_cronjob

# 	looking for installed agent + plugins and un-register the product in smc
	handle_agent

# 	looking dazukofs mountpoints in /etc/fstab
	handle_dazukofs

# 	looking for installed products
	handle_product

# 	restore avlinfo link when other products are still installed
	restore_avlinfo

	${ECHO} " "
	${ECHO} "${FULLPRODUCTNAME} successfully uninstalled"
# AVCS4F3A4200C37O030000000203000002A4010000000000000000000000000303000000650300000200P0000000000000000375DCA57FE999A95BBC81E582EA05B9B6BA19317731C25CCA7C37D1D50811B761AB816E30C2086EFA4F83C98BDA72842ACDBCE843EC366272D31BFB383CECD673ED3F73781A48868A75D05524B700297255E374E843CD847C37653388C5B82AAFA57147285AE579271FC981ED0A54E9A7056172F7B0D8C9027ADF85672FC13423B05DF6177F63FD1FD30CB62F63ACE9E8E6FFFA9FC70D72D85654C9BC0A5E728A3FA0842CEC6BE2EA5903BAEC6BA1AB3F7DAE8224808942BBC5B498F1E7DC85E879F2A266D8366DCA211F268B18A4F25998B78397DB2B42F4E02ED0AF739CFBC652E94BA2E21716E1A5D68FFB5ED30EAECECA11022AB1E070E8395B39922C36900000000000000000000000000000292030000000003T62F3AB0132FAVCSE