From ca8d80bc06588b403c4a87f3ec1856b9d408cb0c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jul 2022 13:54:34 +0200 Subject: [PATCH 1/3] Fix wizard --- .../luasrc/controller/openmptcprouter.lua | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 74a638186..5662c273f 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -301,9 +301,10 @@ function wizard_add() ucic:set("network",intf,"type","macvlan") ucic:set("network",intf .. "_dev","device") ucic:set("network",intf .. "_dev","type","macvlan") - ucic:set("network",intf .. "_dev","ifname",masterinf) + ucic:set("network",intf .. "_dev","ifname",masterintf) ucic:set("network",intf .. "_dev","mode","vepa") ucic:set("network",intf .. "_dev","name",intf) + ucic:set("network",intf,"device",intf) ucic:set("network",intf,"masterintf",masterintf) elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then ucic:set("network",intf,"device",ifname) @@ -336,11 +337,14 @@ function wizard_add() ucic:set("network",intf .. "_dev","name",ifname) end end - if typeintf ~= "macvlan" and ucic:get("network",intf .. "_dev","type") == "macvlan" then - ucic:delete("network",intf .. "_dev","type") - ucic:delete("network",intf .. "_dev","mode") - ucic:delete("network",intf .. "_dev","ifname") - ucic:delete("network",intf .. "_dev","macaddr") + if typeintf ~= "macvlan" then + if ucic:get("network",intf .. "_dev","type") == "macvlan" then + ucic:delete("network",intf .. "_dev","type") + ucic:delete("network",intf .. "_dev","mode") + ucic:delete("network",intf .. "_dev","ifname") + ucic:delete("network",intf .. "_dev","macaddr") + end + ucic:delete("network",intf,"masterintf") end if proto == "pppoe" then ucic:set("network",intf,"pppd_options","persist maxfail 0") @@ -373,17 +377,17 @@ function wizard_add() ucic:set("network",intf,"defaultroute",0) ucic:set("network",intf,"peerdns",0) if ipaddr ~= "" then - ucic:set("network",intf,"ipaddr",ipaddr) - ucic:set("network",intf,"netmask",netmask) - ucic:set("network",intf,"gateway",gateway) + ucic:set("network",intf,"ipaddr",ipaddr:gsub("%s+", "")) + ucic:set("network",intf,"netmask",netmask:gsub("%s+", "")) + ucic:set("network",intf,"gateway",gateway:gsub("%s+", "")) else ucic:set("network",intf,"ipaddr","") ucic:set("network",intf,"netmask","") ucic:set("network",intf,"gateway","") end if ip6addr ~= "" then - ucic:set("network",intf,"ip6addr",ip6addr) - ucic:set("network",intf,"ip6gw",ip6gw) + ucic:set("network",intf,"ip6addr",ip6addr:gsub("%s+", "")) + ucic:set("network",intf,"ip6gw",ip6gw:gsub("%s+", "")) else ucic:set("network",intf,"ip6addr","") ucic:set("network",intf,"ip6gw","") @@ -593,8 +597,8 @@ function wizard_add() serversnb = serversnb + 1 end ucic:set("openmptcprouter",server,"server") - ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username) - ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key) + ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username:gsub("%s+", "")) + ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key:gsub("%s+", "")) ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled) ucic:set_list("openmptcprouter",server,"ip",aserverips) ucic:set("openmptcprouter",server,"port","65500") From b1f3f3aa881fd2869e46e4977f792375ebd5129a Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 8 Jul 2022 20:41:52 +0200 Subject: [PATCH 2/3] Use ip instead of ifconfig in multipath --- mptcp/files/usr/bin/multipath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mptcp/files/usr/bin/multipath b/mptcp/files/usr/bin/multipath index c616044e4..6125f1759 100755 --- a/mptcp/files/usr/bin/multipath +++ b/mptcp/files/usr/bin/multipath @@ -133,7 +133,7 @@ if [ -f /proc/sys/net/mptcp/mptcp_enabled ]; then else ID=$(ip mptcp endpoint show | grep "dev $DEVICE" | awk '{print $3}') IFF=$(ip mptcp endpoint show | grep "dev $DEVICE" | awk '{print $4}') - IP=$(ifconfig $DEVICE | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p') + IP=$(ip a show $DEVICE | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p') [ -z "$ID" ] && ID=$(ip mptcp endpoint show | grep "$IP" | awk '{print $3}') RMID=$(ip mptcp endpoint show | grep '::ffff' | awk '{ print $3 }') [ -n "$RMID" ] && ip mptcp endpoint delete id $RMID 2>&1 >/dev/null From ae667515aba88bd53831e4add56afeffbbcbff55 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 11 Jul 2022 20:21:59 +0200 Subject: [PATCH 3/3] Add changes for v2ray fw rules modifications support --- .../files/etc/init.d/openmptcprouter-vps | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index f64b78c56..503cf491c 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -1010,7 +1010,7 @@ _vps_firewall_redirect_port() { checkfw="" if [ "$family" = "ipv4" ]; then if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then - checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi") + checkfw=$(echo "$vpsfwlist" | grep "$src_dport # OMR $username open router $src_dport port $protoi --- V2Ray to ${dest_ip}:${dest_port}") else comment="" [ -n "$src_dip" ] && { @@ -1018,44 +1018,45 @@ _vps_firewall_redirect_port() { 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}") + checkfw=$(echo "$vpsfwlist" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}") fi else if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; then - checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port ${protoi}") + checkfw=$(echo "$vpsfw6list" | grep "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}") 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}") + checkfw=$(echo "$vpsfw6list" | grep "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}") fi fi 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'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","source_dip" : "'$src_dip'","source_ip" : "'$src_ip'","proto" : "'${protoi}'","fwtype" : "ACCEPT","ipproto" : "'$family'","comment" : "V2Ray to '${dest_ip}':'${dest_port}'"}' _set_json "shorewallopen" "$settings" + [ -z "$dest_port" ] && dest_port="$src_dport" settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","destip" : "'$dest_ip'","destport" : "'$dest_port'","proto" : "'${protoi}'"}' _set_json "v2rayredirect" "$settings" fi if [ "$family" = "ipv4" ]; then if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; 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}$") + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$") 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}$") + vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$") fi else if [ "$src_dip" = "" ] && [ "$src_ip" = "" ]; 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}$") + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR open router $src_dport port ${protoi} --- V2Ray to ${dest_ip}:${dest_port}$") 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}$") + vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR $username open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "# OMR open router $src_dport port ${protoi}${comment} --- V2Ray to ${dest_ip}:${dest_port}$") fi fi fi @@ -1072,18 +1073,21 @@ _vps_firewall_close_port() { src_dport=$(echo $line | awk '{print $5}' | tr -d "\n") source_port=$(echo $line | awk '{print $6}' | tr -d "\n") source_dip=$(echo $line | awk '{print $7}' | tr -d "\n") + comment=$(echo $line | awk -F' --- ' '{print $2}' | tr -d "\n") [ "$source_dip" = "#" ] && source_dip="" source_ip=$(echo $line | awk '{print $2}' | awk -F ":" '{print $2}' | tr -d "\n") if [ "$source_port" = "-" ]; then - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","source_dip": "'$source_dip'","source_ip": "'$source_ip'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","source_dip": "'$source_dip'","source_ip": "'$source_ip'","comment" : "'$comment'"}' elif [ "$source_ip" != "" ]; then - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","source_ip": "'$source_ip'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","source_ip": "'$source_ip'","comment" : "'$comment'"}' else - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","comment" : "'$comment'"}' fi _set_json "shorewallclose" "$settings" [ "$type" = "ACCEPT" ] && { - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'"}' + destip=$(echo $comment | awk '{print $3}' | awk -F: '{print $1}') + destport=$(echo $comment | awk '{print $3}' | awk -F: '{print $2}') + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","destip" : "'$destip'","destport": "'$destport'"}' _set_json "v2rayunredirect" "$settings" } } @@ -1097,18 +1101,19 @@ _vps_firewall_close_port() { src_dport=$(echo $line | awk '{print $5}' | tr -d "\n") source_port=$(echo $line | awk '{print $6}' | tr -d "\n") source_dip=$(echo $line | awk '{print $7}' | tr -d "\n") + comment=$(echo $line | awk -F' --- ' '{print $2}' | tr -d "\n") [ "$source_dip" = "#" ] && source_dip="" source_ip=$(echo $line | awk '{print $2}' | awk -F ":" '{print $2}' | tr -d "\n") if [ "$source_port" = "-" ]; then - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6","source_dip": "'$source_dip'","source_ip": "'$source_ip'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6","source_dip": "'$source_dip'","source_ip": "'$source_ip'","comment" : "'$comment'"}' elif [ "$source_ip" != "" ]; then - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6","source_dip": "'$source_dip'","source_ip": "'$source_ip'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6","source_dip": "'$source_dip'","source_ip": "'$source_ip'","comment" : "'$comment'"}' else - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "ipv6","comment" : "'$comment'"}' fi _set_json "shorewallclose" "$settings" [ "$type" = "ACCEPT" ] && { - settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'"}' + settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","comment" : "'$comment'"}' _set_json "v2rayunredirect" "$settings" } }