#!/bin/sh
#
# Install AntiVir for UNIX
#
# Copyright (c) 2007 Avira GmbH
#

PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"

set_commands()
{
	case "${OS}" in
		sunos)
			ECHO="sh ./script/echo_sunos"
			PSAX="ps -Af"
			GROUPADD="groupadd"
			;;
		freebsd)
			ECHO="echo"
			PSAX="ps ax"
			GROUPADD="pw groupadd"
			;;
		darwin)
			ECHO="echo"
			PSAX="ps ax"
			GROUPADD="groupadd_macosx"
			;;
		*)
			ECHO="echo"
			PSAX="ps ax"
			GROUPADD="groupadd"
			;;
	esac
}

groupadd_macosx()
{
	# start with 200
	MACOSX_NEWGROUP_ID="200"

	nidump group . | grep "^${PROGNAME}:" > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
		MACOSX_NEWGROUP_ID_TEMP=`nidump group . | grep "^${PROGNAME}:"| sed -e "s/${PROGNAME}:.*:\([0-9-]*\):.*/\1/"`
		if [ ! -z "$MACOSX_NEWGROUP_ID_TEMP" ]
		then
			MACOSX_NEWGROUP_ID="$MACOSX_NEWGROUP_ID_TEMP"
		fi
		return
	fi

	MACOSX_GROUPLIST=`nidump group . | sed -e "s/.*:\([0-9][0-9][0-9]*\):.*/\1/" | sort -n`
	if [ -z "MACOSX_GROUPLIST" ]
	then
		return
	fi

	while [ ! -z "`echo $MACOSX_GROUPLIST | grep $MACOSX_NEWGROUP_ID`" ]
	do
		MACOSX_NEWGROUP_ID=`expr $MACOSX_NEWGROUP_ID + 1`
	done

	echo "$PROGNAME:*:$MACOSX_NEWGROUP_ID:" | niload group .
}

create_mgtuser_macosx()
{
	if [ "$OS" != "darwin" ]
	then
		return
	fi

	MGTUSER="$PROGNAME"

	nidump passwd . | grep "^${PROGNAME}:" > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
		return
	fi

	MACOSX_USERLIST=`nidump passwd . | sed -e "s/.*:.*:\([0-9][0-9][0-9]*\):.*:.*:.*:.*:.*:.*:.*/\1/" | sort -n`
	if [ -z "MACOSX_USERLIST" ]
	then
		return
	fi

	# start with 200
	MACOSX_NEWUSER_ID="200"
	while [ ! -z "`echo $MACOSX_USERLIST | grep $MACOSX_NEWUSER_ID`" ]
	do
		MACOSX_NEWUSER_ID=`expr $MACOSX_NEWUSER_ID + 1`
	done

	echo "$PROGNAME:*:$MACOSX_NEWUSER_ID:$MACOSX_NEWGROUP_ID::0:0:AntiVir User:/dev/null:/dev/null" | niload passwd .
}

getDEV()
{
	case "${OS}" in
		freebsd)
			DEV="`kldstat | grep dazuko`"
			;;
		sunos)
			DEV=""
			;;
		*)
			DEV=""
			if [ -f "/proc/devices" ]
			then
				DEV="`grep dazuko /proc/devices`"
			fi
			;;
	esac
}

noop()
{
	if [ 0 -eq 1 ]
	then
		$ECHO "strange"
	fi
}

error_message()
{
	if [ "$PRODUCT" = "smcagent" ]
	then
		echo "$1" >&2
	fi
}

check_copyfiles()
{
	MISSING_CPLIST=""

	for CPITEM in $CPLIST
	do
		if [ ! -f "$CPITEM" ]
		then
			MISSING_CPLIST="$MISSING_CPLIST $CPITEM"
		fi
	done

	if [ ! -z "$MISSING_CPLIST" ]
	then
		$ECHO ""
		$ECHO "Not all the installation files were found. Make sure"
		$ECHO "you have the complete installation package. This script"
		$ECHO "requires the following files:"
		for CPITEM in $MISSING_CPLIST
		do
			$ECHO "    $CPITEM"
			error_message "error: missing installation file $CPITEM"
		done
		$ECHO " "
		exit 1
	fi
}

findnewkey()
{
	FINDKEYCOUNT=""
	KEYBASENAME="hbedv"

	NEWKEY="$KEYBASENAME$FINDKEYCOUNT.key"

	while [ -f "$1/$NEWKEY" ]
	do
		if [ -z "$FINDKEYCOUNT" ]
		then
			FINDKEYCOUNT=2
		else
			FINDKEYCOUNT=`expr $FINDKEYCOUNT + 1`
		fi

		NEWKEY="$KEYBASENAME$FINDKEYCOUNT.key"
	done
}

check_executables()
{
	MISSING_EXELIST=""

	for EXEITEM in $EXELIST
	do
		if [ ! -x "`which $EXEITEM`" ]
		then
			MISSING_EXELIST="$MISSING_EXELIST $EXEITEM"
		fi
	done

	if [ ! -z "$MISSING_EXELIST" ]
	then
		$ECHO ""
		$ECHO "Not all the required tools were found. Please install"
		$ECHO "the following tools:"
		for EXEITEM in $MISSING_EXELIST
		do
			$ECHO "    $EXEITEM"
			error_message "error: missing required tool $EXEITEM"
		done
		$ECHO " "
		exit 1
	fi
}

find_backup()
{
	BACKUPNUMBER=0
	BACKUPFILE="${FILE_TO_BACKUP}.backup$BACKUPNUMBER"

	while [ -f "$BACKUPFILE" ]
	do
		BACKUPNUMBER=`expr $BACKUPNUMBER + 1`

		if [ $BACKUPNUMBER -eq 0 ]
		then
			return
		fi

		BACKUPFILE="${FILE_TO_BACKUP}.backup$BACKUPNUMBER"
	done
}

convert_version()
{
	set -- `$ECHO "${VERSION}" | sed 's/[^0-9]/\ /g'`

	MAJ=$1
	test $MAJ -eq 0
	if [ $? -gt 1 ]
	then
		MAJ=0
	fi

	MIN=$2
	test $MIN -eq 0
	if [ $? -gt 1 ]
	then
		MIN=0
	fi

	REV=$3
	test $REV -eq 0
	if [ $? -gt 1 ]
	then
		REV=0
	fi

	BLD=$4
	test $BLD -eq 0
	if [ $? -gt 1 ]
	then
		BLD=0
	fi

	VERSION=`expr $MAJ \* 1000000`
	TEMP1=`expr $MIN \* 10000`
	VERSION=`expr $VERSION + $TEMP1`
	TEMP1=`expr $REV \* 100`
	VERSION=`expr $VERSION + $TEMP1`
	VERSION=`expr $VERSION + $BLD`
}

compare_versions()
{
	# 0 = replace older version
	# 1 = do not replace same version
	# 2 = do not replace newer version
	# 3 = TOO new version (do not install)

	if [ $OLDVERSION -lt $NEWVERSION ]
	then
		return 0
	elif [ $OLDVERSION -eq $NEWVERSION ]
	then
		return 1
	elif [ $OLDVERSION -gt $NEWVERSION ]
	then
		if [ `expr $OLDVERSION / 10000` -gt `expr $NEWVERSION / 10000` ]
		then
			return 3
		fi

		return 2
	fi

	return 0
}

install_gui()
{
	$ECHO -n "copying common gui files to $AVDIR/gui ... "
	$SLEEP 2
	RET=1
	if [ -f "$GUICOMMONFILE" ]
	then
		CURDIR="`pwd`"
		cd "$AVDIR"
		gzip -dc "$CURDIR/$GUICOMMONFILE" | tar xf -
		RET=$?
		cd "$CURDIR"
	fi
	if [ $RET -ne 0 ]
	then
		$ECHO "failed"
		$ECHO ""
	fi
	$ECHO "done"
	$SLEEP 1

	if [ -f "$GUICUSTOMFILE" ]
	then
		$ECHO -n "copying platform dependant gui files to $AVDIR/gui ... "
		$SLEEP 2
		RET=1
		if [ -f "$GUICUSTOMFILE" ]
		then
			CURDIR="`pwd`"
			cd "$AVDIR"
			gzip -dc "$CURDIR/$GUICUSTOMFILE" | tar xf -
			RET=$?
			if [ $RET -eq 0 -a "$PRODUCT" = "mailgate" -a "$CLASSIFICATION" = "solaris_sparc" ]
			then
				chown uucp:antivir $AVDIR/gui/bin/avmg_stats*
				chgrp -R antivir /usr/lib/AntiVir/gui
			fi
			cd "$CURDIR"
		fi
		if [ $RET -ne 0 ]
		then
			$ECHO "failed"
			$ECHO ""
		fi
		$ECHO "done"
		$SLEEP 1
	fi

	if [ "$VARIANT" = "AVDE" ]
	then
		avinstall -f -S script -s "${PROGNAME}-gui" -T "$AVDIR" -u root -g "$PROGNAME" -m 755

		if [ ! -x "/usr/bin/$PROGNAME-gui" ]
		then
			$ECHO -n "linking /usr/bin/$PROGNAME-gui to $AVDIR/$PROGNAME-gui ... "
			$SLEEP 2
			rm -f /usr/bin/$PROGNAME-gui
			ln -s $AVDIR/$PROGNAME-gui /usr/bin/$PROGNAME-gui
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	if [ "${OS}" != "sunos" ]
	then
		install_smcplugin
	fi
	
	$ECHO "installation of GUI complete"
	$SLEEP 2
}

install_smcplugin()
{
	if [ "$OS" = "sunos" ]
	then
		return
	fi

	if [ ! -d "$AVDIR/agent" ]
	then
		avinstall -T "$AVDIR/agent" -u root -g "$PROGNAME" -m 755
		if [ $? -ne 0 ]
		then
			error_message "error: failed to create $AVDIR/agent"
			exit 1
		fi
	fi

	if [ -f "smcpkg/scanparameters.txt" ]
        then
		avinstall -f -S smcpkg -s scanparameters.txt -T "$AVDIR/agent" -u root -g "$PROGNAME" -m 755
	fi

	LIBPLUGINSRC="lib$SMCPLUGINPREFIX.so.$CLASSIFICATION"
	if [ ! -f "smcpkg/$LIBPLUGINSRC" -a ! -z "$FALLBACK_CLASSIFICATION" ]
	then
		LIBPLUGINSRC="lib$SMCPLUGINPREFIX.so.$FALLBACK_CLASSIFICATION"
	fi
	LIBPLUGINDST="lib$SMCPLUGINPREFIX.so"

	if [ -f "smcpkg/$LIBPLUGINSRC" ]
	then
		avinstall -f -S smcpkg -s "$LIBPLUGINSRC" -T "$AVDIR/agent" -t "$LIBPLUGINDST" -u root -g "$PROGNAME" -m 755
	else
		error_message "error: no SMC plugin available in package"
		$ECHO "error: no SMC plugin available in package"
		exit 1
	fi

	if [ -x "$AVDIR/agent/$SMCAGENTNAME" -a -f "$AVDIR/agent/$LIBPLUGINDST" ]
	then
		$ECHO -n "registering SMC plug-in ... "
		$SLEEP 2
		$AVDIR/agent/$SMCAGENTNAME --install-plugin "$SMCPLUGINPREFIX" "$AVDIR/agent/$LIBPLUGINDST" > /dev/null 2>&1
		$ECHO "done"
		$SLEEP 1
	fi
}

setup_startup_scripts()
{
	RCPATH=`sh script/rcscript query "$SSS_SCRIPT"`

	if [ $SSS_START -eq 1 ]
	then
		RCOVERWRITE=1

		if [ ! -z "$RCPATH" ]
		then

			$ECHO " "
			$ECHO "Startup scripts for $SSS_NAME have been found."
			$ECHO -n "Should they be overwritten? [y] "

			if [ $HAS_INF -eq 0 ]
			then
				read INPUT
			else
				INPUT="y"
				$ECHO "$INPUT"
			fi

			case $INPUT in
				n*|N*)
					RCOVERWRITE=0
					;;
			esac
		fi

		$SLEEP 1

		if [ $RCOVERWRITE -eq 1 ]
		then
			$ECHO -n "setting up startup script ... "
			$SLEEP 2
			sh script/rcscript install "$SSS_SCRIPT"
			if [ $? -ne 0 ]
			then
				$ECHO "failed"
				$ECHO ""
				error_message "warning: unable to set up startup script"
				$ECHO " "
				$ECHO "************************************************"
				$ECHO " Unable to locate where startup scripts belong."
				$ECHO " You can launch $SSS_NAME with:"
				$ECHO " "
				$ECHO "      $SSS_SCRIPT start"
				$ECHO "************************************************"
				$ECHO " "
				$ECHO -n "Press <ENTER> to continue."
				if [ $HAS_INF -eq 0 ]
				then
					read INPUT
				else
					$ECHO " "
				fi
			else
				$ECHO "done"
			fi
			$SLEEP 1
		fi
	else
		if [ ! -z "$RCPATH" ]
		then
			RCREMOVE=0

			$ECHO " "
			$ECHO "Startup scripts for $SSS_NAME have been found."
			$ECHO -n "Should they be removed? [n] "

			if [ $HAS_INF -eq 0 ]
			then
				read INPUT
			else
				INPUT="y"
				$ECHO "$INPUT"
			fi

			case $INPUT in
				y*|Y*|j*|J*)
					RCREMOVE=1
					;;
			esac

			$SLEEP 1

			if [ $RCREMOVE -eq 1 ]
			then
				sh script/rcscript remove "$SSS_SCRIPT"
			fi
		fi
	fi
}


install_vsa()
{
	VSALIB="lib${PROGNAME}vsa.so.$PRODUCTVERSION"

	avinstall -f -S lib -s "$VSALIB" -T "$AVDIR" -u root -g "$PROGNAME" -m 644
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	LINKNAME="lib${PROGNAME}vsa.so"

	$ECHO -n "linking $LINKNAME to $VSALIB ... "
	$SLEEP 2
	rm -f "$AVDIR/$LINKNAME"
	ln -s "$AVDIR/$VSALIB" "$AVDIR/$LINKNAME"
	$ECHO "done"
	$SLEEP 1

	avinstall -f -S script -s "avsapvsa" -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	$SLEEP 1

	$ECHO "installation of VSA library complete"
	$SLEEP 2
}

install_smcagent()
{
	if [ ! -d "$AVDIR" ]
	then
		avinstall -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	fi

	if [ ! -d "$AVDIR/agent" ]
	then
		avinstall -T "$AVDIR/agent" -u root -g "$PROGNAME" -m 755
		if [ $? -ne 0 ]
		then
			error_message "error: failed to create $AVDIR/agent"
			exit 1
		fi
	fi

	$ECHO -n "copying SMC UNIX Agent files to $AVDIR/agent/ ... "
	$SLEEP 2
	for item in `ls agent`
	do
		if [ -f "agent/$item" ]
		then
			cp -f agent/$item $AVDIR/agent
			if [ $? -ne 0 ]
			then
				$ECHO "failed."
				$ECHO ""
				error_message "error: failed to copy agent/$item to $AVDIR/agent"
				exit 1
			fi
		fi
	done

	cp -f script/rcscript $AVDIR/agent
	chmod 755 $AVDIR/agent/rcscript
	chmod 755 $AVDIR/agent/$SMCAGENTNAME

	if [ ! -h "$AVDIR/agent/Agent" ]
	then
		rm -f $AVDIR/agent/Agent
		ln -sf $AVDIR/agent/$SMCAGENTNAME $AVDIR/agent/Agent
	fi

	$ECHO "done."
	$SLEEP 1

	if [ ! -d "$AVDIR/agent/update" ]
	then
		avinstall -T "$AVDIR/agent/update" -u root -g "$PROGNAME" -m 755
		if [ $? -ne 0 ]
		then
			error_message "error: failed to create $AVDIR/agent/update"
			$ECHO "error: failed to create $AVDIR/agent/update"
			exit 1
		fi
	fi

	$ECHO -n "copying SMC Updater files to $AVDIR/agent/update/ ... "
	$SLEEP 2
	for item in `ls agent/update`
	do
		if [ -f "agent/update/$item" ]
		then
			cp -f agent/update/$item $AVDIR/agent/update
			if [ $? -ne 0 ]
			then
				$ECHO "failed."
				$ECHO ""
				error_message "error: failed to copy agent/update/$item to $AVDIR/agent/update"
				exit 1
			fi
		fi
	done

	chmod 755 $AVDIR/agent/update/update
	$ECHO "done."
	$SLEEP 1

	RCFILE="smc-agent"
        WGSYSTEM=`sh script/getsysteminfo`
        case `$ECHO $WGSYSTEM | sed -e "s/ .*//"` in
                suse)
                        SUSEVER=`$ECHO $WGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`

                        if [ ! -z "$SUSEVER" ]
                        then
                                if [ $SUSEVER -ge 8 ]
                                then
                                        RCFILE="rc.smc-agent.SuSE8x"
                                fi
                        fi
                        ;;
        esac

        avinstall -f -S script -s "$RCFILE" -T "$AVDIR/agent" -t smc-agent -u root -g "$PROGNAME" -m 755
	$SLEEP 1

	$ECHO -n "setting up SSL keys ... "
	$SLEEP 2
	gzip -dc agent/tgz/sslkeys.tar.gz | tar x -f - -C $AVDIR/agent
	if [ $? -ne 0 ]
	then
		$ECHO "failed."
		$ECHO ""
		error_message "error: failed to set up SSL keys in $AVDIR/agent"
		exit 1
	fi
	$ECHO "done."
	$SLEEP 1

	$ECHO -n "setting up SMC UNIX Agent registry ... "
	$SLEEP 2
	gzip -dc agent/tgz/registry.tar.gz | tar x -f - -C $AVDIR
	if [ $? -ne 0 ]
	then
		$ECHO "failed."
		$ECHO ""
		error_message "error: failed to set up registry in $AVDIR"
		exit 1
	fi
	$ECHO "done."
	$SLEEP 1

	avinstall -f -S agent/conf -s agent.conf -T "$AVDIR/agent" -u root -g "$PROGNAME" -m 644
	$SLEEP 1

	$ECHO -n "setting up agent configuration ... "
	$SLEEP 2
	if [ "$AGENT_NETWORKNAME" != "$NO_VALUE" ]
	then
		AGENT_EXTRA_ARG1="-N"
		AGENT_EXTRA_ARG2="$AGENT_NETWORKNAME"
	else
		AGENT_EXTRA_ARG1=""
		AGENT_EXTRA_ARG2=""
	fi
	if [ "$AGENT_GUID" != "$NO_VALUE" ]
	then
		AGENT_EXTRA_ARG3="-G"
		AGENT_EXTRA_ARG4="$AGENT_GUID"
	else
		AGENT_EXTRA_ARG3=""
		AGENT_EXTRA_ARG4=""
	fi
	if [ "$AGENT_SETUP_CONFIG" != "$NO_VALUE" ]
	then
		AGENT_EXTRA_ARG5="--setup-config"
		AGENT_EXTRA_ARG6="$AGENT_SETUP_CONFIG"
	else
		AGENT_EXTRA_ARG5=""
		AGENT_EXTRA_ARG6=""
	fi
	if [ "$AGENT_PRODUCT_CONFIG" != "$NO_VALUE" ]
	then
		AGENT_EXTRA_ARG7="--product-config"
		AGENT_EXTRA_ARG8="$AGENT_PRODUCT_CONFIG"
	else
		AGENT_EXTRA_ARG7=""
		AGENT_EXTRA_ARG8=""
	fi
	AGENT_ERR=`$AVDIR/agent/$SMCAGENTNAME -S $AGENT_SERVERIP $AGENT_SERVERPORT -E $AGENT_EVENTMANAGERIP $AGENT_EVENTMANAGERPORT -U http://$AGENT_UPDATEMANAGERIP:$AGENT_UPDATEMANAGERPORT -R $AGENT_AGENTPORT -D "$AGENT_DISPLAYNAME" $AGENT_EXTRA_ARG1 $AGENT_EXTRA_ARG2 $AGENT_EXTRA_ARG3 $AGENT_EXTRA_ARG4 $AGENT_EXTRA_ARG5 $AGENT_EXTRA_ARG6 $AGENT_EXTRA_ARG7 $AGENT_EXTRA_ARG8 2>&1`
	if [ $? -ne 0 ]
	then
		$ECHO "failed."
		$ECHO ""
		error_message "error: failed to set up agent configuration"
		echo "$AGENT_ERR" >&2
		exit 1
	fi
	$ECHO "done."
	$SLEEP 1

	for item in `ls $AVDIR/agent/ | grep "libux...\.so"`
	do
		KEYWORD=`$ECHO $AVDIR/agent/$item | sed -e "s/^.*ux/ux/; s/\.so$//"`
		$ECHO -n "registering SMC UNIX Agent plug-in ($KEYWORD) ... "
		$SLEEP 1
		$AVDIR/agent/$SMCAGENTNAME --install-plugin $KEYWORD $AVDIR/agent/$item > /dev/null 2>&1
		$ECHO "done"
		$SLEEP 1
	done

	$ECHO " "
	$ECHO -n "Would you like SMC UNIX Agent to start automatically? [y] "
	INPUT=$AGENT_AUTOSTART
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	STARTAGENT=1
	case $INPUT in
		n*|N*)
			STARTAGENT=0
			;;
	esac

	SSS_START=$STARTAGENT
	SSS_SCRIPT="$AVDIR/agent/smc-agent"
	SSS_NAME="the SMC UNIX Agent"
	setup_startup_scripts

	$ECHO " "
	$ECHO -n "Would you like to start the SMC UNIX Agent now? [y] "
	INPUT=$AGENT_STARTNOW
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	STARTAGENT=1
	case $INPUT in
		n*|N*)
			STARTAGENT=0
			;;
	esac

	if [ $STARTAGENT -eq 1 ]
	then
		$AVDIR/agent/smc-agent start
		$SLEEP 2
	fi

	$ECHO "installation of the SMC UNIX Agent complete"
	$SLEEP 2
}

install_savapisdk()
{
	if [ ! -d "$AVDIR/savapi" ]
	then
		avinstall -T "$AVDIR/savapi" -u root -g "$PROGNAME" -m 755
		if [ $? -ne 0 ]
		then
			exit 1
		fi
	fi

	$ECHO -n "copying SDK files to $AVDIR/savapi ... "
	$SLEEP 2
	CURDIR=`pwd`
	cd $AVDIR/savapi
	gzip -dc "$CURDIR/sdk/sdk.tgz" | tar xf -
	RET=$?
	cd "$CURDIR"
	if [ $RET -ne 0 ]
	then
		$ECHO "failed"
		$ECHO ""
		exit 1
	fi
	$ECHO "done"
	$SLEEP 1

	$ECHO "installation of SDK development files complete"
	$SLEEP 2
}

print_openbsd_startup_msg()
{
	$ECHO " "
	$ECHO "If you would like $SSS_NAME to start up"
	$ECHO "automatically on system boot, please add the following"
	$ECHO "to the bottom of the /etc/rc.local file:"

	$ECHO " "
	$ECHO "    if [ -x $SSS_SCRIPT ]; then"
	$ECHO "        $SSS_SCRIPT start"
	$ECHO "    fi"

	$ECHO " "
	$SLEEP 2
	$ECHO -n "Press <ENTER> to continue."
	read INPUT
}

install_webgate()
{
	if [ "$VARIANT" = "AVDE" ]
	then
		avinstall -f -S doc -s avwebgate_de.pdf -T "$AVDIR" -u root -g "$PROGNAME" -m 644
		if [ $? -ne 0 ]
		then
			exit 1
		fi
	fi

	avinstall -f -S bin -s avwebgate.bin -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	RCFILE="avwebgate"
	WGSYSTEM=`sh script/getsysteminfo`
	case `$ECHO $WGSYSTEM | sed -e "s/ .*//"` in
		suse)
			SUSEVER=`$ECHO $WGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`

			if [ ! -z "$SUSEVER" ]
			then
				if [ $SUSEVER -ge 8 ]
				then
					RCFILE="rc.avwebgate.SuSE8x"
				fi
			fi
			;;
	esac

	avinstall -f -S script -s "$RCFILE" -T "$AVDIR" -t avwebgate -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	avinstall -T "$AVDIR/templates" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/en" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/de" -u root -g "$PROGNAME" -m 775

	$ECHO -n "installing example templates to $AVDIR/templates ..."
	$SLEEP 1

        $SLEEP 2
	for item_tmpl in `ls templates/`
	do
		$ECHO -n " $item_tmpl"
	        for item in `ls templates/$item_tmpl`
	        do
	                avinstall -q -f -S templates/$item_tmpl -s "$item" -T "$AVDIR/templates/examples/$item_tmpl" -u root -g "$PROGNAME" -m 664
	        done
	        $SLEEP 1
	done
	$ECHO ""

	avinstall -f -S doc -s MANUAL -T "$AVDIR" -t MANUAL.avwebgate -u root -g "$PROGNAME" -m 644
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	if [ ! -x "/usr/sbin/avwebgate" ]
	then
		$ECHO " "
		$ECHO -n "Would you like to create a link in /usr/sbin for avwebgate ? [y] "
		INPUT=$WEBGATE_ADDLINK
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		CREATELINK=1
		case $INPUT in
			n*|N*)
				CREATELINK=0
				;;
		esac

		if [ $CREATELINK -eq 1 ]
		then
			$ECHO -n "linking /usr/sbin/avwebgate to $AVDIR/avwebgate ... "
			$SLEEP 2
			rm -f /usr/sbin/avwebgate
			ln -s $AVDIR/avwebgate /usr/sbin/avwebgate
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	SSS_SCRIPT="$AVDIR/avwebgate"
	SSS_NAME="AvWebGate"

	if [ "$OS" != "openbsd" ]
	then
		$ECHO " "
		$ECHO -n "Would you like AvWebGate to start automatically? [y] "
		INPUT=$WEBGATE_AUTOSTART
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1
	else
		print_openbsd_startup_msg
		INPUT="n"
	fi

	STARTWEBGATE=1
	case $INPUT in
		n*|N*)
			STARTWEBGATE=0
			;;
	esac

	SSS_START=$STARTWEBGATE
	setup_startup_scripts

	$ECHO "installation of main program complete"
	$SLEEP 2
}

install_mailgate()
{
	if [ "$VARIANT" = "AVDE" ]
	then
		avinstall -f -S doc -s avmailgate_de.pdf -T "$AVDIR" -u root -g "$PROGNAME" -m 644
		if [ $? -ne 0 ]
		then
			exit 1
		fi
	fi

	avinstall -f -S bin -s avmailgate.bin -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	ASMAILGATE_SRC="contrib/asmailgate"
	ASMAILGATE_BINDIR="$ASMAILGATE_SRC/bin/$CLASSIFICATION"
	if [ ! -d "$ASMAILGATE_BINDIR" -a ! -z "$USE_CLASSIFICATION" ]
	then
		ASMAILGATE_BINDIR="$ASMAILGATE_SRC/bin/$USE_CLASSIFICATION"
	fi
	ASMAILGATE_ETCDIR="$ASMAILGATE_SRC/etc"
	ASMAILGATE_DATADIR="$ASMAILGATE_SRC/data"
	ASMAILGATE_VARDIR="$ASMAILGATE_SRC/var"
	ASMAILGATE_LIB="libasmailgate.so"
	ASMAILGATE_BIN="avmg_ext_filter.bin"
	if [ -f "$ASMAILGATE_BINDIR/$ASMAILGATE_LIB" ]
	then
		# install asmailgate

		avinstall -f -S $ASMAILGATE_BINDIR -s $ASMAILGATE_LIB -T "$AVDIR" -u root -g "$PROGNAME" -m 755
		avinstall -f -S $ASMAILGATE_BINDIR -s $ASMAILGATE_BIN -T "$AVDIR" -u root -g "$PROGNAME" -m 755

		for item_expg in `ls $ASMAILGATE_DATADIR/`
		do
			avinstall -f -S $ASMAILGATE_DATADIR -s $item_expg -T "$AVDIR" -u root -g "$PROGNAME" -m 644
		done

		avinstall -T "$AVDIR/mailgate-var" -u uucp -g "$PROGNAME" -m 755
		for item_expg in `ls $ASMAILGATE_VARDIR/`
		do
			avinstall -f -S $ASMAILGATE_VARDIR -s $item_expg -T "$AVDIR/mailgate-var" -u uucp -g "$PROGNAME" -m 644
		done
	fi

	RCFILE="avmailgate"
	MGSYSTEM=`sh script/getsysteminfo`
	case `$ECHO $MGSYSTEM | sed -e "s/ .*//"` in
		suse)
			SUSEVER=`$ECHO $MGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`

			if [ ! -z "$SUSEVER" ]
			then
				if [ $SUSEVER -ge 8 ]
				then
					RCFILE="rc.avmailgate.SuSE8x"
				fi
			fi
			;;
	esac

	avinstall -f -S script -s "$RCFILE" -T "$AVDIR" -t avmailgate -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	avinstall -T "$AVDIR/templates" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/de" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/en" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/es" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/hu" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/it" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples/nl" -u root -g "$PROGNAME" -m 775

        $SLEEP 2
	for item_tmpl in `ls templates/`
	do
	        for item in `ls templates/$item_tmpl`
	        do
	                avinstall -q -f -S templates/$item_tmpl -s "$item" -T "$AVDIR/templates/examples/$item_tmpl" -u root -g "$PROGNAME" -m 664
	        done
	        $SLEEP 1
	done
	$ECHO ""

	avinstall -f -S doc -s MANUAL -T "$AVDIR" -t MANUAL.avmailgate -u root -g "$PROGNAME" -m 644
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	avinstall -S etc -s avmailgate.ignore -T /etc -u root -g "$PROGNAME" -m 664
	avinstall -S etc -s avmailgate.scan -T /etc -u root -g "$PROGNAME" -m 664
	avinstall -S etc -s avmailgate.warn -T /etc -u root -g "$PROGNAME" -m 664

	avinstall -T "/var/spool/avmailgate" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmailgate/incoming" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmailgate/outgoing" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmailgate/rejected" -u $MGTUSER -g "$PROGNAME" -m 700

	if [ ! -h "/usr/sbin/avmailgate" ]
	then
		rm -f /usr/sbin/avmailgate
	fi

	rm -f /usr/sbin/rcavgate

	MANPAGES_DIR="`$ECHO $MANPATH | sed -e s/:.*//`"
	if [ -z "$MANPAGES_DIR" ]
	then
		if [ -d /usr/share/man ]
		then
			MANPAGES_DIR="/usr/share/man"
		
		elif [ -d /usr/local/man ]
		then
			MANPAGES_DIR="/usr/local/man"
		fi
	fi

	$ECHO " "
	$ECHO "Enter the path where the manual pages will be located:"
	$ECHO -n "[$MANPAGES_DIR]: "

	INPUT=$MAILGATE_MANPAGESDIR
	if [ -z "$INPUT" ]
	then
		if [ $HAS_INF -ne 0 ]
		then
			INPUT="$MANPAGES_DIR"
		else
			read INPUT
			if [ -z "$INPUT" ]
			then
				INPUT="$MANPAGES_DIR"
			fi
		fi
	else
		$ECHO "$INPUT"
	fi
	MANPAGES_DIR="$INPUT"
	$SLEEP 1
	
	if [ ! -d $MANPAGES_DIR/man5 ]
	then
		mkdir $MANPAGES_DIR/man5
	fi
	avinstall -f -S doc/man -s avmailgate.conf.5 -T "$MANPAGES_DIR/man5" -u root -g "$PROGNAME" -m 644
	avinstall -f -S doc/man -s avmailgate.acl.5 -T "$MANPAGES_DIR/man5" -u root -g "$PROGNAME" -m 644

	if [ ! -d $MANPAGES_DIR/man8 ]
	then
		mkdir $MANPAGES_DIR/man8
	fi
	avinstall -f -S doc/man -s avmailgate.8 -T "$MANPAGES_DIR/man8" -u root -g "$PROGNAME" -m 644

	if [ ! -f "/etc/avmailgate.acl" ]
	then
		ACLLIST=""
		case $OS in
			linux)
				ACLLIST="`hostname -f` `hostname -d`"
				;;
			freebsd|openbsd)
				ACLLIST="`hostname` `hostname -s`"
				;;
			sunos)
				ACLLIST="`hostname` `domainname`"
				;;
		esac

		LOCAL_ACL=""
		for aclitem in $ACLLIST
		do
			if [ -z "$LOCAL_ACL" ]
			then
				LOCAL_ACL="$aclitem"
			else
				LOCAL_ACL="$LOCAL_ACL $aclitem"
			fi
		done

		$ECHO " "
		$ECHO "Enter the hosts and/or domains that are local:"
		$ECHO -n "[$LOCAL_ACL]: "

		INPUT=$MAILGATE_LOCALACL
		if [ -z "$INPUT" ]
		then
			read INPUT
			if [ -z "$INPUT" ]
			then
				INPUT="$LOCAL_ACL"
			fi
		else
			$ECHO "$INPUT"
		fi
		LOCAL_ACL="$INPUT"
		$SLEEP 1

		RELAY_ACL="127.0.0.1/8 192.168.0.0/16"

		$ECHO " "
		$ECHO "Enter the hosts and networks that are allowed to relay:"
		$ECHO -n "[$RELAY_ACL]: "

		INPUT=$MAILGATE_RELAYACL
		if [ -z "$INPUT" ]
		then
			read INPUT
			if [ -z "$INPUT" ]
			then
				INPUT="$RELAY_ACL"
			fi
		else
			$ECHO "$INPUT"
		fi
		RELAY_ACL="$INPUT"
		$SLEEP 1

		$ECHO "# Access lists for AvMailGate" > /etc/avmailgate.acl
		$ECHO "" >> /etc/avmailgate.acl
		$ECHO "# These hosts and/or domains are local." >> /etc/avmailgate.acl
		$ECHO "local: localhost" >> /etc/avmailgate.acl
		$ECHO "local: $LOCAL_ACL" >> /etc/avmailgate.acl
		$ECHO "" >> /etc/avmailgate.acl
		$ECHO "# These hosts and networks are allowed to relay." >> /etc/avmailgate.acl
		$ECHO "relay: $RELAY_ACL" >> /etc/avmailgate.acl
		$ECHO "" >> /etc/avmailgate.acl

		chown root:antivir /etc/avmailgate.acl
		chmod 664 /etc/avmailgate.acl
	fi

	if [ ! -x "/usr/sbin/avmailgate" ]
	then
		$ECHO " "
		$ECHO -n "Would you like to create a link in /usr/sbin for avmailgate ? [y] "
		INPUT=$MAILGATE_ADDLINK
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		CREATELINK=1
		case $INPUT in
			n*|N*)
				CREATELINK=0
				;;
		esac

		if [ $CREATELINK -eq 1 ]
		then
			$ECHO -n "linking /usr/sbin/avmailgate to $AVDIR/avmailgate ... "
			$SLEEP 2
			rm -f /usr/sbin/avmailgate
			ln -s "$AVDIR/avmailgate" /usr/sbin/avmailgate
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	SSS_SCRIPT="$AVDIR/avmailgate"
	SSS_NAME="AvMailGate"

	if [ "$OS" != "openbsd" ]
	then
		$ECHO " "
		$ECHO -n "Would you like AvMailGate to start automatically? [y] "
		INPUT=$MAILGATE_AUTOSTART
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1
	else
		print_openbsd_startup_msg
		INPUT="n"
	fi

	STARTMAILGATE=1
	case $INPUT in
		n*|N*)
			STARTMAILGATE=0
			;;
	esac

	SSS_START=$STARTMAILGATE
	setup_startup_scripts

	$ECHO "installation of main program complete"
	$SLEEP 2
}

install_milter()
{
	if [ "$VARIANT" = "AVDE" ]
	then
		avinstall -f -S doc -s avmilter_de.pdf -T "$AVDIR" -u root -g "$PROGNAME" -m 644
		if [ $? -ne 0 ]
		then
			exit 1
		fi
	fi

	avinstall -f -S bin -s avmilter.bin -T "$AVDIR" -t avmilter.bin -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	MGSYSTEM=`sh script/getsysteminfo`
	case `$ECHO $MGSYSTEM | sed -e "s/ .*//"` in
		suse)
			SUSEVER=`$ECHO $MGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`
			SUSERC="rc.avmilter.SuSE8x"

			if [ ! -z "$SUSEVER" ]
			then
				if [ $SUSEVER -lt 8 ]
				then
					SUSERC="rc.avmilter.SuSE"
				fi
			fi
			avinstall -f -S script -s "$SUSERC" -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
		redhat)
			avinstall -f -S script -s rc.avmilter.redhat -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
		openbsd)
			avinstall -f -S script -s rc.avmilter.openbsd -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
		freebsd)
			avinstall -f -S script -s rc.avmilter.freebsd -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
		sunos)
			avinstall -f -S script -s rc.avmilter.solaris -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
		*)
			avinstall -f -S script -s rc.avmilter -T "$AVDIR" -t avmilter -u root -g "$PROGNAME" -m 755
			;;
	esac

	avinstall -T "$AVDIR/templates" -u root -g "$PROGNAME" -m 775
	avinstall -T "$AVDIR/templates/examples" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/de" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/en" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/es" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/hu" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/it" -u root -g "$PROGNAME" -m 775
        avinstall -T "$AVDIR/templates/examples/nl" -u root -g "$PROGNAME" -m 775

        $ECHO -n "installing example templates to $AVDIR/templates/example ... "
        $SLEEP 2

	for item_tmpl in `ls templates/`
        do 
                for item in `ls templates/$item_tmpl`
                do
                        avinstall -q -f -S templates/$item_tmpl -s "$item" -T "$AVDIR/templates/examples/$item_tmpl" -u root -g "$PROGNAME" -m 664
                done
                $SLEEP 1
        done
	$ECHO ""

	avinstall -f -S doc -s MANUAL -T "$AVDIR" -t MANUAL.avmilter -u root -g "$PROGNAME" -m 644
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	avinstall -S etc -s avmilter.ignore -T /etc -u root -g "$PROGNAME" -m 664
	avinstall -S etc -s avmilter.scan -T /etc -u root -g "$PROGNAME" -m 664
	avinstall -S etc -s avmilter.warn -T /etc -u root -g "$PROGNAME" -m 664

	avinstall -T "/var/spool/avmilter" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmilter/incoming" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmilter/outgoing" -u $MGTUSER -g "$PROGNAME" -m 700
	avinstall -T "/var/spool/avmilter/rejected" -u $MGTUSER -g "$PROGNAME" -m 700

	rm -f /usr/sbin/avmilter

	if [ ! -x "/usr/sbin/avmilter" ]
	then
		$ECHO " "
		$ECHO -n "Would you like to create a link in /usr/sbin for avmilter ? [y] "
		INPUT=$MILTER_ADDLINK
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		CREATELINK=1
		case $INPUT in
			n*|N*)
				CREATELINK=0
				;;
		esac

		if [ $CREATELINK -eq 1 ]
		then
			$ECHO -n "linking /usr/sbin/avmilter to $AVDIR/avmilter ... "
			$SLEEP 2
			rm -f /usr/sbin/avmilter
			ln -s "$AVDIR/avmilter" /usr/sbin/avmilter
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	SSS_SCRIPT="$AVDIR/avmilter"
	SSS_NAME="AvMilter"

	if [ "$OS" != "openbsd" ]
	then
		$ECHO " "
		$ECHO -n "Would you like AvMilter to start automatically? [y] "
		INPUT=$MITLER_AUTOSTART
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1
	else
		print_openbsd_startup_msg
		INPUT="n"
	fi

	STARTMILTER=1
	case $INPUT in
		n*|N*)
			STARTMILTER=0
			;;
	esac

	SSS_START=$STARTMILTER
	setup_startup_scripts

	$ECHO "installation of main program complete"
	$SLEEP 2
}

install_guard()
{
	if [ "$VARIANT" = "AVDE" ]
	then
		avinstall -f -S doc -s avserver_de.pdf -T "$AVDIR" -u root -g "$PROGNAME" -m 644
		if [ $? -ne 0 ]
		then
			exit 1
		fi
	fi

	RCFILE="$GUARDNAME"
        WGSYSTEM=`sh script/getsysteminfo`
        case `$ECHO $WGSYSTEM | sed -e "s/ .*//"` in
                suse)
                        SUSEVER=`$ECHO $WGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`

                        if [ ! -z "$SUSEVER" ]
                        then 
                                if [ $SUSEVER -ge 8 ]
                                then
                                        RCFILE="rc.avguard.SuSE8x"
                                fi
                        fi
                        ;;
        esac

	avinstall -f -S script -s "$RCFILE" -T "$AVDIR" -t avguard -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	avinstall -f -S doc -s MANUAL -T "$AVDIR" -t "MANUAL.$GUARDNAME" -u root -g "$PROGNAME" -m 644
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	if [ ! -x "/usr/sbin/$GUARDNAME" ]
	then
		$ECHO " "
		$ECHO -n "Would you like to create a link in /usr/sbin for $GUARDNAME ? [y] "
		INPUT=$GUARD_ADDLINK
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		CREATELINK=1
		case $INPUT in
			n*|N*)
				CREATELINK=0
				;;
		esac

		if [ $CREATELINK -eq 1 ]
		then
			$ECHO -n "linking /usr/sbin/$GUARDNAME to $AVDIR/$GUARDNAME ... "
			$SLEEP 2
			rm -f /usr/sbin/$GUARDNAME
			ln -s $AVDIR/$GUARDNAME /usr/sbin/$GUARDNAME
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	SSS_SCRIPT="$AVDIR/$GUARDNAME"
	SSS_NAME="AvGuard"

	if [ "$OS" != "openbsd" ]
	then
		$ECHO " "
		$ECHO -n "Would you like AvGuard to start automatically? [y] "
		INPUT=$GUARD_AUTOSTART
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1
	else
		print_openbsd_startup_msg
		INPUT="n"
	fi

	STARTGUARD=1
	case $INPUT in
		n*|N*)
			STARTGUARD=0
			;;
	esac

	SSS_START=$STARTGUARD
	setup_startup_scripts

	$ECHO "installation of AvGuard complete"
	$SLEEP 2
}

parse_iface_for_ip_port()
{
	# input: IFACE

	PARSED_IP="?"
	PARSED_PORT="?"

	if [ -z "$IFACE" ]
	then
		return 1
	fi

	$ECHO $IFACE | grep ":" > /dev/null 2>&1
	if [ $? -eq 0 ]
	then
		PARSED_IP=`$ECHO $IFACE | sed -e 's/:.*//'`
		PARSED_PORT=`$ECHO $IFACE | sed -e 's/.*://'`
	else
		PARSED_IP="$IFACE"
	fi

	return 0
}

check_ip_exit()
{
	CHECK_IP_EXIT_RC=0

	if [ -z "$1" ]
	then
		CHECK_IP_EXIT_RC=1
	elif [ "$1" != "0.0.0.0" ]
	then
		ping -n -c 1 "$1" > /dev/null 2>&1
		if [ $? -ne 0 ]
		then
			CHECK_IP_EXIT_RC=1
		fi
	fi

	if [ $CHECK_IP_EXIT_RC -ne 0 ]
	then
		$ECHO ""
		$ECHO "invalid address: $1"
		$ECHO " "
		error_message "error: invalid address $1"
		exit 1
	fi
}

check_smc_parameters()
{
	CHECK_SMC_PARAMETER_ERROR=0

	if [ "$AGENT_SERVERIP" = "$NO_VALUE" ]
	then
		$ECHO ""
		$ECHO "missing argument: --server=HOST[:PORT]"
		$ECHO " "
		$ECHO "See doc/INSTALL for more information."
		$ECHO " "
		error_message "error: missing --server argument"
		CHECK_SMC_PARAMETER_ERROR=1
	fi

	if [ "$AGENT_DISPLAYNAME" = "$NO_VALUE" ]
	then
		$ECHO ""
		$ECHO "missing argument: --display-name=<SMC display name>"
		$ECHO " "
		$ECHO "See doc/INSTALL for more information."
		$ECHO " "
		error_message "error: missing --display-name argument"
		CHECK_SMC_PARAMETER_ERROR=1
	fi

	if [ "$AGENT_UPDATEMANAGERIP" = "$NO_VALUE" ]
	then
		$ECHO ""
		$ECHO "missing argument: --update-uri=http://HOST[:PORT]"
		$ECHO " "
		$ECHO "See doc/INSTALL for more information."
		$ECHO " "
		error_message "error: missing --update-uri argument"
		CHECK_SMC_PARAMETER_ERROR=1
	fi


	if [ $CHECK_SMC_PARAMETER_ERROR -ne 0 ]
	then
		exit 1
	fi

	if [ "$AGENT_EVENTMANAGERIP" = "$NO_VALUE" ]
	then
		AGENT_EVENTMANAGERIP="$AGENT_SERVERIP"
	fi

	check_ip_exit $AGENT_SERVERIP
	check_ip_exit $AGENT_EVENTMANAGERIP
	check_ip_exit `echo $AGENT_UPDATEMANAGERIP`
}


updater_autostart()
{
	INSTALLUPDATER=1

	RCFILE="$UPDATENAME"
	WGSYSTEM=`sh script/getsysteminfo`
	case `$ECHO $WGSYSTEM | sed -e "s/ .*//"` in
		suse)
			SUSEVER=`$ECHO $WGSYSTEM | sed -e "s/^suse //" -e "s/\..*//"`
			if [ ! -z "$SUSEVER" ]
			then
				if [ $SUSEVER -ge 8 ]
				then
					RCFILE="rc.avupdater.SuSE8x"
				fi
			fi
			;;
	esac
		
	avinstall -f -S script -s "$RCFILE" -T "$AVDIR" -t "$UPDATENAME" -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	FOUNDCONF=0
	$ECHO -n "checking for existing /etc/$UPDATENAME.conf ... "
	$SLEEP 2
	if [ -f "/etc/$UPDATENAME.conf" ]
	then
		FOUNDCONF=1
		$ECHO "found"
	else
		$ECHO "not found"
	fi
	$SLEEP 1

	CONFTARGET="$UPDATENAME.conf"

	if [ $FOUNDCONF -eq 1 ]
	then
		if [ $HAS_INF -eq 0 ]
		then
			CONFTARGET="$UPDATENAME.conf.default"
		else
			FILE_TO_BACKUP="/etc/$UPDATENAME.conf"
			$ECHO -n "making backup of $FILE_TO_BACKUP ... "
			$SLEEP 2
			find_backup
			cp -f "$FILE_TO_BACKUP" "$BACKUPFILE"
			if [ $? -ne 0 ]
			then
				$ECHO "failed"
				$ECHO ""
				exit 1
			fi
			$ECHO "done ($BACKUPFILE)"
			$SLEEP 1
		fi
	fi

	COPYNAME="${UPDATENAME}.conf"

	avinstall -f -S etc -s "$COPYNAME" -T /etc -t "$CONFTARGET" -u root -g "$PROGNAME" -m 664
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	if [ ! -x "/usr/sbin/$UPDATENAME" ]
	then
		$ECHO " "
		$ECHO -n "Would you like to create a link in /usr/sbin for $UPDATENAME ? [y] "
		INPUT=$UPDATER_ADDLINK
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		CREATELINK=1
		case $INPUT in
			n*|N*)
				CREATELINK=0
				;;
		esac

		if [ $CREATELINK -eq 1 ]
		then
			$ECHO -n "linking /usr/sbin/$UPDATENAME to $AVDIR/$UPDATENAME ... "
			$SLEEP 2
			rm -f /usr/sbin/$UPDATENAME
			ln -s $AVDIR/$UPDATENAME /usr/sbin/$UPDATENAME
			$ECHO "done"
			$SLEEP 1
		fi
	fi

	SSS_SCRIPT="$AVDIR/$UPDATENAME"
	SSS_NAME="the internet update daemon"

	INPUT=$UPDATER_AUTOSTART
	if [ "$OS" != "openbsd" ]
	then
		$ECHO " "
		$ECHO -n "Would you like the internet update daemon to start automatically? [y] "
	else
		if [ "$INPUT" != "ignore" ]
		then
			print_openbsd_startup_msg
			INPUT="n"
		fi
	fi

	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	if [ "$INPUT" = "ignore" ]
	then
		# special case for updater, don't do anything
		STARTUPDATER=0
	else
		STARTUPDATER=1
		case $INPUT in
			n*|N*)
				STARTUPDATER=0
				;;
		esac

		SSS_START=$STARTUPDATER
		setup_startup_scripts
	fi
}

# main()

echo $0 | grep "^/" > /dev/null 2>&1
if [ $? -eq 0 ]
then
	CHECKINSTALLERDIR=$0
else
	CHECKINSTALLERDIR=`pwd`/$0
fi
INSTALLERDIR=`dirname $CHECKINSTALLERDIR 2> /dev/null`

if [ ! -z "$INSTALLERDIR" ]
then
	cd "$INSTALLERDIR"
fi

PEPR=0
if [ -f ".installrc" ]
then
	. ./.installrc
fi

# SMC agent defaults
NO_VALUE="install_no_user_value_defined"
AGENT_AGENTPORT=7030
AGENT_SERVERIP="$NO_VALUE"
AGENT_SERVERPORT=7000
AGENT_EVENTMANAGERIP="$NO_VALUE"
AGENT_EVENTMANAGERPORT=7010
AGENT_UPDATEMANAGERIP="$NO_VALUE"
AGENT_UPDATEMANAGERPORT=80
AGENT_DISPLAYNAME="$NO_VALUE"
AGENT_NETWORKNAME="$NO_VALUE"
AGENT_GUID="$NO_VALUE"
AGENT_SETUP_CONFIG="$NO_VALUE"
AGENT_PRODUCT_CONFIG="$NO_VALUE"

AVDIR="/usr/lib/AntiVir"
PROGNAME="antivir"
VDFNAME1="antivir0.vdf"
VDFNAME2="antivir1.vdf"
VDFNAME3="antivir2.vdf"
VDFNAME4="antivir3.vdf"
UPDATENAME="avupdater"
GUARDNAME="avguard"
CONFIGPROGNAME="configantivir"
SMCAGENTNAME="agent"
MGTUSER="uucp"
STEP=1
EXELIST="which id sleep head cat grep cp chmod ln uname ps sed gzip tar"
CPLIST=""
FULLPRODUCTNAME=""
CONFNAME=""
SMCPLUGINPREFIX=""
HASGUARD=0
HASCMDSCANNER=0
HASGUI=0
HASCOREBINARY=0
SLEEP="sleep"
COPYEXE=0
INSTALLUPDATER=0
CONFIG_CORE=0

HAS_INF=0
WEBGATE_ADDLINK=""
WEBGATE_AUTOSTART=""
GUARD_ADDLINK=""
GUARD_AUTOSTART=""
GUARD_STARTNOW=""
UPDATER_INSTALL=""
UPDATER_ADDLINK=""
UPDATER_AUTOSTART=""
GUARD_INSTALL=""
DAZUKO_INSTALLTYPE=""
DAZUKO_MODULEPATH=""
GUI_INSTALL=""
ANTIVIR_CONFIG=""

OS=`uname | env LANG=C LC_ALL=C LC_CTYPE=C tr '[:upper:]' '[:lower:]'`
OSREL="`uname -r`"

case "${OS}" in
	linux)
		echo $OSREL | grep "^2\.6\." > /dev/null 2>&1
		if [ $? -eq 0 ]
		then
			OS="linux26"
		fi
		;;
esac

set_commands

for param in "$@"
do
	case $param in
		--fast|-f|--nosleep)
			SLEEP="noop"
			;;
		--inf=*)
			TEMP="`$ECHO $param | sed -e s/^--inf=//`"
			if [ -f "$TEMP" ]
			then
				. "$TEMP"
				HAS_INF=1
			fi
			;;
		--agent-port=*)
			AGENT_AGENTPORT="`$ECHO $param | sed -e s/^--agent-port=//`"
			;;
		--server=*)
			IFACE="`$ECHO $param | sed -e s/^--server=//`"
			parse_iface_for_ip_port
			if [ "$PARSED_IP" != "?" ]
			then
				AGENT_SERVERIP=$PARSED_IP
			fi
			if [ "$PARSED_PORT" != "?" ]
			then
				AGENT_SERVERPORT=$PARSED_PORT
			fi
			;;
		--event-manager=*)
			IFACE="`$ECHO $param | sed -e s/^--event-manager=//`"
			parse_iface_for_ip_port
			if [ "$PARSED_IP" != "?" ]
			then
				AGENT_EVENTMANAGERIP=$PARSED_IP
			fi
			if [ "$PARSED_PORT" != "?" ]
			then
				AGENT_EVENTMANAGERPORT=$PARSED_PORT
			fi
			;;
		--update-manager=*)
			$ECHO ""
			$ECHO "warning: invalid argument"
			$ECHO ""
			$ECHO "The argument --update-manager has been replaced"
			$ECHO "by --update-uri=http://HOST[:PORT]"
			$ECHO "See doc/INSTALL for more details."
			$ECHO ""
			;;
		--update-uri=http://*)
			IFACE="`$ECHO $param | sed -e 's/^--update-uri=http:\/\///'`"
			parse_iface_for_ip_port
			if [ "$PARSED_IP" != "?" ]
			then
				AGENT_UPDATEMANAGERIP=$PARSED_IP
			fi
			if [ "$PARSED_PORT" != "?" ]
			then
				AGENT_UPDATEMANAGERPORT=$PARSED_PORT
			fi
			;;
		--update-uri=*)
			IFACE="`$ECHO $param | sed -e s/^--update-uri=`"
			parse_iface_for_ip_port
			if [ "$PARSED_IP" != "?" ]
			then
				AGENT_UPDATEMANAGERIP=$PARSED_IP
			fi
			if [ "$PARSED_PORT" != "?" ]
			then
				AGENT_UPDATEMANAGERPORT=$PARSED_PORT
			fi
			;;
		--display-name=*)
			TEMP="`$ECHO $param | sed -e s/^--display-name=//`"
			AGENT_DISPLAYNAME="$TEMP"
			;;
		--network-name=*)
			TEMP="`$ECHO $param | sed -e s/^--network-name=//`"
			AGENT_NETWORKNAME="$TEMP"
			;;
		--guid=*)
			TEMP="`$ECHO $param | sed -e s/^--guid=//`"
			AGENT_GUID="$TEMP"
			;;
		--setup-config=*)
			TEMP="`$ECHO $param | sed -e s/^--setup-config=//`"
			AGENT_SETUP_CONFIG="$TEMP"
			;;
		--product-config=*)
			TEMP="`$ECHO $param | sed -e s/^--product-config=//`"
			AGENT_PRODUCT_CONFIG="$TEMP"
			;;
	esac
done

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 " "
		error_message "error: script must be run as root"
		exit 1
	fi
fi

KERNELVERSION="${OS}-${OSREL}"
CLASSIFICATION=`sh script/getsysteminfo --classification`
FALLBACK_CLASSIFICATION=`sh script/getsysteminfo --classification --fallback`
USE_CLASSIFICATION=""

case $PRODUCT in
	savapisdk)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME"
		FULLPRODUCTNAME="AntiVir SAVAPI SDK"
		CONFNAME="avsavapi"
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxsav"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	webgate)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME"
		FULLPRODUCTNAME="Avira AntiVir WebGate (UNIX)"
		CONFNAME="avwebgate"
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxwgt"
		HASCOREBINARY=1
		CONFIG_CORE=1
		if [ "$CLASSIFICATION" = "openbsd_elf" ]
		then
			# check for openbsd 3.4,3.5
			SYSTEMINFO=`sh script/getsysteminfo`
			if [ "$SYSTEMINFO" = "openbsd 3.4" -o "$SYSTEMINFO" = "openbsd 3.5" ]
			then
				CLASSIFICATION="unsupported"
			fi
		fi
		;;
	mailgate)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME"
		FULLPRODUCTNAME="Avira AntiVir MailGate (UNIX)"
		CONFNAME="avmailgate"
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxmgt"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	milter)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME"
		FULLPRODUCTNAME="Avira AntiVir Milter (UNIX)"
		CONFNAME="avmilter"
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxmgt"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	server)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME etc/$GUARDNAME.conf script/$GUARDNAME"
		FULLPRODUCTNAME="Avira AntiVir Server (UNIX)"
		CONFNAME="avguard"
		HASGUARD=1
		HASCMDSCANNER=1
		SMCPLUGINPREFIX="uxsrv"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	workstation)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME etc/$GUARDNAME.conf script/$GUARDNAME"
		FULLPRODUCTNAME="Avira AntiVir Workstation (UNIX)"
		CONFNAME="avguard"
		HASGUARD=1
		HASCMDSCANNER=1
		SMCPLUGINPREFIX="uxwks"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	vsa)
		CPLIST="vdf/$VDFNAME1 vdf/$VDFNAME2 vdf/$VDFNAME3 vdf/$VDFNAME4 script/$UPDATENAME script/$CONFIGPROGNAME"
		FULLPRODUCTNAME="Avira AntiVir VSA (UNIX)"
		CONFNAME="avsapvsa"
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxvsa"
		HASCOREBINARY=1
		CONFIG_CORE=1
		;;
	smcagent)
		check_smc_parameters
		CPLIST=""
		FULLPRODUCTNAME="AntiVir Security Management Center UNIX Agent"
		CONFNAME=""
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxagt"
		HASCOREBINARY=0
		;;
	updateplugin)
		CPLIST="script/$UPDATENAME"
		FULLPRODUCTNAME="Avira Updater (UNIX)"
		CONFNAME=""
		HASGUARD=0
		HASCMDSCANNER=0
		SMCPLUGINPREFIX="uxupd"
		HASCOREBINARY=0
		;;
esac

for subdir in bin lib
do
	if [ -d "$subdir" ]
	then
		if [ -d "$subdir/$CLASSIFICATION" ]
		then
			USE_CLASSIFICATION="$CLASSIFICATION"
		else
			USE_CLASSIFICATION="$FALLBACK_CLASSIFICATION"

			if [ ! -d "$subdir/$USE_CLASSIFICATION" ]
			then
				USE_CLASSIFICATION=""
			fi
		fi

		if [ ! -z "$USE_CLASSIFICATION" ]
		then
			for item in `ls $subdir/$USE_CLASSIFICATION`
			do
				if [ -f "$subdir/$item" ]
				then
					rm -f $subdir/$item
				fi

				cp $subdir/$USE_CLASSIFICATION/$item $subdir
			done
		fi
	fi
done

GUICOMMONFILE="gui/gui_${PRODUCT}_common.tgz"
GUICUSTOMFILE="gui/gui_${PRODUCT}_${CLASSIFICATION}.tgz"
if [ ! -f "$GUICUSTOMFILE" -a ! -z "$FALLBACK_CLASSIFICATION" ]
then
	GUICUSTOMFILE="gui/gui_${PRODUCT}_${FALLBACK_CLASSIFICATION}.tgz"
fi

if [ -f "$GUICUSTOMFILE" -a -f "script/$PROGNAME-gui" ]
then
	HASGUI=1
fi

check_copyfiles
check_executables

# load avinstall
. script/sh.avinstall

$ECHO " "
$ECHO "Starting $FULLPRODUCTNAME $PRODUCTVERSION installation..."
$ECHO " "
$SLEEP 1

$ECHO "Before installing this software, you must agree to the terms"
$ECHO "of the license."
$ECHO " "
$ECHO "Use the arrow keys to scroll through the license. When you"
$ECHO "are finished reading, press 'q' to exit the viewer."
$ECHO " "
$ECHO "Press <ENTER> to view the license."
if [ $HAS_INF -eq 0 ]
then
	read INPUT
fi

if [ $HAS_INF -ne 0 ]
then
	PAGER="cat"
else
	if [ -z "$PAGER" ]
	then
		PAGER="more"
	fi
fi
$PAGER LICENSE
$ECHO " "
$ECHO -n "Do you agree to the license terms? [n] "

INPUT=$LICENSE_AGREEMENT
if [ -z "$INPUT" ]
then
	read INPUT
else
	$ECHO "$INPUT"
fi
$SLEEP 1

case $INPUT in
	y*|Y*|j*|J*)
		;;
	*)
		$ECHO "Installation aborted."
		exit 1
		;;
esac

$ECHO " "
$ECHO " "

if [ -d "$AVDIR" ]
then
	$ECHO "previous installation of AntiVir found"
	$ECHO "(updating necessary components)"
	$SLEEP 1
	$ECHO " "
fi

$GROUPADD $PROGNAME > /dev/null 2>&1

avinstall -T "$AVDIR" -u root -g "$PROGNAME" -m 755

if [ $PEPR -eq 1 ]
then
	touch $AVDIR/.avpepr
fi

if [ "${OS}" = "sunos" ]
then
	avinstall -S script -s echo_sunos -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		error_message "error: failed to copy script/echo_sunos to $AVDIR"
		exit 1
	fi
fi

if [ $HASCOREBINARY -eq 1 ]
then
	if [ $HASCMDSCANNER -eq 1 ]
	then
		$ECHO "$STEP) installing command line scanner"
	else
		$ECHO "$STEP) installing AntiVir Engine"
	fi
	$SLEEP 2

	COPYEXE=1

	chmod 755 bin/$PROGNAME
	bin/$PROGNAME --version > /dev/null 2>&1
	if [ $? -eq 0 ]
	then	
		if [ $COPYEXE -eq 1 ]
		then
			avinstall -f -S bin -s "$PROGNAME" -T "$AVDIR" -u root -g "$PROGNAME" -m 755
			if [ $? -ne 0 ]
			then
				$ECHO "This system is probably not supported by $FULLPRODUCTNAME."
				$ECHO " "
				exit 1
			fi
	
			if [ -f "/etc/prelink.conf" ]
			then
				$ECHO " "
				$ECHO "NOTICE: This system has a prelinker. Prelinking the"
				$ECHO "        $PROGNAME binary will not work correctly. Either"
				$ECHO "        disable prelinking or add $AVDIR as an"
				$ECHO "        excluded prelink path."
				$ECHO " "
				$ECHO "        For example, add '-b $AVDIR'"
				$ECHO "        to /etc/prelink.conf"
				$ECHO " "
			fi
		fi
	else
		$ECHO "bin/$PROGNAME was not able to execute on your system."
		$ECHO "Here is the output of \"bin/$PROGNAME --version\":"
		$ECHO ""
		bin/$PROGNAME --version
		$ECHO ""
		$ECHO "Installation abort"
		exit 1
	fi

	avinstall -f -S vdf -s "$VDFNAME1" -T "$AVDIR" -u root -g "$PROGNAME" -m 644
	avinstall -f -S vdf -s "$VDFNAME2" -T "$AVDIR" -u root -g "$PROGNAME" -m 644
	avinstall -f -S vdf -s "$VDFNAME3" -T "$AVDIR" -u root -g "$PROGNAME" -m 644
	avinstall -f -S vdf -s "$VDFNAME4" -T "$AVDIR" -u root -g "$PROGNAME" -m 644

	if [ "$VARIANT" = "AVDE" ]
	then
		INPUTERROR=1
		while [ $INPUTERROR -eq 1 ]
		do
			KEYDEFAULT=""
			for item in `ls | grep -i "\.key$"`
			do
				KEYDEFAULT="$item"
			done
			$ECHO " "
			$ECHO -n "Enter the path to your key file: [$KEYDEFAULT] "
			INPUT="$KEY_FILE"
			if [ -z "$INPUT" ]
			then
				if [ $HAS_INF -eq 0 ]
				then
					read INPUT
					if [ -z "$INPUT" ]
					then
						INPUT="$KEYDEFAULT"
					fi
				else
					$ECHO "$INPUT"
				fi
			else
				$ECHO "$INPUT"
			fi
			$SLEEP 1

			if [ -z "$INPUT" ]
			then
				INPUTERROR=0
			else
				if [ ! -f "$INPUT" ]
				then
					$ECHO "$INPUT not found"
				else
					INPUTERROR=0
				fi
			fi
		done

		if [ -z "$INPUT" ]
		then
			$ECHO "no key file will be installed"
		elif [ "`dirname $INPUT`" = "$AVDIR" ]
		then
			$ECHO "key file already installed"
		else
			findnewkey "$AVDIR"
			$ECHO -n "copying $INPUT to $AVDIR/$NEWKEY ... "
			$SLEEP 2
			cp -f "$INPUT" "$AVDIR/$NEWKEY"
			chmod 644 "$AVDIR/$NEWKEY"
			chown root:$PROGNAME "$AVDIR/$NEWKEY"
			$ECHO "done"
		fi
		$SLEEP 1
	else
		if [ -d "evaluation" ]
		then
			for RCFILE in `ls evaluation | grep -i \.rck`
			do
				RCCODE="`head -n 1 evaluation/$RCFILE`"
				grep $RCCODE /etc/$PROGNAME.conf > /dev/null 2>&1
				if [ $? -ne 0 ]
				then
					$ECHO "# $FULLPRODUCTNAME Evaluation Code (no Activation Key)" >> /etc/$PROGNAME.conf
					$ECHO "License $RCCODE" >> /etc/$PROGNAME.conf
					$ECHO "" >> /etc/$PROGNAME.conf
				fi
			done
		fi

		avinstall -f -S script -s uninstall -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	fi

	avinstall -f -S script -s "$CONFIGPROGNAME" -T "$AVDIR" -u root -g "$PROGNAME" -m 755
	if [ $? -ne 0 ]
	then
		exit 1
	fi

	$AVDIR/$PROGNAME --version > /dev/null 2>&1

	if [ ! -x "/usr/bin/$PROGNAME" ]
	then
		$ECHO -n "linking /usr/bin/$PROGNAME to $AVDIR/$PROGNAME ... "
		$SLEEP 2
		rm -f /usr/bin/$PROGNAME
		ln -s $AVDIR/$PROGNAME /usr/bin/$PROGNAME
		$ECHO "done"
		$SLEEP 1
	fi

	if [ $HASCMDSCANNER -eq 1 ]
	then
		$ECHO "installation of command line scanner complete"
	else
		$ECHO "installation of AntiVir Engine complete"
	fi
	$SLEEP 1

	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing internet update daemon"
	$SLEEP 1
	$ECHO "An internet update daemon is available with version $PRODUCTVERSION of"
	$ECHO "$FULLPRODUCTNAME. This is a program that will run in the background"
	$ECHO "and automatically check for updates (internet access is required)."
	$ECHO "Instead of installing the internet update daemon, you may also"
	$ECHO "manually check for updates using:"
	$ECHO " "
	$ECHO "     $PROGNAME --update"
	$ECHO " "
	$ECHO "Please read the README file for more information about updating and"
	$ECHO "which method best suits you."
	$ECHO " "
	if [ -f "$AVDIR/$UPDATENAME" ]
	then
		REINSTALL="re-"
	else
		REINSTALL=""
	fi
	$ECHO -n "Would you like to ${REINSTALL}install the internet update daemon? [n] "
	INPUT=$UPDATER_INSTALL
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	INSTALLUPDATER=0
	case $INPUT in
		y*|Y*|j*|J*)
			INSTALLUPDATER=1
			;;
	esac

	RCDIR=""
	if [ $INSTALLUPDATER -eq 1 ]
	then
		updater_autostart
		
		$ECHO "${REINSTALL}installation of the internet update daemon complete"
	else
		if [ ! -f "/etc/$UPDATENAME.conf" ]
		then
			cp -f etc/$UPDATENAME.conf-noinstall /etc/$UPDATENAME.conf
		fi
		chown root:$PROGNAME /etc/$UPDATENAME.conf
		chmod 664 /etc/$UPDATENAME.conf
		$ECHO "the internet update daemon will NOT be ${REINSTALL}installed"
	fi
	$SLEEP 1
fi

if [ $HASGUARD -eq 1 ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing AvGuard"
	$SLEEP 1
	$ECHO "Version $PRODUCTVERSION of $FULLPRODUCTNAME is capable of on-access,"
	$ECHO "real-time scanning of files. This provides the ultimate protection"
	$ECHO "against viruses and other unwanted software. The on-access scanner"
	$ECHO "(called AvGuard) is based on Dazuko, a free software project providing"

	if [ "$OS" = "sunos" ]
	then

		KMODULE="dazuko"

		$ECHO "access control."
		$ECHO " "
		$ECHO -n "Would you like to install AvGuard? [y] "
		INPUT=$GUARD_INSTALL
		if [ -z "$INPUT" ]
		then
			read INPUT
		else
			$ECHO "$INPUT"
		fi
		$SLEEP 1

		case $INPUT in
			n*|N*)
				INPUT=0
				;;
			*)
				INPUT=1
		esac

		if [ $INPUT -eq 1 ]
		then
			OSPROC=`uname -p`
			case "${OSPROC}" in
			sparc)  USR_KERNEL_DRV_SUBDIR="/sparcv9";;
			i386)   USR_KERNEL_DRV_SUBDIR="";;
			esac

			GUARDINSTALLEDAS=""

			if [ ! -d "/usr/kernel/drv" ]
			then
				mkdir -p /usr/kernel/drv
				chmod 755 /usr/kernel/drv
			fi

			avinstall -f -S bin -s dazuko.conf -T /usr/kernel/drv -u root -g root -m 644
			if [ $? -ne 0 ]
			then
				exit 1
			fi

			if [ -n "${USR_KERNEL_DRV_SUBDIR}" -a ! -d "/usr/kernel/drv${USR_KERNEL_DRV_SUBDIR}" ]
			then
				mkdir -p /usr/kernel/drv${USR_KERNEL_DRV_SUBDIR}
				chmod 755 /usr/kernel/drv${USR_KERNEL_DRV_SUBDIR}
			fi

			avinstall -f -S bin -s "$KMODULE" -T /usr/kernel/drv${USR_KERNEL_DRV_SUBDIR} -u root -g root -m 644
			if [ $? -ne 0 ]
			then
				exit 1
			fi

			avinstall -T "$AVDIR/$KERNELVERSION" -u root -g "$PROGNAME" -m 755

			avinstall -f -S bin -s "$KMODULE" -T "$AVDIR/$KERNELVERSION" -u root -g "$PROGNAME" -m 644
			if [ $? -ne 0 ]
			then
				exit 1
			fi

			if [ ! -c "/devices/pseudo/dazuko@0:dazuko" ]
			then
				$ECHO -n "installing Dazuko ... "
				$SLEEP 2
				add_drv $KMODULE
				if [ $? -ne 0 ]
				then
					$ECHO "failed"
					$ECHO ""
					exit 1
				fi
				$ECHO "done"
				$SLEEP 1
			fi

			install_guard
			GUARDINSTALLEDAS="module"
		else
			$ECHO "AvGuard will NOT be installed. See contrib/dazuko/HOWTO-Dazuko"
			$ECHO "for more information about Dazuko."
			$SLEEP 1
			GUARDINSTALLEDAS=""
		fi

	else
		$ECHO "access control. In order to use AvGuard you will need to compile Dazuko"
		$ECHO "for your kernel. Please refer to contrib/dazuko/HOWTO-Dazuko for"
		$ECHO "information about how to do this. There are several ways in which you"
		$ECHO "can install AvGuard."
		$ECHO " "
		$ECHO "        module     - Dazuko will be loaded by the $GUARDNAME script"
		$ECHO " "
		$ECHO "        kernel     - Dazuko is always loaded"
		$ECHO "                     (and should not be loaded by the $GUARDNAME script)"
		$ECHO " "
		$ECHO "        no install - do not install AvGuard at this time"
		$ECHO " "
		$ECHO "Note: Dazuko currently only works with GNU/Linux, FreeBSD and Solaris"
		$ECHO "      systems. If you are interested in helping us port Dazuko to"
		$ECHO "      OpenBSD, feel free to check out the Dazuko Project at:"
		$ECHO "      http://www.dazuko.org"
		$ECHO " "
		$ECHO "available options: m k n"

		case "${OS}" in
			freebsd)
				KMODULE="dazuko.ko"
				;;
			linux26)
				if [ "`uname -a | grep ' SMP '`" ]; then
					KERNELVERSION="${KERNELVERSION}-smp"
				fi
				KMODULE="dazuko.ko"
				;;
			*)
				if [ "`uname -a | grep ' SMP '`" ]; then
					KERNELVERSION="${KERNELVERSION}-smp"
				fi
				KMODULE="dazuko.o"
				;;
		esac

		OK=0
		while [ $OK -eq 0 ]
		do
			getDEV
			if [ ! -z "$DEV" ]
			then
				QDEFAULT="k"
			elif [ -f "$AVDIR/$KERNELVERSION/$KMODULE" ]
			then
				QDEFAULT="m"
			else
				QDEFAULT="n"
			fi

			$ECHO " "
			$ECHO -n "How should AvGuard be installed? [$QDEFAULT] "
			INPUT=$DAZUKO_INSTALLTYPE
			if [ -z "$INPUT" ]
			then
				read INPUT
			else
				$ECHO "$INPUT"
			fi
			$SLEEP 1

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

			case $INPUT in
				m*|M*)
					if [ -f "$AVDIR/$KERNELVERSION/$KMODULE" ]
					then
						QDEFAULT=" [$AVDIR/$KERNELVERSION/$KMODULE]"
					else
						QDEFAULT=""
					fi
					$ECHO -n "Enter the full path to ${KMODULE}${QDEFAULT}: "
					INPUT=$DAZUKO_MODULEPATH
					if [ -z "$INPUT" ]
					then
						read INPUT
					else
						$ECHO "$INPUT"
					fi

					if [ -z "$INPUT" -a ! -z "$QDEFAULT" ]
					then
						INPUT="$AVDIR/$KERNELVERSION/$KMODULE"
					fi

					if [ -f "$INPUT" ]
					then
						$ECHO " "

						OK=1

						if [ "$INPUT" != "$AVDIR/$KERNELVERSION/$KMODULE" ]
						then
							$ECHO -n "detecting kernel version ... "
							$SLEEP 2
							$ECHO "$KERNELVERSION"
							$SLEEP 1

							avinstall -T "$AVDIR/$KERNELVERSION" -u root -g "$PROGNAME" -m 755

							avinstall -f -s "$INPUT" -T "$AVDIR/$KERNELVERSION" -t "$KMODULE" -u root -g "$PROGNAME" -m 644
							if [ $? -ne 0 ]
							then
								exit 1
							fi
						fi
					else
						$ECHO "$INPUT not found."
					fi

					if [ $OK -eq 1 ]
					then
						install_guard
						GUARDINSTALLEDAS="module"
					fi
					;;
				k*|K*)
					OK=1

					if [ -z "$DEV" ]
					then
						$ECHO ""
						$ECHO "WARNING: Dazuko has not been detected as loaded."
						$ECHO "         It will be assumed that Dazuko is available"
						$ECHO "         on this system."
					fi

					install_guard
					GUARDINSTALLEDAS="kernel"
					;;
				n*|N*)
					$ECHO "AvGuard will NOT be installed. See contrib/dazuko/HOWTO-Dazuko"
					$ECHO "for more information about Dazuko."
					$SLEEP 1
					GUARDINSTALLEDAS=""
					OK=1
					;;
			esac
		done

	fi
fi

if [ "$PRODUCT" = "webgate" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing main program"
	$SLEEP 1

	install_webgate
fi

if [ "$PRODUCT" = "mailgate" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing main program"
	$SLEEP 1

	create_mgtuser_macosx
	install_mailgate
fi

if [ "$PRODUCT" = "milter" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing main program"
	$SLEEP 1

	create_mgtuser_macosx
	install_milter
fi

if [ "$PRODUCT" = "savapisdk" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing SDK development files"
	$SLEEP 1

	install_savapisdk
fi

if [ "$PRODUCT" = "vsa" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing VSA library"
	$SLEEP 1

	install_vsa
fi

if [ "$PRODUCT" = "updateplugin" ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing AntiVir Internet Update Daemon"
	$SLEEP 1

	updater_autostart
fi

if [ "$PRODUCT" = "smcagent" ]
then
	install_smcagent
fi

if [ "$PRODUCT" = "updateplugin" ]
then
	install_smcplugin
fi

INSTALLGUI=1
if [ $HASGUI -eq 1 ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) installing GUI (+ SMC support)"
	$SLEEP 1
	$ECHO " "
	$ECHO "Note: The AntiVir Security Management Center (SMC) requires this"
	$ECHO "      feature, even if you do not intend to use the GUI."
	$ECHO " "
	$ECHO "This product comes with a GUI that allows you to monitor realtime"
	$ECHO "activity, view logs, and configure the product. This tool is optional"
	$ECHO "(not required) for the product to run."
	$ECHO " "
	$ECHO "The GUI requires Sun Java 1.4.x or higher."
	$ECHO " "
	$ECHO -n "Would you like to install the GUI (+ SMC support)? [y] "
	INPUT=$GUI_INSTALL
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	case $INPUT in
		n*|N*)
			INSTALLGUI=0
			;;
	esac
fi

if [ ! -z "$CONFNAME" ]
then
	FOUNDCONF=0
	$ECHO -n "checking for existing /etc/$CONFNAME.conf ... "
	$SLEEP 2
	if [ -f "/etc/$CONFNAME.conf" ]
	then
		FOUNDCONF=1
		$ECHO "found"
	else
		$ECHO "not found"
	fi
	$SLEEP 1

	CONFTARGET="$CONFNAME.conf"

	if [ $FOUNDCONF -eq 1 ]
	then
		if [ $HAS_INF -eq 0 ]
		then
			CONFTARGET="$CONFNAME.conf.default"
		else
			FILE_TO_BACKUP="/etc/$CONFNAME.conf"
			$ECHO -n "making backup of $FILE_TO_BACKUP ... "
			$SLEEP 2
			find_backup
			cp -f "$FILE_TO_BACKUP" "$BACKUPFILE"
			if [ $? -ne 0 ]
			then
				$ECHO "failed"
				$ECHO ""
				exit 1
			fi
			$ECHO "done ($BACKUPFILE)"
			$SLEEP 1
		fi
	fi

	if [ $HASGUI -eq 1 -a $INSTALLGUI -eq 1 ]
	then
		COPYNAME="${CONFNAME}.conf-gui"
	else
		COPYNAME="${CONFNAME}.conf"
	fi

	avinstall -f -S etc -s "$COPYNAME" -T /etc -t "$CONFTARGET" -u root -g "$PROGNAME" -m 664
	if [ $? -ne 0 ]
	then
		exit 1
	fi
fi

if [ $HASGUI -eq 1 ]
then
	if [ $INSTALLGUI -eq 1 ]
	then
		chgrp -R $PROGNAME $AVDIR > /dev/null 2>&1
		install_gui
	else
		$ECHO "GUI will NOT be installed"
	fi
	$SLEEP 2
fi

if [ $HASCOREBINARY -ne 0 -a $CONFIG_CORE -eq 1 ]
then
	STEP=`expr $STEP + 1`
	$ECHO " "
	$SLEEP 1
	$ECHO " "
	$SLEEP 1
	$ECHO "$STEP) configuring AntiVir Updater"
	$SLEEP 1
	$ECHO " "
	$ECHO "Your connection to the internet might require special configuration"
	$ECHO "settings (such as HTTP proxy settings). You may also want the"
	$ECHO "updater to log to specific files or send email notification. You"
	$ECHO "now have the opportunity to set these options."

	if [ ! -f "$AVDIR/$UPDATENAME" ]
	then
		$ECHO " "
		$ECHO "Note: Although you have not installed the internet update daemon,"
		$ECHO "      these settings may still be important for performing manual"
		$ECHO "      updates."
	fi

	$ECHO " "
	$ECHO -n "Would you like to configure the AntiVir updater now? [y] "
	INPUT=$ANTIVIR_CONFIG
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	CONFIGPROG=1
	case $INPUT in
		n*|N*)
			CONFIGPROG=0
			;;
	esac

	if [ $CONFIGPROG -eq 1 ]
	then
		$AVDIR/$CONFIGPROGNAME
		$ECHO -n "Press <ENTER> to continue."
		if [ $HAS_INF -eq 0 ]
		then
			read INPUT
		else
			$ECHO " "
		fi
	fi
fi

if [ $HASGUARD -eq 1 -a ! -z "$GUARDINSTALLEDAS" ]
then
	$ECHO " "
	$ECHO -n "Would you like to start AvGuard now? [y] "
	INPUT=$GUARD_STARTNOW
	if [ -z "$INPUT" ]
	then
		read INPUT
	else
		$ECHO "$INPUT"
	fi
	$SLEEP 1

	STARTGUARD=1
	case $INPUT in
		n*|N*)
			STARTGUARD=0
			;;
	esac

	if [ $STARTGUARD -eq 1 ]
	then
		$AVDIR/avguard start
		$SLEEP 2
	fi
fi

$ECHO " "
$ECHO " "
$ECHO "Installation of the following features complete:"
$SLEEP 1
if [ "$PRODUCT" != "smcagent" ]
then
	if [ "$PRODUCT" != "updateplugin" ]
	then
		if [ $HASCMDSCANNER -eq	 1 ]
		then
			$ECHO -n "     AntiVir command line scanner"
		else
			$ECHO -n "     AntiVir Engine"
		fi
		if [ $COPYEXE -eq 0 ]
		then
			$ECHO -n " (previously installed)"
		fi
		$ECHO " "
		$SLEEP 1
	fi
	if [ -f "$AVDIR/$UPDATENAME" ]
	then
		$ECHO -n "     AntiVir Internet Update Daemon"
		if [ $INSTALLUPDATER -eq 0 ]
		then
			$ECHO -n " (previously installed)"
		fi
		$ECHO " "
		$SLEEP 1
	fi
fi
if [ $HASGUARD -eq 1 ]
then
	if [ -f "/etc/$GUARDNAME.conf" ]
	then
		$ECHO -n  "     AntiVir Guard"
		if [ -z "$GUARDINSTALLEDAS" ]
		then
			$ECHO -n " (previously installed)"
		fi
		$ECHO " "
		$SLEEP 1
	fi
fi
if [ "$PRODUCT" = "webgate" ]
then
		$ECHO "     AntiVir WebGate"
		$SLEEP 1
fi
if [ "$PRODUCT" = "mailgate" ]
then
		$ECHO "     AntiVir MailGate"
		$SLEEP 1
fi
if [ "$PRODUCT" = "milter" ]
then
		$ECHO "     AntiVir Milter"
		$SLEEP 1
fi
if [ "$PRODUCT" = "savapisdk" ]
then
		$ECHO "     AntiVir SAVAPI SDK"
		$SLEEP 1
fi
if [ "$PRODUCT" = "vsa" ]
then
		$ECHO "     AntiVir VSA"
		$SLEEP 1
fi
if [ "$PRODUCT" = "smcagent" ]
then
		$ECHO "     AntiVir SMC Agent"
		$SLEEP 1
fi
if [ $HASGUI -eq 1 ]
then
	if [ $INSTALLGUI -eq 1 ]
	then
		$ECHO "     AntiVir GUI"
		$SLEEP 1
	fi
fi

if [ -f "/etc/$PROGNAME.conf" ]
then
	$ECHO " "
	$ECHO " "
	$ECHO "************** IMPORTANT ****************"
	$ECHO " "
	$ECHO "The file /etc/$PROGNAME.conf has been detected"
	$ECHO "on this system."
	$ECHO " "
	$ECHO "The file /etc/$PROGNAME.conf has been deprecated"
	$ECHO "and should no longer be used. Each AntiVir"
	$ECHO "component has its own configuration file:"
	$ECHO " "
	$ECHO " /etc/avupdater.conf   AntiVir Updater" 
	$ECHO " /etc/avguard.conf     AntiVir Guard"
	$ECHO " /etc/avmailgate.conf  AntiVir MailGate"
	$ECHO " /etc/avmilter.conf    AntiVir Milter"
	$ECHO " /etc/avwebgate.conf   AntiVir WebGate"
	$ECHO " /etc/avsavapi.conf    AntiVir SAVAPI"
	$ECHO " "
	$ECHO "Please rename or remove /etc/$PROGNAME.conf" 
	$ECHO "from your system."
	$ECHO " "
	$ECHO "************** IMPORTANT ****************"
	$ECHO " "
	$ECHO -n "Press <ENTER> to continue."
	if [ $HAS_INF -eq 0 ]
	then
		read INPUT
	else
		$ECHO " "
	fi
fi

if [ "$PRODUCT" = "mailgate" ]
then
	
	$ECHO " "
	$ECHO " "
	$ECHO "***********************************************************"
	$ECHO "NOTICE: Since version 2.0.4, AntiVir MailGate no longer"
	$ECHO "        consists of two different binaries"
	$ECHO "        (avgated, avgatefwd). There is now only one binary"
	$ECHO "        (avmailgate.bin). Updated rc-scripts are provided"
	$ECHO "        with this installation package."
	$ECHO "***********************************************************"
        $SLEEP 2

	if [ -f "/etc/avguard.conf" ]
	then
		$ECHO " "
		$ECHO " "
		$ECHO "************************************************************"
		$ECHO " WARNING: AvGuard detected. Make sure the MailGate SpoolDir"
		$ECHO "          and TemporaryDir are configured as ExcludePath's"
		$ECHO "          in /etc/avguard.conf. Otherwise AvGuard will"
		$ECHO "          prevent MailGate from detecting alerts."
		$ECHO "************************************************************"
		$SLEEP 2
	fi
fi

if [ "$PRODUCT" = "milter" ]
then
	if [ -f "/etc/avguard.conf" ]
	then
		$ECHO " "
		$ECHO " "
		$ECHO "************************************************************"
		$ECHO " WARNING: AvGuard detected. Make sure the Milter SpoolDir"
		$ECHO "          and TemporaryDir are configured as ExcludePath's"
		$ECHO "          in /etc/avguard.conf. Otherwise AvGuard will"
		$ECHO "          prevent Milter from detecting alerts."
		$ECHO "************************************************************"
		$SLEEP 2
	fi
fi

if [ "$PRODUCT" = "webgate" ]
then
	if [ -f "/etc/avguard.conf" ]
	then
		$ECHO " "
		$ECHO " "
		$ECHO "************************************************************"
		$ECHO " WARNING: AvGuard detected. Make sure the WebGate"
		$ECHO "          TemporaryDir is configured as an ExcludePath in"
		$ECHO "          /etc/avguard.conf. Otherwise AvGuard will prevent"
		$ECHO "          WebGate from detecting alerts."
		$ECHO "************************************************************"
		$SLEEP 2
	fi
fi

$ECHO " "
$SLEEP 1

if [ "$VARIANT" = "AVDE" ]
then
	if [ -z "`ls $AVDIR | grep -i \.key`" ]
	then
		$ECHO " "
		$ECHO "If you have any license key files, please copy them to $AVDIR"
		$ECHO "before running the software. Without a valid license key, it will"
		$ECHO "run in DEMO mode."
	fi
fi

if [ $HASCOREBINARY -eq 1 ]
then
	$ECHO " "
	$ECHO "Note: It is highly recommended that you perform an update now to"
	$ECHO "      ensure up-to-date protection. This can be done by running:"
	$ECHO " "
	$ECHO "      antivir --update"
fi

$ECHO " "
$ECHO "Be sure to read the README file for additional information."
$ECHO "Thank you for your interest in $FULLPRODUCTNAME."
$ECHO " "

