diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index e2cb60c4f..b2ea9340b 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -1011,6 +1011,7 @@ _vps_firewall_close_port() { [ -n "$vpsfwlist" ] && { echo "$vpsfwlist" | while read -r line; do [ -n "$line" ] && { + type=$(echo $line | awk '{print $1}' | tr -d "\n") proto=$(echo $line | awk '{print $4}' | tr -d "\n") src_dport=$(echo $line | awk '{print $5}' | tr -d "\n") source_port=$(echo $line | awk '{print $6}' | tr -d "\n") @@ -1024,12 +1025,17 @@ _vps_firewall_close_port() { settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT"}' fi _set_json "shorewallclose" "$settings" + [ "$type" = "ACCEPT" ] && { + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'"}' + _set_json "v2rayunredirect" "$settings" + } } done } [ -n "$vpsfw6list" ] && { echo "$vpsfw6list" | while read -r line; do [ -n "$line" ] && { + type=$(echo $line | awk '{print $1}' | tr -d "\n") proto=$(echo $line | awk '{print $4}' | tr -d "\n") src_dport=$(echo $line | awk '{print $5}' | tr -d "\n") source_port=$(echo $line | awk '{print $6}' | tr -d "\n") @@ -1043,6 +1049,10 @@ _vps_firewall_close_port() { settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6"}' fi _set_json "shorewallclose" "$settings" + [ "$type" = "ACCEPT" ] && { + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'"}' + _set_json "v2rayunredirect" "$settings" + } } done } @@ -1088,9 +1098,15 @@ _set_vps_firewall() { settings='{"name" : "redirect router"}' fw_list=$(_set_json "shorewalllist" "$settings") vpsfwlist=$(echo $fw_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d') + settings='{"name" : "open router"}' + fw_list=$(_set_json "shorewalllist" "$settings") + vpsfwlist="$vpsfwlist\n$(echo $fw_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d')" settings='{"name" : "redirect router","ipproto" : "ipv6"}' fw6_list=$(_set_json "shorewalllist" "$settings") vpsfw6list=$(echo $fw6_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d') + settings='{"name" : "open router","ipproto" : "ipv6"}' + fw6_list=$(_set_json "shorewalllist" "$settings") + vpsfw6list="$vpsfw6list\n$(echo $fw6_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d')" config_load firewall config_foreach _vps_firewall_redirect_port redirect config_foreach _vps_firewall_redirect_port rule diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index 519636647..133e1d293 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -18,11 +18,22 @@ fi if [ "$(uci -q get firewall.@zone[1].name)" = "wan" ]; then uci -q batch <<-EOF >/dev/null rename firewall.@zone[1]="zone_wan" - del_list firewall.zone_wan.network="wan" + commit firewall + EOF +fi +if [ "$(uci -q show firewall.zone_wan | grep wan6)" != "" ] && [ "$(uci -q get network.wan6)" = "" ]; then + uci -q batch <<-EOF >/dev/null del_list firewall.zone_wan.network="wan6" commit firewall EOF fi + +if [ "$(uci -q show firewall.zone_wan | grep wan)" != "" ] && [ "$(uci -q get network.wan)" = "" ]; then + uci -q batch <<-EOF >/dev/null + del_list firewall.zone_wan.network="wan" + commit firewall + EOF +fi if [ "$(uci -q get firewall.@zone[0].name)" = "lan" ]; then uci -q batch <<-EOF >/dev/null rename firewall.@zone[0]="zone_lan"