From 800764c25687768fdc663b8134d3923343008992 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 19 Oct 2020 16:21:55 +0200 Subject: [PATCH] Add v2ray forward support --- .../files/etc/init.d/openmptcprouter-vps | 138 ++++++++++++------ 1 file changed, 97 insertions(+), 41 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index d613900d5..88f43474a 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -717,63 +717,119 @@ _vps_firewall_redirect_port() { config_get dest_ip $1 dest_ip config_get dest_port $1 dest_port config_get src_ip $1 src_ip - if [ "$(echo $src_dport | cut -d'-' -f2)" -ge "65000" ]; then + config_get v2ray $1 v2ray "0" + if [ -n "$src_dport" ] && [ "$(echo $src_dport | cut -d'-' -f2)" -ge "65000" ]; then logger -t "OMR-VPS" "You can't redirect ports >= 65000, they are needed by OpenMPTCProuter Server part" enabled="0" #uci -q delete firewall.$1 #return fi + [ "$(v2ray.main.enabled)" = "0" ] && v2ray="0" [ "$proto" = "all" ] && proto="tcp udp" [ "$proto" = "" ] && proto="tcp udp" [ "$src" = "vpn" ] && [ -n "$proto" ] && [ -n "$src_dport" ] && [ "$enabled" != "0" ] && { for protoi in $proto; do - checkfw="" - if [ "$family" = "ipv4" ]; then - if [ "$src_dip" = "" ]; then - checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username redirect router $src_dport port $protoi") + if [ "$v2ray" = "0" ]; then + checkfw="" + if [ "$family" = "ipv4" ]; then + if [ "$src_dip" = "" ]; then + checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username redirect router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && { + comment=" to $src_dip" + iptables-save --counters | sed "s:-d $src_dip/32::g" | iptables-restore -w + } + [ -n "$src_ip" ] && comment=" from $src_ip" + checkfw=$(echo "$vpsfwlist" | grep "# OMR $username redirect router $src_dport port $protoi${comment}") + fi else - comment="" - [ -n "$src_dip" ] && { - comment=" to $src_dip" - iptables-save --counters | sed "s:-d $src_dip/32::g" | iptables-restore -w - } - [ -n "$src_ip" ] && comment=" from $src_ip" - checkfw=$(echo "$vpsfwlist" | grep "# OMR $username redirect router $src_dport port $protoi${comment}") + if [ "$src_dip" = "" ]; then + checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username redirect router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + checkfw=$(echo "$vpsfw6list" | grep "# OMR $username redirect router $src_dport port $protoi${comment}") + fi + fi + if [ "$checkfw" = "" ]; then + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'$protoi'","fwtype" : "DNAT","ipproto" : "'$family'"}' + _set_json "shorewallopen" "$settings" + fi + if [ "$family" = "ipv4" ]; then + if [ "$src_dip" = "" ]; then + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username redirect router $src_dport port $protoi") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR redirect router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username redirect router $src_dport port $protoi${comment}") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR redirect router $src_dport port $protoi${comment}") + fi + else + if [ "$src_dip" = "" ]; then + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username redirect router $src_dport port $protoi") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR redirect router $src_dport port $protoi") + else + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username redirect router $src_dport port $protoi${comment}") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR redirect router $src_dport port $protoi${comment}") + fi fi else - if [ "$src_dip" = "" ]; then - checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username redirect router $src_dport port $protoi") + checkfw="" + if [ "$family" = "ipv4" ]; then + if [ "$src_dip" = "" ]; then + checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && { + comment=" to $src_dip" + iptables-save --counters | sed "s:-d $src_dip/32::g" | iptables-restore -w + } + [ -n "$src_ip" ] && comment=" from $src_ip" + checkfw=$(echo "$vpsfwlist" | grep "# OMR $username open router $src_dport port $protoi${comment}") + fi else - comment="" - [ -n "$src_dip" ] && comment=" to $src_dip" - [ -n "$src_ip" ] && comment=" from $src_ip" - checkfw=$(echo "$vpsfw6list" | grep "# OMR $username redirect router $src_dport port $protoi${comment}") + if [ "$src_dip" = "" ]; then + checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + checkfw=$(echo "$vpsfw6list" | grep "# OMR $username open router $src_dport port $protoi${comment}") + fi fi - fi - if [ "$checkfw" = "" ]; then - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'$protoi'","fwtype" : "DNAT","ipproto" : "'$family'"}' - _set_json "shorewallopen" "$settings" - fi - if [ "$family" = "ipv4" ]; then - if [ "$src_dip" = "" ]; then - vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username redirect router $src_dport port $protoi") - [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR redirect router $src_dport port $protoi") - else - comment="" - [ -n "$src_dip" ] && comment=" to $src_dip" - [ -n "$src_ip" ] && comment=" from $src_ip" - vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username redirect router $src_dport port $protoi${comment}") - [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR redirect router $src_dport port $protoi${comment}") + if [ "$checkfw" = "" ]; then + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'$protoi'","fwtype" : "ACCEPT","ipproto" : "'$family'"}' + _set_json "shorewallopen" "$settings" + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","destip" : "'$dest_ip'","proto" : "'$protoi'"}' + _set_json "v2rayredirect" "$settings" fi - else - if [ "$src_dip" = "" ]; then - vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username redirect router $src_dport port $protoi") - [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR redirect router $src_dport port $protoi") + if [ "$family" = "ipv4" ]; then + if [ "$src_dip" = "" ]; then + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username open router $src_dport port $protoi") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR open router $src_dport port $protoi") + else + comment="" + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username open router $src_dport port $protoi${comment}") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR open router $src_dport port $protoi${comment}") + fi else - [ -n "$src_dip" ] && comment=" to $src_dip" - [ -n "$src_ip" ] && comment=" from $src_ip" - vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username redirect router $src_dport port $protoi${comment}") - [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR redirect router $src_dport port $protoi${comment}") + if [ "$src_dip" = "" ]; then + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username open router $src_dport port $protoi") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR open router $src_dport port $protoi") + else + [ -n "$src_dip" ] && comment=" to $src_dip" + [ -n "$src_ip" ] && comment=" from $src_ip" + vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username open router $src_dport port $protoi${comment}") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR open router $src_dport port $protoi${comment}") + fi fi fi done