#! /bin/sh
# Copyright (c) 2005 Christian Barmala http://www.barmala.de/
# License GNU Public License http://opensource.org/licenses/gpl-license.php
# LSB compatible service control script; see http://www.linuxbase.org/spec/
# based on Andreas Hochsteger <e9625392@student.tuwien.ac.at> and Olaf.Zenker@t-systems.de

### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $syslog $network
# Required-Stop:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Start fwbuilder firewall script
# Description:       fwbuilder generates an iptables script,
#	which is installed into /etc/firewall/$yourhost.fw and can
#	be executed or unloaded with this init script.	
### END INIT INFO

. /lib/lsb/init-functions
# . /etc/rc.status # alternative


# Reset status of this service
rc_reset
prog="Firewall"
kernel=`uname -r`     
yourhost=`uname -n`
fw_script=/etc/firewall/$yourhost.fw

if [ ! -x /usr/sbin/iptables  ]; then
  echo "iptables not installed in /usr/sbin"; 
	if [ "$1" = "stop" ]; then
	  exit 0;
	else
	  exit 5
  fi
fi

if [ ! -x $fw_script ]; then
  echo "firewall script $fw_script not installed into or not executable"; 
	if [ "$1" = "stop" ]; then
	  exit 0
	else
	  exit 6
	fi;
fi

version=`iptables -V`

case "$1" in
    start)
	if [ -f /var/lock/subsys/firewall ]; then
	    echo "$prog is already running"
	else
	    echo -n $"Starting $prog ($version)"
	    $fw_script
	    RETVAL=$?
	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/firewall
	    rc_status -v
	fi
	;;
    stop)
	if [ -f /var/lock/subsys/firewall ]; then
	    echo -n $"Stopping $prog"
	    iptables -L -n | awk '/Chain/ {printf "iptables -F %s\n",$2;}'|/bin/sh && \
	    iptables -X
	    RETVAL=$?
	    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/firewall
	    rc_status -v
	else
	    echo "$prog is not running"
	fi
	;;
    restart)
	$0 stop && $0 start
	rc_status
	;;
    reload)
	if [ -f /var/lock/subsys/firewall ]; then
	    echo -n $"Reloading firewall rules"
	    $fw_script && rc_failed 0 || rc_failed 2
	    rc_status -v
	else
	    echo "$prog is not running"
	fi
	;;
    status)
	echo -n "Checking for $prog ($version)"
	if [ -f /var/lock/subsys/firewall ]; then
	    rc_failed 0
	else
	    rc_failed 3
	fi
	rc_status -v
	;;
    *)
	echo $"Usage: $0 {start|stop|restart|reload|status}"
	exit 1
esac

rc_exit
