#!/bin/sh
#
# Start/Stop AiWebGate
#
# Copyright (c) 2004 AVIRA GmbH
#
# VERSION 1.0

SERVICENAME="aiwebgate"

BINARYPATH="/usr/lib/AVIRA"
BINARYNAME="aiwebgate.bin"

set_commands()
{
	case "${OS}" in
		sunos)
			ECHO="$BINARYPATH/echo_sunos"
			PSAX="ps -Af"
			;;
		*)
			ECHO="echo"
			PSAX="ps ax"
			;;
	esac
}

getPROCESSLIST()
{
	PROCESSLIST=`$PSAX | \
		 egrep "[ ](${BINARYPATH}/${BINARYNAME}|\[${BINARYNAME}\])( .*)*$" | \
		 sed -e 's/^[^0-9]*//' -e 's/ .*$//' | xargs`
}

OS=`uname | tr "[:upper:]" "[:lower:]"`
OSREL="`uname -r`"
KERNELVERSION="${OS}-${OSREL}"

case "${OS}" in
	linux)
		if [ "${OSREL#2.6.}" != "${OSREL}" ]; then
			OS="linux26"
		fi

		# Determine the Linux distribution type
		DISTRO="unknown"
		
		[ -e /etc/redhat-release ] && DISTRO="redhat"
		[ -e /etc/mandrake-release -o -e /etc/mandrakelinux-release ] \
					&& DISTRO="mandrake"
		[ -e /etc/fedora-release ] && DISTRO="fedora"
		[ -e /etc/SuSE-release ] && DISTRO="suse"
		[ -e /etc/debian_version ] && DISTRO="debian"
		[ -e /etc/slackware-version ] && DISTRO="slackware"
		[ -e /etc/gentoo-release ] && DISTRO="gentoo"
		[ -e /etc/turbolinux-release ] && DISTRO="turbolinux"
		;;
	
	*)
		DISTRO="$OS"
		;;
esac

case "${DISTRO}" in
	redhat|mandrake|fedora)
		LOCKSUBSYS="/var/lock/subsys/${SERVICENAME}"
		;;
esac

set_commands

case $1 in
	start|stop|restart|reload)
		if [ `id | sed -e 's/.*uid=\([0-9]*\).*/\1/'` -ne 0 ]
		then
			$ECHO "This script must be run as root."
			exit 1
		fi
	;;
esac


case $1 in
	start)
		$ECHO -n "Starting AVIRA: ${SERVICENAME}"
		${BINARYPATH}/${BINARYNAME}
		[ -z "$LOCKSUBSYS" ] || touch "$LOCKSUBSYS"
		$ECHO "."
		;;

	reload)
		$ECHO -n "Reconfiguring AVIRA: ${SERVICENAME}"

		getPROCESSLIST

		for PROC in $PROCESSLIST
		do
			kill -HUP $PROC > /dev/null 2>&1
		done

		$ECHO "."
		;;

	restart)
		$ECHO -n "Restarting AVIRA: ${SERVICENAME}"

		RUNNING=1
		while [ $RUNNING -eq 1 ]
		do
			getPROCESSLIST

			for PROC in $PROCESSLIST
			do
				kill $PROC > /dev/null 2>&1
			done

			if [ -z "$PROCESSLIST" ]
			then
				RUNNING=0
			else
				sleep 1
			fi
		done

		${BINARYPATH}/${BINARYNAME}

		$ECHO "."
		;;

	status)
		$ECHO -n "AVIRA Status: ${SERVICENAME}"

		getPROCESSLIST

		if [ -z "$PROCESSLIST" ]
		then
			$ECHO -n " not running"
		else
			$ECHO -n " running"
		fi

		$ECHO "."
		;;

	stop)
		$ECHO -n "Stopping AVIRA: ${SERVICENAME}"

		RUNNING=1
		while [ $RUNNING -eq 1 ]
		do
			getPROCESSLIST

			for PROC in $PROCESSLIST
			do
				kill $PROC > /dev/null 2>&1
			done

			if [ -z "$PROCESSLIST" ]
			then
				RUNNING=0
			else
				sleep 1
			fi
		done

		[ -z "$LOCKSUBSYS" ] || rm -f "$LOCKSUBSYS"

		$ECHO "."
		;;

	*)
		$ECHO "Usage: $0 {start|stop|reload|restart|status}" 1>&2
		exit 1
		;;
esac
