#!/bin/sh

### BEGIN INIT INFO
# Provides:          opensnitchd
# Required-Start:    $network $local_fs
# Required-Stop:     $network $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: opensnitchd daemon
# Description: opensnitch application firewall
### END INIT INFO

NAME=opensnitchd
PIDDIR=/var/run/$NAME
OPENSNITCHDPID=$PIDDIR/$NAME.pid

# clear conflicting settings from the environment
unset TMPDIR

test -x /usr/bin/$NAME || exit 0

. /lib/lsb/init-functions

case $1 in
    start)
        log_daemon_msg "Starting opensnitch daemon" $NAME
        if [ ! -d /etc/$NAME/rules ]; then
            mkdir -p /etc/$NAME/rules &>/dev/null
        fi

        # Make sure we have our PIDDIR, even if it's on a tmpfs
        install -o root -g root -m 755 -d $PIDDIR

        if ! start-stop-daemon --start --quiet --oknodo --pidfile $OPENSNITCHDPID --background --exec /usr/bin/$NAME -- -rules-path /etc/$NAME/rules; then
            log_end_msg 1
            exit 1
        fi

        log_end_msg 0
        ;;
    stop)

        log_daemon_msg "Stopping $NAME daemon" $NAME

        start-stop-daemon --stop --quiet --signal QUIT --name $NAME
        # Wait a little and remove stale PID file
        sleep 1
        if [ -f $OPENSNITCHDPID ] && ! ps h `cat $OPENSNITCHDPID` > /dev/null
        then
            rm -f $OPENSNITCHDPID
        fi

        log_end_msg 0

        ;;
    reload)
        log_daemon_msg "Reloading $NAME" $NAME

        start-stop-daemon --stop --quiet --signal HUP --pidfile $OPENSNITCHDPID

        log_end_msg 0
        ;;
    restart|force-reload)
        $0 stop
        sleep 1
        $0 start
        ;;
        status)
        status_of_proc /usr/bin/$NAME $NAME
        exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/opensnitchd {start|stop|reload|restart|force-reload|status}"
        exit 1
        ;;
esac

exit 0
