#!/bin/sh
#
# Configure avupdater.conf file
#
# Copyright (c) 2007 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:]'`
OSREL="`uname -r`"

case "${OS}" in
	sunos)
		CLEAR="clear"
		ECHO="/usr/lib/AntiVir/echo_sunos"
		if [ ! -x "${ECHO}" ]
		then
			ECHO="echo"
		fi
		PSAX="ps -Af"
		;;
	*)
		CLEAR="clear"
		ECHO="echo"
		PSAX="ps ax"
		;;
esac

check_executables()
{
	for EXE in $EXELIST
	do
		if [ ! -x "`which $EXE`" ]
		then
			$ECHO ""
			$ECHO "This script requires '$EXE' to run."
			$ECHO " "
			exit 1
		fi
	done
}

set_defaults()
{
	EMAILTO=""
	LOGTO=""
	AUTOUPDATEFREQUENCY=""
	AUTOUPDATETIME=""
	PROXYSERVER=""
	PROXYPORT=""
	PROXYUSERNAME=""
	PROXYPASSWORD=""
}

COMMENTED_OUT=" \
EmailTo \
LogTo \
AutoUpdateEvery2Hours \
AutoUpdateDaily \
AutoUpdateTime \
HTTPProxyServer \
HTTPProxyPort \
HTTPProxyUsername \
HTTPProxyPassword \
"

NOT_FOUND="$COMMENTED_OUT"

set_recommend()
{
	AUTOUPDATEFREQUENCY="2h"
}

reminder()
{
	$ECHO " "
	$ECHO "Here are some commands that you should remember..."
	$ECHO " "
	$ECHO "configure updater:    $AVDIR/configantivir"

	if [ -f "$AVDIR/avupdater" ]
	then
		$ECHO "start update daemon:  $AVDIR/avupdater start"
		$ECHO "stop update daemon:   $AVDIR/avupdater stop"
		$ECHO "update daemon status: $AVDIR/avupdater status"
	fi

	$ECHO " "
}

show_config()
{
	$ECHO -n "email notification:           "
	if [ -z "$EMAILTO" ]
	then
		$ECHO "no"
	else
		$ECHO "$EMAILTO"
	fi
	$ECHO -n "specific logfile:             "
	if [ -z "$LOGTO" ]
	then
		$ECHO "no"
	else
		$ECHO "$LOGTO"
	fi
	if [ -f "$AVDIR/avupdater" ]
	then
		$ECHO -n "update frequency:             "
		case "$AUTOUPDATEFREQUENCY" in
			2h)
				$ECHO "every 2 hours (if update daemon is running)"
				;;
			1d)
				$ECHO "daily (if update daemon is running)"

				$ECHO -n "update time:                  "
				if [ -z "$AUTOUPDATETIME" ]
				then
					$ECHO "random (if update daemon is running)"
				else
					$ECHO "$AUTOUPDATETIME (if update daemon is running)"
				fi
				;;
			*)
				$ECHO "never (deactivated)"
				;;
		esac
	fi
	if [ -z "$PROXYSERVER" ]
	then
		$ECHO "http proxy server:            none"
	else
		$ECHO "http proxy server:            $PROXYSERVER:$PROXYPORT"
		if [ ! -z "$PROXYUSERNAME" ]
		then
			$ECHO "http proxy login:             $PROXYUSERNAME:$PROXYPASSWORD"
		fi
	fi
}

LINEBASED=0
change_to_linebased_ifs()
{
	if [ $LINEBASED -eq 1 ]
	then
		return
	fi

	OLDIFS="$IFS"
	IFS="
"
	LINEBASED=1
}

change_back_from_linebased_ifs()
{
	if [ $LINEBASED -eq 0 ]
	then
		return
	fi

	IFS="$OLDIFS"

	LINEBASED=0
}

LINE_CHANGES=""
add_line_number()
{
	LINE_CHANGES="$LINE_CHANGES $LINENUMBER $IS_COMMENT $DIRECTIVE $VARNAME"
}

remove_directive_from_commented_out()
{
	COMMENTED_OUT="`$ECHO $COMMENTED_OUT | sed -e s/$DIRECTIVE//`"
}

remove_directive_from_not_found()
{
	NOT_FOUND="`$ECHO $NOT_FOUND | sed -e s/$DIRECTIVE//`"
}

LINE_LAST=0
read_conf()
{
	set_defaults

	if [ ! -f "$CONF_FILE" ]
	then
		return
	fi

	change_to_linebased_ifs
	LINENUMBER=0
	for line in `cat $CONF_FILE | sed -e 's/^\$/-- blank/'`
	do
		LINENUMBER=`expr $LINENUMBER + 1`

		EVAL_LINE="LINE_${LINENUMBER}='$line'"
		eval $EVAL_LINE

		NEW_LINE="`$ECHO $line | sed -e 's/^#[# ]*//'`"
		if [ "$NEW_LINE" = "$line" ]
		then
			IS_COMMENT=0
		else
			IS_COMMENT=1
		fi

		change_back_from_linebased_ifs
		set -- $NEW_LINE
		change_to_linebased_ifs

		DIRECTIVE="$1"

		case "$DIRECTIVE" in
			EmailTo)
				remove_directive_from_not_found
				VARNAME="EMAILTO"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					change_back_from_linebased_ifs
					shift
					EMAILTO="$@"
					change_to_linebased_ifs
				fi
				;;
			LogTo)
				remove_directive_from_not_found
				VARNAME="LOGTO"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					change_back_from_linebased_ifs
					shift
					LOGTO="$@"
					change_to_linebased_ifs
				fi
				;;
			AutoUpdateEvery2Hours)
				remove_directive_from_not_found
				VARNAME="NONE"
				add_line_number
				if [ $IS_COMMENT -eq 0 ]
				then
					AUTOUPDATEFREQUENCY="2h"
				fi
				;;
			AutoUpdateDaily)
				remove_directive_from_not_found
				VARNAME="NONE"
				add_line_number
				if [ $IS_COMMENT -eq 0 ]
				then
					AUTOUPDATEFREQUENCY="1d"
				fi
				;;
			AutoUpdateTime)
				remove_directive_from_not_found
				VARNAME="AUTOUPDATETIME"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					AUTOUPDATETIME="$2"
				fi
				;;
			HTTPProxyServer)
				remove_directive_from_not_found
				VARNAME="PROXYSERVER"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					PROXYSERVER="$2"
				fi
				;;
			HTTPProxyPort)
				remove_directive_from_not_found
				VARNAME="PROXYPORT"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					if [ -z "`$ECHO $2 | sed -e 's/[0-9]//g'`" ]
					then
						PROXYPORT="$2"
					fi
				fi
				;;
			HTTPProxyUsername)
				remove_directive_from_not_found
				VARNAME="PROXYUSERNAME"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					PROXYUSERNAME="$2"
				fi
				;;
			HTTPProxyPassword)
				remove_directive_from_not_found
				VARNAME="PROXYPASSWORD"
				add_line_number
				if [ ! -z "$2" -a $IS_COMMENT -eq 0 ]
				then
					change_back_from_linebased_ifs
					shift
					PROXYPASSWORD="$@"
					change_to_linebased_ifs
				fi
				;;
		esac
	done

	LINE_LAST=$LINENUMBER

	change_back_from_linebased_ifs
}

save_conf()
{
	if [ -z "$CONF_FILE" ]
	then
		return 0
	fi

	if [ -f "$CONF_FILE" ]
	then
		cp -pf "$CONF_FILE" "${CONF_FILE}.backup" > /dev/null 2>&1
		if [ $? -ne 0 ]
		then
			$ECHO " "
			$ECHO "error: unable to create backup file ${CONF_FILE}.backup"
		fi
	fi

	$ECHO -n "" > $CONF_FILE
	if [ $? -ne 0 ]
	then
		return 1
	fi

	set -- $LINE_CHANGES
	LINENUMBER=0
	while [ $LINENUMBER -lt $LINE_LAST ]
	do
		LINENUMBER=`expr $LINENUMBER + 1`

		DO_REPLACE=0
		if [ ! -z "$1" ]
		then
			if [ $LINENUMBER -eq $1 ]
			then
				DO_REPLACE=1
			fi
		fi

		EVAL_LINE="TMP_LINE=\$LINE_${LINENUMBER}"
		eval $EVAL_LINE

		if [ $DO_REPLACE -eq 1 ]
		then
			# $1 = line number
			# $2 = is comment
			# $3 = directive
			# $4 = variable name

			$ECHO "$COMMENTED_OUT" | grep "$3" > /dev/null 2>&1
			if [ $? -eq 0 ]
			then
				SHOULD_COMMENT=1
			else
				SHOULD_COMMENT=0
			fi

			if [ $SHOULD_COMMENT -eq 1 ]
			then
				if [ $2 -eq 1 ]
				then
					$ECHO "$TMP_LINE" >> $CONF_FILE
				else
					$ECHO "#$TMP_LINE" >> $CONF_FILE
				fi
			else
				# replace with new value

				$ECHO -n "$3" >> $CONF_FILE

				if [ "$4" = "NONE" ]
				then
					$ECHO "" >> $CONF_FILE
				else
					$ECHO -n " " >> $CONF_FILE
					EVAL_LINE="\$ECHO \$$4 >> $CONF_FILE"
					eval $EVAL_LINE
				fi
			fi


			shift
			shift
			shift
			shift
		else
			if [ "$TMP_LINE" = "-- blank" ]
			then
				$ECHO "" >> $CONF_FILE
			else
				$ECHO "$TMP_LINE" >> $CONF_FILE
			fi
		fi
	done

	for item in $NOT_FOUND
	do
		$ECHO "$COMMENTED_OUT" | grep "$item" > /dev/null 2>&1
		if [ $? -ne 0 ]
		then
			# we must add the item

			case $item in
				EmailTo)
					if [ ! -z "$EMAILTO" ]
					then
						$ECHO "$item $EMAILTO" >> $CONF_FILE
					fi
					;;
				LogTo)
					if [ ! -z "$LOGTO" ]
					then
						$ECHO "$item $LOGTO" >> $CONF_FILE
					fi
					;;
				AutoUpdateEvery2Hours)
					if [ "$AUTOUPDATEFREQUENCY" = "2d" ]
					then
						$ECHO "$item" >> $CONF_FILE
					fi
					;;
				AutoUpdateDaily)
					if [ "$AUTOUPDATEFREQUENCY" = "1d" ]
					then
						$ECHO "$item" >> $CONF_FILE
					fi
					;;
				AutoUpdateTime)
					if [ ! -z "$AUTOUPDATETIME" ]
					then
						$ECHO "$item $AUTOUPDATETIME" >> $CONF_FILE
					fi
					;;
				HTTPProxyServer)
					if [ ! -z "$PROXYSERVER" ]
					then
						$ECHO "$item $PROXYSERVER" >> $CONF_FILE
					fi
					;;
				HTTPProxyPort)
					if [ ! -z "$PROXYPORT" ]
					then
						$ECHO "$item $PROXYPORT" >> $CONF_FILE
					fi
					;;
				HTTPProxyUsername)
					if [ ! -z "$PROXYUSERNAME" ]
					then
						$ECHO "$item $PROXYUSERNAME" >> $CONF_FILE
					fi
					;;
				HTTPProxyPassword)
					if [ ! -z "$PROXYPASSWORD" ]
					then
						$ECHO "$item $PROXYPASSWORD" >> $CONF_FILE
					fi
					;;
			esac
		fi
	done

	return 0
}

read_directory()
{
	read INPUT
	if [ -z "$INPUT" ]
	then
		return 0
	fi

	NEWINPUT="`$ECHO $INPUT | sed -e s/\\\"//g`"
	CUT="`$ECHO $NEWINPUT | sed -e s/\^\\\///`"

	if [ "$CUT" = "$NEWINPUT" ]
	then
		return 2
	fi

	return 1
}

question()
{
	$ECHO -n "[$QDEFAULT] "
	read INPUT

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

	NUM=1
	for CHOICE in $QCHOICES
	do
		if [ "$INPUT" = $CHOICE ]
		then
			OK=1
			return $NUM
		fi
		NUM=`expr $NUM + 1`
	done

	return $NUM
}

ynquestion()
{
	test $YNQDEFAULTTEST
	ANS=$?

	if [ $ANS -eq 0 ]
	then
		QDEFAULT="y"
	else
		QDEFAULT="n"
	fi

	QCHOICES="y n"

	question
	ANS=$?

	return $ANS
}

config_emailto()
{
	$CLEAR
	$ECHO "EmailTo                                                         ($PAGE of $TOTALPAGES)"
	$ECHO "======="
	$ECHO "You may configure the AntiVir Updater to send out an email message"
	$ECHO "whenever an update was successful or an error with the update occurred."
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		test ! -z "$EMAILTO"
		YNQDEFAULTTEST="$? -eq 0"

		$ECHO -n "Would you like email notification about updates? "
		ynquestion
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			$ECHO -n "What email address will receive notifications? [$EMAILTO] "
			read INPUT

			if [ ! -z "$INPUT" ]
			then
				EMAILTO="$INPUT"
			fi

			if [ -z "$EMAILTO" ]
			then
				OK=0
			fi

			if [ $OK -ne 0 ]
			then
				DIRECTIVE="EmailTo"
				remove_directive_from_commented_out
			fi
		elif [ $ANS -eq 2 ]
		then
			EMAILTO=""
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done

	PAGE=`expr $PAGE + 1`
}

config_logto()
{
	$CLEAR
	$ECHO "LogTo                                                           ($PAGE of $TOTALPAGES)"
	$ECHO "====="
	$ECHO "In addition to logging update activity through syslog, you may also"
	$ECHO "specify your own log file for messages that are generated by the."
	$ECHO "AntiVir Updater. This can make it simpler to review past activity"
	$ECHO "without having to sift through syslog files."
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		if [ ! -z "$LOGTO" ]
		then
			QDEFAULT="y"
		else
			QDEFAULT="n"
		fi

		QCHOICES="y n"

		$ECHO -n "Would you like the updater to log to a custom file? "
		question
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			$ECHO "What will be the log file name with absolute path (it must begin with '/')"
			$ECHO -n "? [$LOGTO] "

			OK=0
			read_directory
			RET=$?

			if [ $RET -eq 0 -a ! -z "$LOGTO" ]
			then
				RET=1
				INPUT=$LOGTO
			fi

			if [ $RET -eq 1 ]
			then
				LOGTO=$INPUT
				OK=1
				DIRECTIVE="LogTo"
				remove_directive_from_commented_out
			fi
		elif [ $ANS -eq 2 ]
		then
			LOGTO=""
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done

	PAGE=`expr $PAGE + 1`
}

config_autoupdatetime()
{
	$CLEAR
	$ECHO "AutoUpdateTime                                                ($PAGE-2 of $TOTALPAGES)"
	$ECHO "=============="
	$ECHO "The AntiVir Updater can be set to always check for updates at a"
	$ECHO "particular time of day. This is specified in a HH:MM format"
	$ECHO "(where HH is the hour and MM is the minutes). If you do not have a"
	$ECHO "permanent connection, you may set it to a time when you are usually"
	$ECHO "online. You may also let AntiVir choose a random time (r)."
	$ECHO " "
	$ECHO "If you have a permanent connection then a random time may be preferred"
	$ECHO "because it will help to disperse the times when other users are"
	$ECHO "getting updates."
	$ECHO " "
	$ECHO "available options: HH:MM r"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		$ECHO -n "What time should updates be done? "
		if [ -z "$AUTOUPDATETIME" ]
		then
			$ECHO -n "[RANDOM] "
		else
			$ECHO -n "[$AUTOUPDATETIME] "
		fi

		read INPUT

		if [ -z "$INPUT" ]
		then
			OK=1
		else
			HH=""
			MM=""
			OLDIFS=$IFS
			IFS=":"
			for ITEM in $INPUT
			do
				if [ -z "$HH" ]
				then
					HH=$ITEM
				elif [ -z "$MM" ]
				then
					MM=$ITEM
				fi
			done
			IFS=$OLDIFS

			#check if it is a valid time

			if [ ! -z "$HH" -a ! -z "$MM" ]
			then
				if [ -z "`$ECHO $HH | sed -e s/[0-9]//g`" ]
				then
					if [ $HH -ge 0 -a $HH -le 23 ]
					then
						if [ -z "`$ECHO $MM | sed -e s/[0-9]//g`" ]
						then
							if [ $MM -ge 0 -a $MM -le 59 ]
							then
								if [ $HH -lt 10 ]
								then
									HH="`$ECHO $HH | sed -e s/0//g`"
									if [ -z "$HH" ]
									then
										HH="0"
									fi
									HH="0$HH"
								fi

								if [ $MM -lt 10 ]
								then
									MM="`$ECHO $MM | sed -e s/0//g`"
									if [ -z "$MM" ]
									then
										MM="0"
									fi
									MM="0$MM"
								fi

								AUTOUPDATETIME="$HH:$MM"
								OK=1
								DIRECTIVE="AutoUpdateTime"
								remove_directive_from_commented_out
							fi
						fi
					fi
				fi
			elif [ "$INPUT" = "r" ]
			then
				AUTOUPDATETIME=""
				OK=1
				DIRECTIVE="AutoUpdateTime"
				remove_directive_from_commented_out
			fi
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done
}

config_autoupdatedaily()
{
	$CLEAR
	$ECHO "AutoUpdateEvery2Hours/AutoUpdateDaily                           ($PAGE of $TOTALPAGES)"
	$ECHO "====================================="
	$ECHO "AntiVir is equipped with an Internet Update Daemon. At specified"
	$ECHO "intervals, AntiVir will connect to an update server to check for newer"
	$ECHO "versions of the AntiVir engine or the data files. If a newer"
	$ECHO "version is available, AntiVir will automatically download and install"
	$ECHO "the updates without requiring any special attention. This allows AntiVir"
	$ECHO "to be kept current against attacks and problems."
	$ECHO " "
	$ECHO "AntiVir can be configured to check for updates every 2 hours (2) or"
	$ECHO "once a day (d). You can also choose to disable the Internet Update"
	$ECHO "Daemon (n)."
	$ECHO " "
	$ECHO "Note: Updates can also be done manually from the command line:"
	$ECHO "           antivir --update"
	$ECHO "      You may prefer to disable the Internet Update Daemon and"
	$ECHO "      instead perform regular updates using a cron(8) job."
	$ECHO " "
	$ECHO "      Using the startup script for the Internet Update Daemon when"
	$ECHO "      it is disabled will result in an error."
	$ECHO " "
	$ECHO "available options: 2 d n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		case "$AUTOUPDATEFREQUENCY" in
			2h)
				QDEFAULT=2
				;;
			1d)
				QDEFAULT=d
				;;
			*)
				QDEFAULT=n
				;;
		esac
		QCHOICES="2 d n"

		$ECHO -n "How often should AntiVir check for updates? "
		question
		ANS=$?

		case "$ANS" in
			1)
				AUTOUPDATEFREQUENCY="2h"
				DIRECTIVE="AutoUpdateEvery2Hours"
				remove_directive_from_commented_out
				;;
			2)
				AUTOUPDATEFREQUENCY="1d"
				DIRECTIVE="AutoUpdateDaily"
				remove_directive_from_commented_out
				;;
			3)
				AUTOUPDATEFREQUENCY=""
				;;
			*)
				$ECHO "invalid answer: $INPUT"
				;;
		esac
	done

	if [ "$AUTOUPDATEFREQUENCY" = "1d" ]
	then
		config_autoupdatetime
	fi

	PAGE=`expr $PAGE + 1`
}

config_proxyusername()
{
	$CLEAR
	$ECHO "HTTPProxyUsername/HTTPProxyPassword                           ($PAGE-2 of $TOTALPAGES)"
	$ECHO "==================================="
	$ECHO "Proxy servers may be configured to require a username and password. If"
	$ECHO "the HTTP proxy server for this machine requires a username and password"
	$ECHO "AntiVir needs to be appropriately configured."
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		test ! -z "$PROXYUSERNAME"
		YNQDEFAULTTEST="$? -eq 0"

		$ECHO -n "Does the HTTP proxy server require a username/password? "
		ynquestion
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			$ECHO -n "What is the HTTP proxy username? [$PROXYUSERNAME] "

			OK=0
			read INPUT

			if [ ! -z "$INPUT" ]
			then
				PROXYUSERNAME="$INPUT"
			fi

			if [ ! -z "$PROXYUSERNAME" ]
			then
				$ECHO -n "What is the HTTP proxy password? [$PROXYPASSWORD] "
				read INPUT

				if [ ! -z "$INPUT" ]
				then
					PROXYPASSWORD="$INPUT"
				fi

				if [ ! -z "$PROXYPASSWORD" ]
				then
					OK=1
					DIRECTIVE="HTTPProxyUsername"
					remove_directive_from_commented_out
					DIRECTIVE="HTTPProxyPassword"
					remove_directive_from_commented_out
				fi
			fi
		elif [ $ANS -eq 2 ]
		then
			PROXYUSERNAME=""
			OK=1
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done
}

config_proxyserver()
{
	$CLEAR
	$ECHO "HTTPProxyServer/HTTPProxyPort                                 ($PAGE of $TOTALPAGES)"
	$ECHO "============================="
	$ECHO "If this machine is sitting behind an HTTP proxy server, you will need to"
	$ECHO "configure AntiVir with the appropriate proxy settings. Internet access"
	$ECHO "is required in order to make updates."
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		test ! -z "$PROXYSERVER"
		YNQDEFAULTTEST="$? -eq 0"

		$ECHO -n "Does this machine use an HTTP proxy server? "
		ynquestion
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			$ECHO -n "What is the HTTP proxy server name? [$PROXYSERVER] "

			OK=0
			read INPUT

			if [ ! -z "$INPUT" ]
			then
				PROXYSERVER="$INPUT"
			fi

			if [ ! -z "$PROXYSERVER" ]
			then
				$ECHO -n "Which port number does the HTTP proxy server use? [$PROXYPORT] "
				read INPUT

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

				if [ ! -z "$INPUT" ]
				then
					if [ -z "`$ECHO $INPUT | sed -e s/[0-9]//g`" ]
					then
						PROXYPORT=$INPUT
						OK=1
						DIRECTIVE="HTTPProxyServer"
						remove_directive_from_commented_out
						DIRECTIVE="HTTPProxyPort"
						remove_directive_from_commented_out
					fi
				fi
			fi
		elif [ $ANS -eq 2 ]
		then
			PROXYSERVER=""
			OK=1
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done

	if [ ! -z "$PROXYSERVER" ]
	then
		config_proxyusername
	fi

	PAGE=`expr $PAGE + 1`
}

config_results()
{
	$CLEAR
	$ECHO "AntiVir Configuration"
	$ECHO "====================="
	$ECHO "Here are the configuration settings you have specified. Look them over"
	$ECHO "to make sure they are correct."
	$ECHO " "
	WARNING=0
	show_config
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		YNQDEFAULTTEST="$WARNING -eq 0"

		$ECHO -n "Save configuration settings? "
		ynquestion
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			sleep 1
			save_conf
			RET=$?
			sleep 1

			$ECHO " "
			if [ $RET -eq 0 ]
			then
				$ECHO "* SUCCESS *"
				$ECHO " "
				$ECHO "Configuration successfully saved to."
				$ECHO "$CONF_FILE"
				$ECHO " "
			else
				$ECHO "* ERROR *"
				$ECHO " "
				$ECHO "Unable to save configuration file."
				$ECHO "Make sure you are able to write to $CONF_FILE"
				$ECHO "and re-run the configuration tool with"
				$ECHO "$AVDIR/configavguard"
				$ECHO " "
				exit 1
			fi

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

			MAINLOOP=0
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done
}

run_avupdater()
{
	$CLEAR
	$ECHO "Running Internet Update Daemon"
	$ECHO "=============================="
	$ECHO "In order for the Internet Update Daemon to be active on your"
	$ECHO "system, you must run the software. This can be done manually each"
	$ECHO "time the system is booted with the command:"
	$ECHO " "
	$ECHO "$AVDIR/avupdater start"
	$ECHO " "
	$ECHO "You can have it start automatically by adding avupdater to your"
	$ECHO "startup scripts. Depending on your system, this can vary. Consult"
	$ECHO "your system documentation on startup scripts."
	$ECHO " "
	$ECHO "During the installation, you had the option to set the updater to"
	$ECHO "start automatically."
	$ECHO " "
	$ECHO "available options: y n"
	OK=0
	while [ $OK -eq 0 ]
	do
		$ECHO " "

		YNQDEFAULTTEST="1 -eq 1"

		MODSTAT="`$PSAX | grep 'antivir.*--updater-daemon' | grep -v grep`"

		$ECHO -n "Would you like to apply the new configuration? "
		ynquestion
		ANS=$?

		if [ $ANS -eq 1 ]
		then
			$ECHO " "
			if [ ! -z "$MODSTAT" ]
			then
				$AVDIR/avupdater stop
			fi

			if [ ! -z $AUTOUPDATEFREQUENCY ]
			then
				$AVDIR/avupdater start
			fi
		fi

		if [ $OK -eq 0 ]
		then
			$ECHO "invalid answer: $INPUT"
		fi
	done
}

# main()

AVDIR="/usr/lib/AntiVir"
HAVECONFIG=0
CHECK=0
MAINLOOP=1
TOTALPAGES=3
EXELIST="which clear sleep grep ps"

check_executables

if [ -f "$AVDIR/avupdater" ]
then
	TOTALPAGES=`expr $TOTALPAGES + 1`
fi

CONF_FILE="/etc/avupdater.conf"
if [ -f "$CONF_FILE" ]
then
	read_conf
else
	set_recommend
fi

while [ $MAINLOOP -eq 1 ]
do
	PAGE=1

	config_emailto
	config_logto
	if [ -f "$AVDIR/avupdater" ]
	then
		config_autoupdatedaily
	fi
	config_proxyserver

	HAVECONFIG=1

	config_results
done

if [ -d "$AVDIR" ]
then
	if [ ! -z "`ls $AVDIR | grep -i '\.key$'`" ]
	then
		if [ -f "$AVDIR/avupdater" ]
		then
			run_avupdater
		fi
	fi
fi

$ECHO " "
$ECHO " "

if [ -f $AVDIR/avupdater ]
then
	$AVDIR/avupdater status
fi

reminder

exit 0
