# You should not edit this file.  Instead, create a file with the same
# name as this one, but with a .rul extension instead of .def.  The
# .rul file will override this one.
#
# However, any changes you make to this file will be preserved.

# Some reused regex'es
re_protos='[a-z\,]\+'
re_ports='[a-z0-9\,:]\+'
re_port='[a-z0-9:]\+'
re_host='[a-z0-9]\+'
re_pool='[a-z0-9_]\+'
re_cfg="[[:space:]]*\($re_protos\)[[:space:]]\+\($re_ports\)[[:space:]]\+\($re_host\)\([[:space:]]\+\($re_port\)\)\?[[:space:]]*"
re_cfgline="portfw_pool_\($re_pool\)[[:space:]]*=[[:space:]]*'$re_cfg'"

# Extract portforward hosts
PFW=$(set | grep '^portfw_ip_' | sed "s/^portfw_ip_\($re_host\).*/\1/")

# remove hosts with no pools attached
if [ -n "$PFW" ]; then
    for i in $PFW; do
	poolhits=$(set | grep '^portfw_pool_' | sed "s/$re_cfgline/\4/" | grep "^$i$")
	if [ -z "$poolhits" ]; then
	    PFW=$(echo $PFW | sed "s/\(  *\|^\)$i\(  *\|$\)/\1/")
	fi
    done
fi

# Extract ips and ports
if [ -n "$PFW" ]; then
    if [ "$SHOWRULES" = "yes" ]; then
	echo "#: These ports are forwarded:"
    fi
    PFWPOOLS=""
    for i in $PFW; do
	eval "ip=\"\$portfw_ip_$i\""
	pools=$(set | grep '^portfw_pool_' | sed "s/$re_cfgline/\1:\4/" | grep ":$i$" | sed "s/:$i$//")
	for pool in $pools; do
	    PFWPOOLS="$PFWPOOLS $pool"
	    eval "config=\"\$portfw_pool_$pool\""
	    protos_bulk=$(echo $config | sed "s/$re_cfg/\1/")
	    protos=$(echo $protos_bulk | sed 's/,/ /g')
	    origports_bulk=$(echo $config | sed "s/$re_cfg/\2/")
	    origports=$(echo $origports_bulk | sed 's/,/ /g')
	    destport=$(echo $config | sed "s/$re_cfg/\5/")
	    [ "$origports" = "$destport" ] && destport=""
	    eval "PFWPROTO_$pool=\"\$protos\""
	    eval "PFWORIGPORTS_$pool=\"$origports\""
	    eval "PFWIP_$pool=\"$ip\""
	    eval "PFWPORT_$pool=\"$destport\""
	    if [ "$SHOWRULES" = "yes" ]; then
        	echo -e "#:   $protos_bulk \t$origports_bulk \t->\t $ip $destport \t($pool->$i)"
	    fi
	done
    done
fi
