#! /bin/sh
#
# Fail2Ban init.d file - to be launched on boot
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian
#		 by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#               Adjusted for Fail2Ban
#                by Yaroslav Halchenko <debian@onerussian.com>.
#
# Version:	$Id: debian-initd 288 2005-11-03 22:18:40Z yoh $
#
export PATH="${PATH:+$PATH:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
DAEMON=/usr/bin/fail2ban
NAME=fail2ban
DESC=fail2ban
PIDFILE=/var/run/$NAME.pid

test -x $DAEMON || exit 0

# Include fail2ban defaults if available
if [ -f /etc/default/fail2ban ] ; then
	. /etc/default/fail2ban
fi
DAEMON_OPTS=$FAIL2BAN_OPTS
set -e

case "$1" in
	start)
		echo -n "Starting $DESC: "
		if $0 status >/dev/null
			then
			( $0 status )
			exit 1
		fi
		[ -f $PIDFILE ] && [ ! -d /proc/`cat $PIDFILE` ] && rm -f $PIDFILE
		start-stop-daemon --start --quiet --pidfile $PIDFILE \
			--exec $DAEMON -- $DAEMON_OPTS
		echo ".done"
		;;
	stop)
		echo -n "Stopping $DESC: "
		( $0 status >/dev/null )
		case "$?" in
			0) fail2banpid=`cat $PIDFILE` ;;
			3) echo "done"; exit 0;;
			*)
				( $0 status )
				echo "Not stopping fail2ban"
				exit 1
		esac

		start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE
		maxsecs=30
		i=0
		while  [ -f $PIDFILE ] && [ -d /proc/$fail2banpid ] \
			&& [ $i -le $maxsecs ]; do
		  echo -n "."
		  sleep 1
		  i=$(($i+1))
		done
		if [ $i -eq $maxsecs ]; then
			echo "ERROR: Fail2ban failed to stop properly. Tail of the log file is"
			tail /var/log/fail2ban.log
			exit 1
		fi
		echo "done"
		;;
	restart|force-reload)
		echo -n "Restarting $DESC: "
		( $0 stop )
		sleep 1
		$0 start
		;;
    status)
		echo -n "Status of $DESC: "
		if [ ! -e "$PIDFILE" ]; then
			echo "$NAME is not running."
			exit 3
		fi
		if [ ! -r "$PIDFILE" ]; then
			echo "$PIDFILE not readable, status of $NAME unknown."
			exit 4
		fi
		if [ -d /proc/`cat "$PIDFILE"` ]; then
			echo "$NAME is running."
			exit 0
		else
			echo "$NAME is not running but $PIDFILE exists."
			exit 1
		fi
	;;
	*)
		N=/etc/init.d/$NAME
		echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
		exit 1
		;;
esac

exit 0
