76 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# qubes-iptables	Start Qubes base iptables firewall
 | 
						|
#
 | 
						|
# chkconfig: 2345 08 92
 | 
						|
# description:	Loads iptables firewall
 | 
						|
#
 | 
						|
# config: /etc/qubes/iptables.rules
 | 
						|
# config: /etc/qubes/ip6tables.rules
 | 
						|
#
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides: iptables
 | 
						|
# Required-Start:
 | 
						|
# Required-Stop:
 | 
						|
# Default-Start: 2 3 4 5
 | 
						|
# Default-Stop: 0 1 6
 | 
						|
# Short-Description: Loads Qubes base iptables firewall
 | 
						|
# Description: Loads Qubes base iptables firewall
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
IPTABLES=iptables
 | 
						|
IPTABLES_DATA_DIR=/etc/qubes
 | 
						|
 | 
						|
if [ ! -x /sbin/$IPTABLES ]; then
 | 
						|
    echo $"${IPTABLES}: /sbin/$IPTABLES does not exist."
 | 
						|
    exit 5
 | 
						|
fi
 | 
						|
 | 
						|
start() {
 | 
						|
    ipt=$1
 | 
						|
    IPTABLES_DATA=$IPTABLES_DATA_DIR/${ipt}.rules
 | 
						|
    ipv6_enabled=
 | 
						|
    if qubesdb-read /qubes-ip6 >/dev/null 2>&1 || \
 | 
						|
        qubesdb-read /qubes-netvm-gateway6 >/dev/null 2>&1; then
 | 
						|
        ipv6_enabled=true
 | 
						|
    fi
 | 
						|
    # if IPv6 is enabled, load alternative rules file
 | 
						|
    if [ "$ipt" = "ip6tables" ] && [ -n "$ipv6_enabled" ]; then
 | 
						|
        IPTABLES_DATA=$IPTABLES_DATA_DIR/${ipt}-enabled.rules
 | 
						|
    fi
 | 
						|
    CMD=$ipt
 | 
						|
    # Do not start if there is no config file.
 | 
						|
    [ ! -f "$IPTABLES_DATA" ] && return 6
 | 
						|
 | 
						|
    CMD_ARGS=
 | 
						|
    if "$CMD-restore" --help 2>&1 | grep -q wait=; then
 | 
						|
        # 'wait' must be last on command line if secs not specified
 | 
						|
        CMD_ARGS=--wait
 | 
						|
    fi
 | 
						|
 | 
						|
    echo -n $"${CMD}: Applying firewall rules: "
 | 
						|
 | 
						|
    "$CMD-restore" "$IPTABLES_DATA" $CMD_ARGS
 | 
						|
    ret="$?"
 | 
						|
    if [ "$ret" -eq 0 ]; then
 | 
						|
        echo OK
 | 
						|
    else
 | 
						|
        echo FAIL; return 1
 | 
						|
    fi
 | 
						|
 | 
						|
    return $ret
 | 
						|
}
 | 
						|
 | 
						|
case "$1" in
 | 
						|
    start)
 | 
						|
	start iptables && start ip6tables
 | 
						|
	RETVAL=$?
 | 
						|
	;;
 | 
						|
    *)
 | 
						|
	echo $"Usage: ${IPTABLES} start"
 | 
						|
	RETVAL=2
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
exit $RETVAL
 |