997d9b51ef4d03a966ad50096e63f469a6b553b6
[svn42.git] / firewall
1 #!/bin/bash
2 #  Firewall Script by Bernhard Tittelbach
3 #
4 ### BEGIN INIT INFO
5 # Provides:          firewall
6 # Required-Start:    $syslog $local_fs $network
7 # Required-Stop:     $syslog $local_fs $network
8 # Should-Start:      
9 # Should-Stop:       
10 # Default-Start:     2 3 4 5
11 # Default-Stop:      0 1 6
12 # Short-Description: Firewall
13 # Description:       see above
14 ### END INIT INFO
15
16 PATH=/bin:/sbin:/bin:/usr/sbin:/usr/bin
17
18 . /lib/lsb/init-functions
19
20 IPTABLES=iptables
21 IP6TABLES=ip6tables
22 OUTPUT=$(mktemp)
23 RC=0
24
25 FIREWALL_CONFIG=/flash/etc/firewall.conf
26
27 runrule()
28 {
29   rule="$1"
30   IPT=$IPTABLES
31   if [ $(($2)) -eq 6 ]; then
32     IPT=$IP6TABLES 
33     ipv=6
34   else
35     ipv=4
36   fi
37   $IPT $rule &> $OUTPUT
38   rc=$?
39   if [ $rc -ne 0 ] ; then
40     RC=$rc
41     logger -s -i -p daemon.err "Error running ipv${ipv} rule: $rule, error was $(cat $OUTPUT)"
42   fi
43 }
44
45 ip4()
46 {
47   runrule "$*" 4
48 }
49
50 ip6()
51 {
52   runrule "$*" 6
53 }
54
55 finish()
56 {
57   rm -f $OUTPUT
58 }
59
60 . $FIREWALL_CONFIG
61
62
63 case "$1" in
64   start)        log_daemon_msg "Starting " "firewall"
65         start_firewall
66         finish
67         log_end_msg $RC
68         ;;
69   stop) log_daemon_msg "Stopping " "firewall"
70         stop_firewall
71         finish
72         log_end_msg $RC
73         ;;
74   restart)      log_daemon_msg "Restarting " "firewall"
75         stop_firewall
76         start_firewall
77         finish
78         log_end_msg $RC
79         ;;
80 *)      log_action_msg "Usage: /etc/init.d/cron {start|stop|restart}"
81         exit 2
82         ;;
83 esac
84 exit 0