#!/bin/bash

iptables-restore < /opt/perfsonar_ps/toolkit/etc/firewall.conf
ip6tables-restore < /opt/perfsonar_ps/toolkit/etc/firewall_v6.conf

bwctlparams=("iperf_port" "nuttcp_port" "peer_port")
owampparams=("testports")

bwctlfile="/etc/bwctld/bwctld.conf"
owampfile="/etc/owampd/owampd.conf"

addPortRuleFromFile(){
	file=$1
	shift
	local params=( `echo "$2"` )
	for i in "${params[@]}"
	do
		portrange=`awk -v search="^$i" '$0 !~ /^#/ && $0 ~ search {$1=""; print $0}' $file | sed s/-/:/g`
		if [ ! -z "$portrange" ]; then
			cmd0="iptables -I INPUT 1 -m udp -p udp --dport $portrange -j ACCEPT"
			cmd1="iptables -I INPUT 1 -m udp -p udp --sport $portrange -j ACCEPT"
			cmd2="iptables -I INPUT 1 -m state --state NEW,ESTABLISHED -m tcp -p tcp --sport $portrange -j ACCEPT"
			cmd3="iptables -I INPUT 1 -m state --state ESTABLISHED -m tcp -p tcp --sport $portrange -j ACCEPT"
                	cmd4="ip6tables -I INPUT 1 -m udp -p udp --dport $portrange -j ACCEPT"
                	cmd5="ip6tables -I INPUT 1 -m udp -p udp --sport $portrange -j ACCEPT"
                	cmd6="ip6tables -I INPUT 1 -m state --state NEW,ESTABLISHED -m tcp -p tcp --sport $portrange -j ACCEPT"
                	cmd7="ip6tables -I INPUT 1 -m state --state ESTABLISHED -m tcp -p tcp --sport $portrange -j ACCEPT"

			$cmd0
			$cmd1
			$cmd2
			$cmd3
			$cmd4
			$cmd5	
			$cmd6
			$cmd7
		fi
	done 
}

p=`echo ${bwctlparams[@]}`
addPortRuleFromFile "$bwctlfile" "$p"
p=`echo ${owampparams[@]}`
addPortRuleFromFile "$owampfile" "$p"

iptables-save
ip6tables-save
