#!/bin/bash
#
# douane      This shell script takes care of starting and stopping
#             douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain zedtux@zedroot.org
#
# chkconfig: - 01 99
# description: douane is the daemon process of the Douane firewall application. \
# This firewall is limiting access to the internet on application bases.

# Source function library.
. /lib/lsb/init-functions

NAME=douaned
DOUANEDIR=/opt/douane
DAEMON=$DOUANEDIR/$NAME
PIDDIR=$DOUANEDIR/pids
PIDFILE=$PIDDIR/$NAME.pid
DOUANEOPTIONS="-D"

case "$1" in
    start)
        log_daemon_msg "Starting the $NAME daemon" 2>/dev/null || log_success_msg "Starting the $NAME daemon" 
        # Load kernel module if not already loaded
        [[ -z "$(lsmod | grep douane)" ]] && modprobe douane
        # Creating the pids folder is not existing
        if [ ! -e $PIDDIR ]; then
            mkdir $PIDDIR
            chown root $PIDDIR
        fi
        FULL_COMMAND="start-stop-daemon --start --oknodo --startas $DAEMON --make-pidfile --background --umask 0 --nicelevel -20 --pidfile $PIDFILE -- $DOUANEOPTIONS"
        [[ x"$DAEMON_USER" != x ]] && sudo -u $DAEMON_USER $FULL_COMMAND || $FULL_COMMAND
        log_end_msg $? 2>/dev/null || log_success_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping $NAME daemon"  2>/dev/null || log_success_msg "Stopping $NAME daemon"
        start-stop-daemon --retry 30 --stop --pidfile $PIDFILE
        # Remove PID file is remaining
        [[ -a $PIDFILE ]] && rm $PIDFILE
        log_end_msg $? 2>/dev/null || log_success_msg $?
        ;;
    status)
        status_of_proc $DAEMON $NAME
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Unknown argument -- $1"
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?
