#!/bin/sh

### BEGIN INIT INFO
# Provides:		vuurmuur
# Required-Start:	$syslog $network $local_fs
# Required-Stop:	$syslog $network $local_fs
# Should-Start:
# Should-Stop:
# Default-Start:	1 2 3 4 5
# Default-Stop:		0 6
# Short-Description:	Starts the Vuurmuur Firewall.
# Description:		Vuurmuur is a middle-end and frontend for netfilter.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/vuurmuur
NAME=vuurmuur
DESC="Vuurmuur Firewall"

test -x ${DAEMON} || exit 0

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

set -e

case "${1}" in
	start)
		echo -n "Starting ${DESC}:"

		# Checking if vuurmuur is enabled
		if [ "${VUURMUUR_START}" != "true" ]
		then
			echo " not enabled, not starting."

			echo "To enable vuurmuur, edit /etc/default/vuurmuur."
			exit 0
		fi

		# Checking if vuurmuur is configured
		VURMUUR_INTERFACES="$(/usr/bin/vuurmuur_script --list --interface any | wc -l)"

		if [ "${VURMUUR_INTERFACES}" = "0" ]
		then
			echo " not configured, not starting."

			echo "To configure vuurmuur, define at least one interface."
			exit 1
		fi

		# Loading kernel modules
		echo
		echo -n "  - Loading modules:"

		if [ -n "${VUURMUUR_MODULES}" ]
		then
			for MODULE in ${VUURMUUR_MODULES}
			do
				modprobe ${MODULE}

				echo -n " ${MODULE}"
			done

			echo "."
		else
			echo " none."
		fi

		# Starting vuurmuur
		echo -n "  - Starting vuurmuur:"

		if [ ! -f /var/run/vuurmuur.pid ]
		then
			/usr/bin/vuurmuur -l

			echo " done."
		else
			echo " already running."
		fi

		# Starting vuurmuur_log
		echo -n "  - Starting vuurmuur_log:"

		if [ ! -f /var/run/vuurmuur_log.pid ]
		then
			/usr/bin/vuurmuur_log

			echo " done."
		else
			echo " already running."
		fi
		;;

	stop)
		echo "Stopping ${DESC}:"

		# Stopping vuurmuur
		echo -n "  - Stopping vuurmuur:"

		if [ "$(pidof vuurmuur)" ]
		then
			kill -n INT $(pidof vuurmuur)

			echo " done."
		else
			echo " not running."
		fi

		# Stopping vuurmuur_log
		echo -n "  - Stopping vuurmuur_log:"

		if [ "$(pidof vuurmuur_log)" ]
		then
			kill -n INT $(pidof vuurmuur_log)

			echo " done."
		else
			echo " not running."
		fi
		;;

	force-reload|restart)
		${0} stop

		sleep 1

		${0} start
		;;

	status)
		if [ -f /var/run/vuurmuur.pid ] && [ -f /var/run/vuurmuur_log.pid ]
		then
			echo "${DESC} is running."
		else
			echo "${DESC} is not running."
			exit 1
		fi
		;;

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

exit 0
