#! /bin/sh
# Startup script for dansguardian
#
# description: A web content filtering plugin for web \
#              proxies, developed to filter using lists of \
#              banned phrases, MIME types, filename \
#              extensions and PICS labling.
# processname: dansguardian
# pidfile: /var/run/dansguardian.pid
# config: /etc/dansguardian/dansguardian.conf
### BEGIN INIT INFO
# Provides:          dansguardian
# Required-Start:    $network $remote_fs $syslog $squid
# Required-Stop:     $network $remote_fs $squid
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description: Starts dansguardian content proxy
# short-description: dansguardian configuration
### END INIT INFO

#include lsb functions
. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/dansguardian
NAME=dansguardian
DESC="DansGuardian"
DGDIRS="/etc/dansguardian/dansguardian*"

test -x $DAEMON || exit 0
test -f $CONFIG || exit 0

set -e

start_dansguardians() {
	for DG in $DGDIRS
	do
		INSTANCE_NAME=`basename $DG`
		log_daemon_msg "Instance #$INSTANCE_NAME"
		start-stop-daemon -b --start --quiet --pidfile /var/run/${INSTANCE_NAME}.pid \
                        --exec $DAEMON -- -c $DG/dansguardian.conf > /dev/null 2>&1 &
	done
}

stop_dansguardians() {
	for DG in $DGDIRS
	do
		INSTANCE_NAME=`basename $DG`
		start-stop-daemon --stop --quiet --retry 15 --oknodo --pidfile /var/run/${INSTANCE_NAME}.pid \
			--exec $DAEMON || log_end_msg 1
	done
}

reload_dansguardians() {
	for DG in $DGDIRS
	do
		INSTANCE_NAME=`basename $DG`
		log_daemon_msg "Instance #$INSTANCE_NAME"
		start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/${INSTANCE_NAME}.pid \
                        --exec $DAEMON -- -c $DG/dansguardian.conf > /dev/null 2>&1 &
	done
}

status_dansguardians() {
	for DG in $DGDIRS
	do
        INSTANCE_NAME=`basename $DG`
        status_of_proc -p /var/run/${INSTANCE_NAME}.pid $DAEMON dansguardian
    done
}

case "$1" in
  start)
	log_daemon_msg "Starting $DESC"
	start_dansguardians
	log_end_msg 0
	;;
  stop)
	log_daemon_msg "Stopping $DESC"
	stop_dansguardians
	log_end_msg 0
	;;
  reload)
	log_action_begin_msg "Reloading $DESC configuration..."
	reload_dansguardians
	log_action_end_msg 0
  	;;
  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".
	#
	log_daemon_msg "Restarting $DESC: "
	stop_dansguardians
	start_dansguardians
	log_end_msg 0
	;;
  status)
    status_dansguardians
    ;;
  *)
	N=/etc/init.d/$NAME
	log_action_msg "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
