#! /bin/sh
### BEGIN INIT INFO
# Provides:          havp
# Required-Start:    $network $remote_fs
# Required-Stop:     $remote_fs
# Should-Start:	     $named $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 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
RUNDIR=/var/run/$NAME
USER=havp
GROUP=havp

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

# 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

if [ ! -d ${RUNDIR} ] ; then
	mkdir -p ${RUNDIR}
	if [ -d ${RUNDIR} ] ; then
		chown ${USER}:${GROUP} ${RUNDIR}
	fi
fi

case "$1" in
  start)
        # Create the run directory if it doesn't exist
        if [ ! -d "$RUNDIR" ]; then
                install -o "$USER" -g "$GROUP" -m 755 -d "$RUNDIR" || return 2
        fi

        if [ x"$USE_LOOPBACK" = x"true" -a -e $havp_loopback ] && \
	   ! [ "`mount | grep ^$havp_loopback`" ]; then
		echo -n "Mounting $havp_loopback under $havp_mountpoint ..."
		modprobe loop
		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_mountpoint\"`" ]; then
		echo -n "Unmounting $havp_mountpoint ..."
		umount -l $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 \
	      $PIDFILE --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".
	#
	$0 stop
	sleep 1
	$0 start
	;;
  status)
	start-stop-daemon --status --name $NAME --pidfile $PIDFILE
	ret="$?"
	if [ "$ret" = 0 ]; then
	  log_success_msg "$NAME is running"
	  exit 0
	else
	  log_failure_msg "$NAME is not running"
	  exit "$ret"
	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
