fail2ban/config/debian-initd

101 lines
2.1 KiB
Bash

#! /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$
#
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