#! /bin/sh
### BEGIN INIT INFO
# Provides:          havp
# Required-Start:    $network
# Required-Stop:
# Should-Start:	     $named $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: HAVP virus-scanning HTTP proxy
# Description: HAVP is a HTTP proxy that transparently scans all traffic for
#	       viruses and blocks all infected files.
### END INIT INFO
#
# havp		Init script for the HAVP proxy server, based on skeleton.
#
#		Adapted from skeleton by Rene Mayrhofer

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=havp
DESC=havp
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME/$NAME.pid

test -x $DAEMON || exit 0

# Include havp defaults if available
if [ -f /etc/default/havp ] ; then
	. /etc/default/havp
fi

havp_dir=/var/lib/havp
havp_loopback=$havp_dir/havp.loop
havp_mountpoint=/var/spool/havp

set -e

case "$1" in
  start)
        if [ x"$USE_LOOPBACK" = x"true" -a -e $havp_loopback ] && \
	   ! [ "`mount | grep ^$havp_loopback`" ]; then
		echo -n "Mounting $havp_loopback under $havp_mountpoint ..."
		mount -o rw,mand,loop $havp_loopback $havp_mountpoint
		chown -R havp:havp $havp_mountpoint
		echo "done"
        fi
	echo -n "Cleaning up $havp_mountpoint"...
	find $havp_mountpoint/ -type f -delete
	echo " done"
	echo -n "Starting $DESC: "
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  stop)
	if $0 status; then
		echo -n "Stopping $DESC: "
		start-stop-daemon --stop --quiet --pidfile $PIDFILE \
			--exec $DAEMON
		echo "$NAME."
	fi

	echo -n "Cleaning up $havp_mountpoint"...
	find $havp_mountpoint/ -type f -delete
	echo " done"

        if [ x"$USE_LOOPBACK" = x"true" ] && [ "`mount | grep ^$havp_loopback`" ]; then
		echo -n "Unmounting $havp_mountpoint ..."
		umount $havp_mountpoint
		echo "done"
        fi
	;;
  reload)
	#
	#	If the daemon can reload its config files on the fly
	#	for example by sending it SIGHUP, do it here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this a do-nothing entry.
	#
	echo "Reloading $DESC configuration files."
	start-stop-daemon --stop --signal 1 --quiet --pidfile \
	      /var/run/$NAME.pid --exec $DAEMON || true
  ;;
  restart|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
		 --exec $DAEMON || true
	sleep 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  status)
        if [ ! -r $PIDFILE ]; then
            # no pid file, process doesn't seem to be running correctly
            exit 3
        fi
        PID=`cat $PIDFILE | sed 's/ //g'`
        EXE=/proc/$PID/exe
        if [ -x "$EXE" ] &&
                [ "`ls -l \"$EXE\" | cut -d'>' -f2,2 | cut -d' ' -f2,2 | \
                  sed 's/\/system\/root//'`" = "$DAEMON" ]; then
            # ok, process seems to be running
            exit 0
        elif [ -r $PIDFILE ]; then
            # process not running, but pidfile exists
            exit 1
        else
            # no lock file to check for, so simply return the stopped status
            exit 3
        fi
	;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
