From d6c486408662a597300c7498f9e7efb197edce10 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 22 Dec 2020 14:12:01 +0100 Subject: [PATCH 001/137] Fix omr-update --- omr-update/files/etc/init.d/omr-update | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/omr-update/files/etc/init.d/omr-update b/omr-update/files/etc/init.d/omr-update index 0199bb214..6f79dae88 100755 --- a/omr-update/files/etc/init.d/omr-update +++ b/omr-update/files/etc/init.d/omr-update @@ -2,7 +2,7 @@ # Copyright (C) 2018 Ycarus (Yannick Chabanois) # Released under GPL 3. See LICENSE for the full terms. -START=9 +START=1 STOP=98 boot() { @@ -24,15 +24,15 @@ boot() { return 0 } if [ "$(uci -q get openmptcprouter.settings.version)" != "${OMRVERSION}" ]; then + uci -q set openmptcprouter.settings=settings + uci -q set openmptcprouter.settings.version=${OMRVERSION} + uci commit cd /rom/etc/uci-defaults || cd /usr/share/omr-update || return 0 files="$(ls)" [ -z "$files" ] && return 0 for file in $files; do ( . "./$(basename $file)" ) done - uci -q set openmptcprouter.settings=settings - uci -q set openmptcprouter.settings.version=${OMRVERSION} - uci commit fi # temporary hack until configd exists /sbin/reload_config From c0b5bb46524b277d6d8010296a67e7a223abc762 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 22 Dec 2020 14:15:34 +0100 Subject: [PATCH 002/137] Fix socket path --- openmptcprouter/files/etc/uci-defaults/2060-omr-system | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openmptcprouter/files/etc/uci-defaults/2060-omr-system b/openmptcprouter/files/etc/uci-defaults/2060-omr-system index 0acd9fd6f..70beaade9 100755 --- a/openmptcprouter/files/etc/uci-defaults/2060-omr-system +++ b/openmptcprouter/files/etc/uci-defaults/2060-omr-system @@ -12,6 +12,13 @@ uci -q batch <<-EOF >/dev/null commit fstab EOF +if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then + uci -q batch <<-EOF >/dev/null + set rpcd.@rpcd[0].socket='/var/run/ubus/ubus.sock' + commit rpcd + EOF +fi + /sbin/block detect > /etc/config/fstab [ -n "$(ubus call system board | jsonfilter -e '@.board_name' | grep raspberry)" ] && [ "$(uci -q get openmptcprouter.settings.scaling_governor)" != "performance" ] && { From db0ba4af80a29bb7bef22ce44b29052625399703 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 24 Dec 2020 08:48:48 +0100 Subject: [PATCH 003/137] Try to fix glorytun udp backup --- .../files/usr/share/omr/post-tracking.d/post-tracking | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index b3ce9fa8e..d1f74cffd 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -580,22 +580,22 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 auto tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 fixed tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 fi else if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx 12500000 rx 12500000 > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate auto tx 12500000 rx 12500000 > /dev/null 2>&1 else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx 12500000 rx 12500000 > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate fixed tx 12500000 rx 12500000 > /dev/null 2>&1 fi fi fi # if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then # glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 # fi - [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 500 > /dev/null 2>&1 + [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 200 > /dev/null 2>&1 fi [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && { [ "$multipath_status" = "$multipath_config" ] || { From 66f8f2b2fec37dfcc99dfb2464c2297f55c7898e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 28 Dec 2020 14:45:13 +0100 Subject: [PATCH 004/137] Add option to enable/disable interface rename --- .../luasrc/controller/openmptcprouter.lua | 4 ++++ .../luasrc/view/openmptcprouter/settings.htm | 10 ++++++++++ .../root/etc/hotplug.d/net/99-omr-rename | 8 +++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 5de2cda24..f30be2a41 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -864,6 +864,10 @@ function settings_add() local disablegwping = luci.http.formvalue("disablegwping") or "0" ucic:set("openmptcprouter","settings","disablegwping",disablegwping) + -- Enable/disable renaming intf + local disableintfrename = luci.http.formvalue("disableintfrename") or "0" + ucic:set("openmptcprouter","settings","disableintfrename",disableintfrename) + -- Enable/disable default gateway local disabledefaultgw = luci.http.formvalue("disabledefaultgw") or "1" ucic:set("openmptcprouter","settings","defaultgw",disabledefaultgw) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 50c4ccce3..5ec0b3c2c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -244,6 +244,16 @@ +
+ +
+ checked<% end %>> +
+
+ <%:Disable renaming interfaces%> +
+
+
diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index ad256bae9..19fcf1b1e 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -58,6 +58,8 @@ _set_intf_name() { } } -config_load network -config_foreach _set_intf_name interface -config_foreach _set_intf_name interface +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then + config_load network + config_foreach _set_intf_name interface + config_foreach _set_intf_name interface +fi \ No newline at end of file From 1882a94f45cbb6babb06661bd2360f878fcfcd1f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 29 Dec 2020 14:52:44 +0100 Subject: [PATCH 005/137] Fix DNS check --- omr-tracker/files/bin/omr-tracker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index d2211fcb5..2e7b3d96a 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -150,8 +150,8 @@ _dns() { -b "${deviceip}" \ +time="$OMR_TRACKER_TIMEOUT" \ +tries=1 \ - openmptcprouter.com - ) && echo "$ret" | grep -sq "94.23.252.192" && { + one.one.one.one + ) && echo "$ret" | grep -sq "1.1.1.1" && { OMR_TRACKER_LATENCY=$(echo "$ret" | awk '/Query time/{print $4}') _update_rto "$OMR_TRACKER_LATENCY" return From 0cc5f3622a574f21ddb005e9d8a02478f61ceb41 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 29 Dec 2020 14:53:10 +0100 Subject: [PATCH 006/137] Add GRE tracker --- omr-tracker/files/bin/omr-tracker-gre | 46 ++++++++++++++++++++++++ omr-tracker/files/etc/init.d/omr-tracker | 31 ++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100755 omr-tracker/files/bin/omr-tracker-gre diff --git a/omr-tracker/files/bin/omr-tracker-gre b/omr-tracker/files/bin/omr-tracker-gre new file mode 100755 index 000000000..b169d21d8 --- /dev/null +++ b/omr-tracker/files/bin/omr-tracker-gre @@ -0,0 +1,46 @@ +#!/bin/sh +# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : + +name=$0 +basename="$(basename $0)" + +_log() { + logger -p daemon.info -t "${basename}" "$@" +} + +_ping_server() { + local host=$1 + ret=$(ping \ + -w "$OMR_TRACKER_TIMEOUT" \ + -c 1 \ + -q \ + "${host}" + ) && echo "$ret" | grep -sq " 0% packet loss" && { + server_ping=true + } +} + +_ping_tunnel() { + local name=$1 + config_get gateway $1 gateway + config_get ifname $1 ifname + config_get disabled $1 disabled + [ "$(echo $ifname | grep omrip)" != "" ] && [ -n "$gateway" ] && [ "$disabled" != "1" ] && { + _ping_server $gateway + } +} + +. /lib/functions.sh + +timeout=${OMR_TRACKER_TIMEOUT:-5} +interval=${OMR_TRACKER_INTERVAL:-10} +intervaltries=${OMR_TRACKER_INTERVAL_TRIES:-2} +retry=${OMR_TRACKER_TRIES:-4} +waittest=${OMR_TRACKER_WAIT_TEST:-0} + +while true; do + server_ping=false + config_load network + config_foreach _ping_tunnel interface + sleep "${interval}" +done diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index e7bf920a7..3612c57ee 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -103,6 +103,28 @@ _launch_server_tracker() { procd_close_instance } +_launch_gre_tracker() { + local hosts timeout tries interval interval_tries options type enabled wait_test + _validate_section "defaults" "defaults" + _validate_section "gre" "gre" + + [ "${enabled}" = "0" ] && return + [ -z "${interval_tries}" ] && interval_tries=1 + + procd_open_instance + # shellcheck disable=SC2086 + procd_set_param command /bin/omr-tracker-gre "$1" $options + procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout" + procd_append_param env "OMR_TRACKER_TRIES=$tries" + procd_append_param env "OMR_TRACKER_INTERVAL=$interval" + procd_append_param env "OMR_TRACKER_INTERVAL_TRIES=$interval_tries" + procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" + procd_set_param limits nofile="51200 51200" + procd_set_param respawn 0 10 0 + procd_set_param stderr 1 + procd_close_instance +} + _initialize_shadowsocks_tracker() { local redir_tcp server tracker_server config_get redir_tcp ss_rules redir_tcp @@ -199,6 +221,11 @@ _multi_server() { [ "$backup" = "1" ] && multiserver=true } +_gre_tunnel() { + config_get proto $1 proto + [ "$proto" = "gre" ] && gretunnel=true +} + start_service() { local ss_disabled logger -t "omr-tracker" "Launching..." @@ -224,6 +251,10 @@ start_service() { config_load openmptcprouter config_foreach _multi_server server [ "$multiserver" = true ] && _launch_server_tracker + gretunnel=false + config_load network + config_foreach _gre_tunnel interface + [ "$gretunnel" = true ] && _launch_gre_tracker logger -t "omr-tracker" "Launched" } From 3ff2166a00b10db9cc83bc001c5d77c8ea7d1024 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 28 Dec 2020 14:45:13 +0100 Subject: [PATCH 007/137] Add option to enable/disable interface rename --- .../luasrc/controller/openmptcprouter.lua | 4 ++++ .../luasrc/view/openmptcprouter/settings.htm | 10 ++++++++++ .../root/etc/hotplug.d/net/99-omr-rename | 8 +++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 5de2cda24..f30be2a41 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -864,6 +864,10 @@ function settings_add() local disablegwping = luci.http.formvalue("disablegwping") or "0" ucic:set("openmptcprouter","settings","disablegwping",disablegwping) + -- Enable/disable renaming intf + local disableintfrename = luci.http.formvalue("disableintfrename") or "0" + ucic:set("openmptcprouter","settings","disableintfrename",disableintfrename) + -- Enable/disable default gateway local disabledefaultgw = luci.http.formvalue("disabledefaultgw") or "1" ucic:set("openmptcprouter","settings","defaultgw",disabledefaultgw) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 50c4ccce3..5ec0b3c2c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -244,6 +244,16 @@
+
+ +
+ checked<% end %>> +
+
+ <%:Disable renaming interfaces%> +
+
+
diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index ad256bae9..19fcf1b1e 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -58,6 +58,8 @@ _set_intf_name() { } } -config_load network -config_foreach _set_intf_name interface -config_foreach _set_intf_name interface +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then + config_load network + config_foreach _set_intf_name interface + config_foreach _set_intf_name interface +fi \ No newline at end of file From c6ee6661de9bf6d066b618c2fafa669c972164eb Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 29 Dec 2020 14:52:44 +0100 Subject: [PATCH 008/137] Fix DNS check --- omr-tracker/files/bin/omr-tracker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index d2211fcb5..2e7b3d96a 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -150,8 +150,8 @@ _dns() { -b "${deviceip}" \ +time="$OMR_TRACKER_TIMEOUT" \ +tries=1 \ - openmptcprouter.com - ) && echo "$ret" | grep -sq "94.23.252.192" && { + one.one.one.one + ) && echo "$ret" | grep -sq "1.1.1.1" && { OMR_TRACKER_LATENCY=$(echo "$ret" | awk '/Query time/{print $4}') _update_rto "$OMR_TRACKER_LATENCY" return From e0223efa14c6badbc196bbb96af360b228ccfe1d Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 29 Dec 2020 14:53:10 +0100 Subject: [PATCH 009/137] Add GRE tracker --- omr-tracker/files/bin/omr-tracker-gre | 46 ++++++++++++++++++++++++ omr-tracker/files/etc/init.d/omr-tracker | 31 ++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100755 omr-tracker/files/bin/omr-tracker-gre diff --git a/omr-tracker/files/bin/omr-tracker-gre b/omr-tracker/files/bin/omr-tracker-gre new file mode 100755 index 000000000..b169d21d8 --- /dev/null +++ b/omr-tracker/files/bin/omr-tracker-gre @@ -0,0 +1,46 @@ +#!/bin/sh +# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : + +name=$0 +basename="$(basename $0)" + +_log() { + logger -p daemon.info -t "${basename}" "$@" +} + +_ping_server() { + local host=$1 + ret=$(ping \ + -w "$OMR_TRACKER_TIMEOUT" \ + -c 1 \ + -q \ + "${host}" + ) && echo "$ret" | grep -sq " 0% packet loss" && { + server_ping=true + } +} + +_ping_tunnel() { + local name=$1 + config_get gateway $1 gateway + config_get ifname $1 ifname + config_get disabled $1 disabled + [ "$(echo $ifname | grep omrip)" != "" ] && [ -n "$gateway" ] && [ "$disabled" != "1" ] && { + _ping_server $gateway + } +} + +. /lib/functions.sh + +timeout=${OMR_TRACKER_TIMEOUT:-5} +interval=${OMR_TRACKER_INTERVAL:-10} +intervaltries=${OMR_TRACKER_INTERVAL_TRIES:-2} +retry=${OMR_TRACKER_TRIES:-4} +waittest=${OMR_TRACKER_WAIT_TEST:-0} + +while true; do + server_ping=false + config_load network + config_foreach _ping_tunnel interface + sleep "${interval}" +done diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index e7bf920a7..3612c57ee 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -103,6 +103,28 @@ _launch_server_tracker() { procd_close_instance } +_launch_gre_tracker() { + local hosts timeout tries interval interval_tries options type enabled wait_test + _validate_section "defaults" "defaults" + _validate_section "gre" "gre" + + [ "${enabled}" = "0" ] && return + [ -z "${interval_tries}" ] && interval_tries=1 + + procd_open_instance + # shellcheck disable=SC2086 + procd_set_param command /bin/omr-tracker-gre "$1" $options + procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout" + procd_append_param env "OMR_TRACKER_TRIES=$tries" + procd_append_param env "OMR_TRACKER_INTERVAL=$interval" + procd_append_param env "OMR_TRACKER_INTERVAL_TRIES=$interval_tries" + procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" + procd_set_param limits nofile="51200 51200" + procd_set_param respawn 0 10 0 + procd_set_param stderr 1 + procd_close_instance +} + _initialize_shadowsocks_tracker() { local redir_tcp server tracker_server config_get redir_tcp ss_rules redir_tcp @@ -199,6 +221,11 @@ _multi_server() { [ "$backup" = "1" ] && multiserver=true } +_gre_tunnel() { + config_get proto $1 proto + [ "$proto" = "gre" ] && gretunnel=true +} + start_service() { local ss_disabled logger -t "omr-tracker" "Launching..." @@ -224,6 +251,10 @@ start_service() { config_load openmptcprouter config_foreach _multi_server server [ "$multiserver" = true ] && _launch_server_tracker + gretunnel=false + config_load network + config_foreach _gre_tunnel interface + [ "$gretunnel" = true ] && _launch_gre_tracker logger -t "omr-tracker" "Launched" } From 60343492d6bf3d1a376efaa6cf2eff5426bef46b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 30 Dec 2020 10:39:57 +0100 Subject: [PATCH 010/137] Fix glorytun-udp backup mode --- mptcp/files/usr/share/omr/post-tracking.d/post-tracking | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index d1f74cffd..855c6d7f5 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -595,7 +595,7 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then # if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then # glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 # fi - [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 200 > /dev/null 2>&1 + [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1 fi [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && { [ "$multipath_status" = "$multipath_config" ] || { From c64efb08bc5d974d691560ef90f76cf8a0b6c01c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 30 Dec 2020 16:44:22 +0100 Subject: [PATCH 011/137] Fix BBRv2 for ARM64 --- openmptcprouter-full/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index 9625904b5..d3b617dd3 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -78,7 +78,7 @@ MY_DEPENDS := \ !TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \ kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ - luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||TARGET_arm64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ + luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||TARGET_aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status From 543cab8d20984b5c646dfb9c66d8ad167efd0811 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 10:58:42 +0100 Subject: [PATCH 012/137] Install BBRv2 package on AMR64 (really) --- openmptcprouter-full/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index d3b617dd3..defb4d7b4 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -78,7 +78,7 @@ MY_DEPENDS := \ !TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \ kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ - luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||TARGET_aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ + luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status From 2960b6b5d7ce3e1436fbb0ddd88d836404315d44 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 10:59:07 +0100 Subject: [PATCH 013/137] Force ubus path fix --- luci-app-openmptcprouter/root/etc/init.d/openmptcprouter | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 63d4d3a3a..2348fa8b0 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -104,6 +104,15 @@ start_service() { # remove sysctl already defined in /etc/sysctl.d/ sed -i -e '/tcp_fin_timeout/d' -e '/tcp_keepalive_time/d' -e '/nf_conntrack_max/d' -e '/tcp_syn_retries/d' -e '/tcp_fastopen/d' -e '/tcp_retries2/d' -e '/tcp_retries1/d' -e '/ip_default_ttl/d' /etc/sysctl.conf sed -i -e '/tcp_fin_timeout/d' -e '/tcp_keepalive_time/d' -e '/nf_conntrack_max/d' -e '/tcp_syn_retries/d' -e '/tcp_fastopen/d' -e '/tcp_retries2/d' -e '/tcp_retries1/d' -e '/ip_default_ttl/d' /etc/sysctl.d/10-default.conf + + if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then + uci -q batch <<-EOF >/dev/null + set rpcd.@rpcd[0].socket='/var/run/ubus/ubus.sock' + commit rpcd + EOF + /etc/init.d/rpcd restart 2>&1 >/dev/null + fi + } reload_service() { From 517b93f4362b32de8eb9e75907f6e5d69f62762e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 11:00:19 +0100 Subject: [PATCH 014/137] Fix omr-update --- omr-update/files/etc/init.d/omr-update | 1 + .../files/etc/uci-defaults/000-omr-update | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100755 openmptcprouter/files/etc/uci-defaults/000-omr-update diff --git a/omr-update/files/etc/init.d/omr-update b/omr-update/files/etc/init.d/omr-update index 6f79dae88..59c131e95 100755 --- a/omr-update/files/etc/init.d/omr-update +++ b/omr-update/files/etc/init.d/omr-update @@ -16,6 +16,7 @@ boot() { [ -n "$files" ] && { mkdir -p /usr/share/omr-update if [ "$(grep rom /etc/mtab)" = "" ]; then + rm /usr/share/omr-update/* cp /etc/uci-defaults/* /usr/share/omr-update fi uci -q set openmptcprouter.settings=settings diff --git a/openmptcprouter/files/etc/uci-defaults/000-omr-update b/openmptcprouter/files/etc/uci-defaults/000-omr-update new file mode 100755 index 000000000..6e16cc6b0 --- /dev/null +++ b/openmptcprouter/files/etc/uci-defaults/000-omr-update @@ -0,0 +1,18 @@ +#!/bin/sh + +cd /etc/uci-defaults || exit 0 +source /etc/os-release + +OMRVERSION=$(echo $VERSION | sed 's/v//') +files="$(ls /etc/uci-defaults/)" +[ -n "$files" ] && { + mkdir -p /usr/share/omr-update + if [ "$(grep rom /etc/mtab)" = "" ]; then + rm /usr/share/omr-update/* + cp /etc/uci-defaults/* /usr/share/omr-update + fi + uci -q set openmptcprouter.settings=settings + uci -q set openmptcprouter.settings.version=${OMRVERSION} + uci -q commit +} +exit 0 From 2f553dfc290d2aa3ed063e53b9a089b3ddb3c575 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 10:58:42 +0100 Subject: [PATCH 015/137] Install BBRv2 package on AMR64 (really) --- openmptcprouter-full/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index d3b617dd3..defb4d7b4 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -78,7 +78,7 @@ MY_DEPENDS := \ !TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \ kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ - luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||TARGET_aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ + luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status From a45d6a842ab7b5fc9b79415a32f318ab2c13a2f2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 10:59:07 +0100 Subject: [PATCH 016/137] Force ubus path fix --- luci-app-openmptcprouter/root/etc/init.d/openmptcprouter | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 63d4d3a3a..2348fa8b0 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -104,6 +104,15 @@ start_service() { # remove sysctl already defined in /etc/sysctl.d/ sed -i -e '/tcp_fin_timeout/d' -e '/tcp_keepalive_time/d' -e '/nf_conntrack_max/d' -e '/tcp_syn_retries/d' -e '/tcp_fastopen/d' -e '/tcp_retries2/d' -e '/tcp_retries1/d' -e '/ip_default_ttl/d' /etc/sysctl.conf sed -i -e '/tcp_fin_timeout/d' -e '/tcp_keepalive_time/d' -e '/nf_conntrack_max/d' -e '/tcp_syn_retries/d' -e '/tcp_fastopen/d' -e '/tcp_retries2/d' -e '/tcp_retries1/d' -e '/ip_default_ttl/d' /etc/sysctl.d/10-default.conf + + if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then + uci -q batch <<-EOF >/dev/null + set rpcd.@rpcd[0].socket='/var/run/ubus/ubus.sock' + commit rpcd + EOF + /etc/init.d/rpcd restart 2>&1 >/dev/null + fi + } reload_service() { From dbd0346a8b22a66332077e40ffa37ae4042b76f0 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 11:00:19 +0100 Subject: [PATCH 017/137] Fix omr-update --- omr-update/files/etc/init.d/omr-update | 1 + .../files/etc/uci-defaults/000-omr-update | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100755 openmptcprouter/files/etc/uci-defaults/000-omr-update diff --git a/omr-update/files/etc/init.d/omr-update b/omr-update/files/etc/init.d/omr-update index 6f79dae88..59c131e95 100755 --- a/omr-update/files/etc/init.d/omr-update +++ b/omr-update/files/etc/init.d/omr-update @@ -16,6 +16,7 @@ boot() { [ -n "$files" ] && { mkdir -p /usr/share/omr-update if [ "$(grep rom /etc/mtab)" = "" ]; then + rm /usr/share/omr-update/* cp /etc/uci-defaults/* /usr/share/omr-update fi uci -q set openmptcprouter.settings=settings diff --git a/openmptcprouter/files/etc/uci-defaults/000-omr-update b/openmptcprouter/files/etc/uci-defaults/000-omr-update new file mode 100755 index 000000000..6e16cc6b0 --- /dev/null +++ b/openmptcprouter/files/etc/uci-defaults/000-omr-update @@ -0,0 +1,18 @@ +#!/bin/sh + +cd /etc/uci-defaults || exit 0 +source /etc/os-release + +OMRVERSION=$(echo $VERSION | sed 's/v//') +files="$(ls /etc/uci-defaults/)" +[ -n "$files" ] && { + mkdir -p /usr/share/omr-update + if [ "$(grep rom /etc/mtab)" = "" ]; then + rm /usr/share/omr-update/* + cp /etc/uci-defaults/* /usr/share/omr-update + fi + uci -q set openmptcprouter.settings=settings + uci -q set openmptcprouter.settings.version=${OMRVERSION} + uci -q commit +} +exit 0 From e092f1b2d1a40e15b4bf6923420e2770711884db Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 4 Jan 2021 16:40:03 +0100 Subject: [PATCH 018/137] Start omr-update after boot script --- omr-update/files/etc/init.d/omr-update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omr-update/files/etc/init.d/omr-update b/omr-update/files/etc/init.d/omr-update index 59c131e95..d69c779f8 100755 --- a/omr-update/files/etc/init.d/omr-update +++ b/omr-update/files/etc/init.d/omr-update @@ -2,7 +2,7 @@ # Copyright (C) 2018 Ycarus (Yannick Chabanois) # Released under GPL 3. See LICENSE for the full terms. -START=1 +START=11 STOP=98 boot() { From 956dbdaffb80d61393b4ec8e4c87c03b574854dd Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 5 Jan 2021 07:57:34 +0100 Subject: [PATCH 019/137] Fix glorytun tcp interface --- .../luci-static/resources/view/services/glorytun-tcp.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js index c8929e0fb..4b336e339 100644 --- a/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js +++ b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js @@ -32,7 +32,6 @@ return L.view.extend({ s.tab('advanced', _('Advanced Settings')); o = s.taboption('general', form.Flag, 'enable', _('Enabled')); - o.default = o.enabled; o = s.taboption('general',form.Value, 'label', _('Label')); o.rmempty = true; @@ -65,11 +64,9 @@ return L.view.extend({ o.rmempty = false; o = s.taboption('advanced', form.Flag, 'mptcp', _('MPTCP')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Flag, 'chacha20', _('chacha'), _('Force fallback cipher')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Value, 'timeout', _('Timeout')); @@ -78,7 +75,6 @@ return L.view.extend({ o.modalonly = true; o = s.taboption('advanced', form.Flag, 'multiqueue', _('Multiqueue')); - o.default = o.enabled; o.rmempty = false; o.modalonly = true; From c0f4def8eab723641fc6601228dbd9cf5a80f269 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 5 Jan 2021 07:57:46 +0100 Subject: [PATCH 020/137] Fix glorytun udp interface --- .../htdocs/luci-static/resources/view/services/glorytun-udp.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js index 762332468..b14b4fb4a 100644 --- a/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js +++ b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js @@ -40,7 +40,6 @@ return L.view.extend({ s.tab('advanced', _('Advanced Settings')); o = s.taboption('general', form.Flag, 'enable', _('Enabled')); - o.default = o.enabled; o = s.taboption('general',form.Value, 'label', _('Label')); o.rmempty = true; @@ -74,11 +73,9 @@ return L.view.extend({ o.rmempty = false; o = s.taboption('advanced', form.Flag, 'persist', _('Persist'), _('Keep the tunnel device after exiting')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Flag, 'chacha', _('chacha'), _('Force fallback cipher')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Value, 'kxtimeout', _('Key rotation timeout')); From dd7a0481de39d667ada71f43c8982ec4dd4cd023 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 5 Jan 2021 07:58:03 +0100 Subject: [PATCH 021/137] Fix omr rename in some case --- .../root/etc/hotplug.d/net/99-omr-rename | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 19fcf1b1e..02d204117 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -27,14 +27,14 @@ _set_intf_name() { if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" existif=0 - ip link set ${INTERFACE} down + ip link set ${INTERFACE} down 2>&1 >/dev/null [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { - ip link set ${ifname} name ${ifname}tmp + ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null existif=1 } - ip link set ${INTERFACE} name ${ifname} - ip link set ${ifname} up - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} + ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null + ip link set ${ifname} up 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null fi fi elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then @@ -46,15 +46,15 @@ _set_intf_name() { } [ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && { logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" - ip link set ${INTERFACE} down + ip link set ${INTERFACE} down 2>&1 >/dev/null existif=0 [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { - ip link set ${ifname} name ${ifname}tmp + ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null existif=1 } - ip link set ${INTERFACE} name ${ifname} - ip link set ${ifname} up - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} + ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null + ip link set ${ifname} up 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null } } From 296dde429b8cfac954cbaf7d9e63894472b02a91 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 14:24:18 +0100 Subject: [PATCH 022/137] Change some luci-app-openmptcprouter strings --- .../luasrc/view/openmptcprouter/settings.htm | 6 +- .../po/templates/openmptcprouter.pot | 689 +++++++++--------- 2 files changed, 355 insertions(+), 340 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 5ec0b3c2c..c23724f44 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -17,9 +17,9 @@ %>
-

<%:Update VPS%>

+

<%:Update server%>

-
<%:Update remotly the server to latest version when needed.%> <%:Beta%>
+
<%:Update remotly servers to latest version and reboot them.%> <%:Beta%>
@@ -40,7 +40,7 @@

<%:Advanced Settings%>

- <%:VPS settings%> + <%:Server settings%> <% uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] diff --git a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot index 44d2aae48..4daf598a7 100644 --- a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot +++ b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot @@ -1,41 +1,41 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:255 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:256 msgid "A Dead Simple VPN is a TCP VPN that can replace Glorytun TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:250 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:252 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:251 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:253 msgid "A Dead Simple VPN key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:72 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:73 msgid "API username to retrieve personnalized settings from the server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:650 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:654 msgid "APN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:117 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:118 msgid "Add a new server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:819 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:827 msgid "Add an interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:19 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:39 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:18 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:41 msgid "Advanced Settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:124 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:125 msgid "Advanced settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 msgid "" "All VPN available here can do aggregation over MPTCP or using own internal " "method." @@ -45,250 +45,262 @@ msgstr "" msgid "All router settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:224 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:225 msgid "" "An Advanced Encryption Standard (AES) instruction set is integrated in the " "processor." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:676 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:680 msgid "Authentication Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:714 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:726 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:718 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:734 msgid "Backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:22 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:8 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:21 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:10 msgid "Backup on server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:292 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:310 msgid "Balancing" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:20 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 msgid "Beta" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:288 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:296 msgid "Big time difference between the server and the router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:474 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:478 msgid "Bridge" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:235 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:236 msgid "By default VPN is used for any traffic that is not TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:169 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:170 msgid "" "By default proxy is used for any traffic that is TCP (and UDP for V2Ray)." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:681 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:685 msgid "CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:252 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:257 msgid "Can\\'t access and use server part" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:275 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:283 msgid "Can\\'t contact Server Admin Script" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:268 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:273 msgid "Can\\'t get public IP address from ShadowSocks" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:265 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:276 +msgid "Can\\'t get public IP address from V2Ray" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:270 msgid "Can\\'t ping server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:478 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:482 msgid "" "Choose MacVLAN if you want to create a virtual interface based on a physical " "interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:412 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:498 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:544 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:416 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:502 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:548 msgid "Choose physical interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:122 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:123 msgid "Common server settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:130 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:135 msgid "Core temp:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:364 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:509 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:368 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:513 msgid "DHCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:183 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:188 msgid "DNS issue: can\\'t resolve hostname" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:276 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:294 msgid "Debug" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:171 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:172 msgid "Default Proxy" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:285 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 msgid "Default VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:51 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:453 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:52 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:457 msgid "Delete" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:576 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:603 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:624 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:580 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:607 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:628 msgid "Device" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:201 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:203 msgid "Disable TCP Fast Open" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:206 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:208 msgid "Disable TCP Fast Open on Linux and Shadowsocks configuration" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:246 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:264 msgid "Disable default gateway" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:251 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:269 msgid "Disable default gateway, no internet if VPS are down" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:191 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:193 msgid "Disable external check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:236 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:238 msgid "Disable gateway ping" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:241 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:243 msgid "Disable gateway ping status check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:271 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:248 +msgid "Disable interfaces auto rename" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:289 msgid "Disable multipath test using tracebox" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:61 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:63 msgid "" "Disable ports redirection defined in firewall from server to this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:105 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:253 +msgid "Disable renaming interfaces" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:106 msgid "Disable server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:256 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:274 msgid "Disable server ping" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:261 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:279 msgid "Disable server ping status check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:266 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:284 msgid "Disable tracebox test" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:712 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:724 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:716 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:732 msgid "Disabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:770 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:778 msgid "Download speed (Kb/s)" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:290 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:308 msgid "Dynamic change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:185 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:147 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:187 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:148 msgid "Enable IPv6" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:760 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:768 msgid "Enable SQM" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:77 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:79 msgid "Enable ShadowSocks Obfuscating" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:211 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:213 msgid "Enable TCP Low Latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:281 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:299 msgid "Enable debug logs" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:711 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:723 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:715 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:731 msgid "Enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:207 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:208 msgid "Encryption" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:228 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:229 msgid "Encryption method is used for Shadowsocks, V2Ray, Glorytun and OpenVPN." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:171 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:176 msgid "Filesystem is readonly" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:139 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:140 msgid "Force retrieve all keys from server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:134 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:135 msgid "Force retrieve settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:670 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:674 msgid "GPRS only" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:496 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:657 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:504 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:665 msgid "Gateway DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:244 msgid "Glorytun TCP is used by default for UDP and ICMP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:238 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:240 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:239 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:241 msgid "Glorytun key" msgstr "" @@ -296,763 +308,766 @@ msgstr "" msgid "Grant UCI access for luci-app-openmptcprouter" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:128 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:130 msgid "How often TCP sends out keepalive messages when keepalive is enabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:179 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:181 msgid "IPv4 IP default TTL" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:133 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:135 msgid "IPv4 TCP FIN timeout" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:173 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:175 msgid "IPv4 TCP Fast Open" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:123 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:125 msgid "IPv4 TCP Keepalive time" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:143 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:145 msgid "IPv4 TCP SYN retries" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:153 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:155 msgid "IPv4 TCP SYN retries1" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:163 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:165 msgid "IPv4 TCP SYN retries2" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:420 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:550 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:424 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:554 msgid "IPv4 address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:566 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:570 msgid "IPv4 gateway" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:426 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:560 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:430 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:564 msgid "IPv4 netmask" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:157 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:158 msgid "IPv6 Prefix" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:536 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:697 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:544 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:705 msgid "IPv6 route received" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:145 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:146 msgid "IPv6 settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:204 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:209 msgid "IPv6 tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:328 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:336 msgid "IPv6:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:439 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:443 msgid "Interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:192 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:202 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:255 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:267 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:279 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:193 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:203 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:244 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:256 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:268 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:280 msgid "Key is retrieved from server API by default." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:82 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:83 msgid "" "Key to configure and retrieve others keys from Server and to set server " "settings from OpenMPTCProuter." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:337 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:341 msgid "LAN interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:668 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:672 msgid "LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:348 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:459 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:352 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:463 msgid "Label" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:354 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:464 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:358 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:468 msgid "Label for the interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:20 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:22 msgid "Last available backup on server:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:119 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:305 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:124 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:313 msgid "Latest available version" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:125 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:311 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:130 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:319 msgid "Load:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:267 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:268 msgid "MLVPN can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:264 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:263 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:265 msgid "MLVPN password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:284 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:292 msgid "MPTCP is not enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:322 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:330 msgid "MPTCP may not be enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:750 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:758 msgid "MPTCP over VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:473 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:477 msgid "MacVLAN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:713 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:725 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:717 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:733 msgid "Master" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:286 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:304 msgid "Master interface selection" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:308 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:326 msgid "Maximum scaling CPU frequency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:302 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:320 msgid "Minimum scaling CPU frequency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:665 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:669 msgid "Modem default" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:699 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:703 msgid "Modem init timeout" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:510 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:514 msgid "ModemManager" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:175 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:180 msgid "More than one default VPN is enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:708 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:720 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:712 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:728 msgid "Multipath TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:519 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:525 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:680 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:686 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:527 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:533 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:688 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:694 msgid "Multipath current state is" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:514 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:675 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:522 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:683 msgid "Multipath master already defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:499 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:660 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:668 msgid "Multipath seems to be blocked on the connection" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:511 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:515 msgid "NCM" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:679 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:683 msgid "NONE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:531 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:692 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:539 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:700 msgid "Network interface duplicated" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:792 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:794 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:800 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:802 msgid "Network overview" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:120 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:122 msgid "Networks settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:489 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:650 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:497 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:658 msgid "No IP defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:207 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:212 msgid "No IPv6 access" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:503 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:664 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:511 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:672 msgid "No Server ping response after 1 second" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:271 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:279 msgid "No WAN IP address detected in less than 1 second" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:24 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:26 msgid "No available backup on server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:291 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:309 msgid "No change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:712 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:720 msgid "No data" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:493 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:654 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:501 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:662 msgid "No gateway defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:243 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:244 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:248 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:249 msgid "No output" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:248 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:253 msgid "No server IP address, No WAN IP address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:261 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:266 msgid "No server defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:213 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:214 msgid "None" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:472 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:476 msgid "Normal" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:148 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:150 msgid "" "Number of times initial SYNs for an active TCP connection attempt will be " "retransmitted." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:87 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:89 msgid "Obfuscating plugin" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:106 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:108 msgid "Obfuscating type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:82 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:84 msgid "Obfuscating will be enabled on both side" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:289 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:307 msgid "On wizard change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:182 msgid "Only ShadowSocks is supported with server multiple IPs for now." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:96 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:722 +msgid "" +"Only one interface must be set as \"Master\", this should be the most stable " +"interface." +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:97 msgid "Only one server can be master, else all servers are set as backup." msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:14 #: luci-app-openmptcprouter/root/usr/share/luci/menu.d/luci-app-openmptcprouter.json:3 msgid "OpenMPTCProuter" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 msgid "OpenVPN can't be used in multi VPS configuration." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:216 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:218 msgid "Optimize for latency instead of bandwidth" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:365 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:514 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:369 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:518 msgid "Other" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:223 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:225 msgid "Other settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:680 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:684 msgid "PAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:682 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:686 msgid "PAP/CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:693 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:697 msgid "PAP/CHAP password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:687 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:691 msgid "PAP/CHAP username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:656 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:660 msgid "PIN code" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:512 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:516 msgid "PPPoE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:377 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:483 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:523 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:381 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:487 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:527 msgid "Physical interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:666 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:670 msgid "Prefer LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:667 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:671 msgid "Prefer UMTS" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:359 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:504 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:363 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:508 msgid "Protocol" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:194 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:199 msgid "Proxy is DISABLED" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:168 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:169 msgid "Proxy settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:333 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:341 msgid "Proxy traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:513 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:517 msgid "QMI" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:50 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:52 msgid "Redirects all ports from server to this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:30 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:32 msgid "Restore backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:132 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:133 msgid "Retrieve settings from server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:334 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:828 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:352 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:836 msgid "Save & Apply" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:231 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:233 msgid "Save vnstats statistics on disk" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:226 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:228 msgid "Save vnstats stats" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:314 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:332 msgid "Scaling governor" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:822 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:830 msgid "Select the device you want to base the interface on." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:31 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:33 msgid "Send backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:57 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:59 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:58 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:60 msgid "Server IP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:61 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:62 msgid "Server IP will be set for proxy and VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:77 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:79 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:78 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:80 msgid "Server key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:41 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:43 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:42 msgid "Server settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:67 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:69 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:68 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:70 msgid "Server username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:662 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:666 msgid "Service Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:555 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:559 msgid "Set an IP in the same network as the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:571 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:575 msgid "Set here IP of the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:91 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:92 msgid "Set server as master" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:180 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 msgid "" "Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and " "UDP when V2Ray is enabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 msgid "" "Set the default VPN used for ICMP (and UDP if proxy used is shadowsocks), " "for all traffic if proxy is disabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:780 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:788 msgid "" "Set value between 80-95% of max download speed link. 0 to disable SQM/QoS." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:796 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:804 msgid "" "Set value between 80-95% of max upload speed link. 0 to disable SQM/QoS." msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:15 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:14 msgid "Settings Wizard" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:153 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:158 msgid "ShadowSocks is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:192 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:193 msgid "ShadowSocks is used for TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:187 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:189 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:188 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:190 msgid "ShadowSocks key" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:24 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:23 msgid "Show all settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:363 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:508 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:367 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:512 msgid "Static address" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:17 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:16 msgid "Status" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:299 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:317 msgid "Systems settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:138 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:140 msgid "" "The length of time an orphaned (no longer referenced by any application) " "connection will remain in the FIN_WAIT_2 state before it is aborted at the " "local end." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:226 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:227 msgid "" "There is no Advanced Encryption Standard (AES) instruction set integrated in " "the processor, you should use chacha20." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:158 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:160 msgid "" "This value influences the time, after which TCP decides, that something is " "wrong due to unacknowledged RTO retransmissions, and reports this suspicion " "to the network layer." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:168 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:170 msgid "" "This value influences the timeout of an alive TCP connection, when RTO " "retransmissions remain unacknowledged." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:343 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:351 msgid "Total traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:469 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:473 msgid "Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:279 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:280 msgid "UBOND can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:276 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:275 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:277 msgid "UBOND password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:669 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:673 msgid "UMTS/GPRS" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:27 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:29 msgid "Update" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:18 -msgid "Update VPS" +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 +msgid "Update remotly servers to latest version and reboot them." msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:20 -msgid "Update remotly the server to latest version when needed." -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:24 msgid "Update server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:786 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:794 msgid "Upload speed (Kb/s)" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:136 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:317 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:141 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:325 msgid "Uptime:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:775 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:791 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:783 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:799 msgid "Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:165 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:170 msgid "V2Ray is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:202 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:203 msgid "V2Ray is used for TCP and UDP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:199 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:200 msgid "V2Ray user" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:197 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:198 msgid "V2Ray user id" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:179 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:184 msgid "VPN is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:234 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:235 msgid "VPN settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:338 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:346 msgid "VPN traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:198 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:203 msgid "VPN tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:41 -msgid "VPS settings" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:298 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:306 msgid "Version" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:668 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:515 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:676 msgid "Wan IP and gateway are identical" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:196 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:198 msgid "" "When enable check are done on external sites to get each WAN IP and the IP " "used to go outside." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:39 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:258 +msgid "When proxy shadowsocks is used, use it for UDP if proxy down" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:40 msgid "Wizard" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:75 #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:80 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:85 msgid "You" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:755 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:763 msgid "You can enable MPTCP over VPN if your provider filter Multipath TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:369 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:373 msgid "You can use DHCP if you have multiple real ethernet ports." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:518 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:522 msgid "" "You can use DHCP if you have multiple real ethernet ports. Select other if " "you want to use another protocol available in Network Interfaces page." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:162 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:163 msgid "You can use a public IPv6 prefix only if you set only one server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:440 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:444 msgid "You must disable DHCP on your modems and set IP in different networks." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:152 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:153 msgid "You should disable IPv6 here if server doesn't provide IPv6." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:765 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:773 msgid "You should disable SQM for LTE or any interfaces with variable speed." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:56 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:58 msgid "You shouldn't do that and you should redirect only needed ports" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:78 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:83 msgid "Your IP was not leased by this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:144 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:149 msgid "address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:671 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:675 msgid "auto" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:156 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:161 msgid "empty key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:439 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:630 -msgid "ip address:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:451 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:642 -msgid "latency:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:455 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:646 -msgid "mtu:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:543 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:699 -msgid "multipath:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:459 -msgid "operator:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:217 -msgid "other" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:463 -msgid "phone number:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:145 -msgid "range:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:467 -msgid "state:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:546 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:702 -msgid "traffic control:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:443 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:634 -msgid "wan address:" -msgstr "" - #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:447 #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:638 +msgid "ip address:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:459 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:650 +msgid "latency:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:463 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:654 +msgid "mtu:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:551 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:707 +msgid "multipath:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:467 +msgid "operator:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:218 +msgid "other" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:471 +msgid "phone number:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:150 +msgid "range:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:475 +msgid "state:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:554 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:710 +msgid "traffic control:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:451 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:642 +msgid "wan address:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:455 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:646 msgid "whois:" msgstr "" From d4fae6f54a595efd9d4ac71a4dc929b46d200e9c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 14:24:47 +0100 Subject: [PATCH 023/137] Alphabetical order for TCP Congestion control --- luci-app-mptcp/luasrc/model/cbi/mptcp.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index 5c32389fb..a69f69e3e 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -38,7 +38,7 @@ local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SY mtcpsyn.datatype = "uinteger" mtcpsyn.rmempty = false local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) -local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'") +local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs") for cong in string.gmatch(availablecong, "[^%s]+") do congestion:value(cong, translate(cong)) end From 1fe72710b373b41c83480c26d2450fc87334967a Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 14:25:43 +0100 Subject: [PATCH 024/137] Fix for VPS update and some rpcd changes --- .../root/usr/libexec/rpcd/openmptcprouter | 124 ++++++++++-------- 1 file changed, 67 insertions(+), 57 deletions(-) diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index 5df98b004..633b47394 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -116,14 +116,14 @@ function add_interface(add_interface_ifname) ucic:save("sqm") ucic:commit("sqm") - luci.sys.call("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif) - luci.sys.call("uci -q commit vnstat") + sys.exec("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif) + sys.exec("uci -q commit vnstat") -- Dirty way to add new interface to firewall... - luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i) - luci.sys.call("uci -q commit firewall") + sys.exec("uci -q add_list firewall.@zone[1].network=wan" .. i) + sys.exec("uci -q commit firewall") - luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") end function remove_interface(intf) @@ -140,11 +140,11 @@ function remove_interface(intf) ucic:save("qos") ucic:commit("qos") if defif ~= nil and defif ~= "" then - luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) + sys.exec("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) end - luci.sys.call("uci -q commit vnstat") - luci.sys.call("uci -q del_list firewall.@zone[1].network=" .. intf) - luci.sys.call("uci -q commit firewall") + sys.exec("uci -q commit vnstat") + sys.exec("uci -q del_list firewall.@zone[1].network=" .. intf) + sys.exec("uci -q commit firewall") end function set_interface(intf,proto,ipaddr,netmask,gateway,sqmenabled,downloadspeed,uploadspeed) @@ -321,24 +321,30 @@ function server_settings(server,server_ip,openmptcprouter_vps_key) ucic:set("openmptcprouter",server,"ip",server_ip) ucic:set("openmptcprouter",server,"port","65500") ucic:save("openmptcprouter") - ucic:set("shadowsocks-libev","sss0","server",server_ip) - ucic:set("glorytun","vpn","host",server_ip) - ucic:set("dsvpn","vpn","host",server_ip) - ucic:set("mlvpn","general","host",server_ip) - luci.sys.call("uci -q del openvpn.omr.remote") - luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) - ucic:set("qos","serverin","srchost",server_ip) - ucic:set("qos","serverout","dsthost",server_ip) - ucic:save("qos") - ucic:commit("qos") - ucic:save("mlvpn") - ucic:commit("mlvpn") - ucic:save("dsvpn") - ucic:commit("dsvpn") - ucic:save("glorytun") - ucic:commit("glorytun") - ucic:save("shadowsocks-libev") - ucic:commit("shadowsocks-libev") + if ucic:get("openmptcprouter",server,"master") == "1" then + ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("dsvpn","vpn","host",server_ip) + ucic:set("mlvpn","general","host",server_ip) + sys.exec("uci -q del openvpn.omr.remote") + sys.exec("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("qos","serverin","srchost",server_ip) + ucic:set("qos","serverout","dsthost",server_ip) + ucic:set("v2ray","omrout","s_vmess_address",server_ip) + ucic:set("v2ray","omrout","s_vless_address",server_ip) + ucic:save("qos") + ucic:commit("qos") + ucic:save("mlvpn") + ucic:commit("mlvpn") + ucic:save("dsvpn") + ucic:commit("dsvpn") + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:save("glorytun") + ucic:commit("glorytun") + ucic:save("shadowsocks-libev") + ucic:commit("shadowsocks-libev") + end end function set_shadowsocks(shadowsocks_key) @@ -404,18 +410,22 @@ end function restart_all() -- Restart all - luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") - os.execute("sleep 2") - luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") - --luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/omr-tracker restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + sys.exec("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/omr-tracker stop >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") end function redirectports(server,redirect_ports) @@ -425,26 +435,26 @@ end function tcpkeepalivetime(tcp_keepalive_time) -- Set tcp_keepalive_time - luci.sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time) - luci.sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time) + sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time) + sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time) end function tcpfintimeout(tcp_fin_timeout) -- Set tcp_fin_timeout - luci.sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout) - luci.sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout) + sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout) + sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout) end function tcpsynretries(tcp_syn_retries) -- Set tcp_syn_retries - luci.sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries) - luci.sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries) + sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries) + sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries) end function tcpfastopen(tcp_fastopen) -- Set tcp_fastopen - luci.sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen) - luci.sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen) + sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen) + sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen) end function disableipv6(disable_ipv6) @@ -452,7 +462,7 @@ function disableipv6(disable_ipv6) ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) ucic:save("openmptcprouter") ucic:commit("openmptcprouter") - luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") end function externalcheck(externalcheck) @@ -463,7 +473,7 @@ end function savevnstat(savevnstat) -- Enable/disable save vnstat - luci.sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat) + sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat) ucic:commit("vnstat") end @@ -522,17 +532,17 @@ end function update_vps() -- Update VPS - ucic:foreach("openmptcprouter", "server", function(s) - local serverip = ucic:get("openmptcprouter",s[".name"],"ip") - local adminport = ucic:get("openmptcprouter",s[".name"],"port") or "65500" - local token = ucic:get("openmptcprouter",s[".name"],"token") or "" + local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") + ucic:foreach("openmptcprouter", "server", function(section) + local servername = section[".name"] + local serverip = section["ip"] or "" + local adminport = section["port"] or "65500" + local token = section["token"] or "" if token ~= "" then - sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update") - luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/status")) - return + local updatevps = sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update") end end) + local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") end function get_ip(interface) From 117cb3bf974910623ad08a81ec82e5c8f1bc598f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:06:56 +0100 Subject: [PATCH 025/137] Fix omr-bypass with VLAN interfaces --- .../root/etc/init.d/omr-bypass | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 3708a0fce..8c1bf2aeb 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -90,7 +90,8 @@ _bypass_mac() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$mac" ] && return @@ -131,7 +132,8 @@ _bypass_lan_ip() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$ip" ] && return @@ -188,7 +190,8 @@ _bypass_dest_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$dport" ] && return @@ -243,7 +246,8 @@ _bypass_src_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$sport" ] && return @@ -296,7 +300,8 @@ _bypass_proto() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$proto" ] && return @@ -493,8 +498,9 @@ _intf_rule() { config_foreach _intf_rule_ss_rules ss_rules _intf_rule_v2ray_rules - uci -q set omr-bypass.$intf=interface - uci -q set omr-bypass.$intf.id=$count + intfuci=$(echo $intf | sed 's/\./_/') + uci -q set omr-bypass.$intfuci=interface + uci -q set omr-bypass.$intfuci.id=$count } _bypass_ip_set() { From dc70866c2906a54d7d741a7e3f4a7952584a844e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:07:26 +0100 Subject: [PATCH 026/137] Restart vnstart when interface added --- luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index f30be2a41..23d5fc5f7 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -179,6 +179,7 @@ function wizard_add() luci.sys.call("uci -q commit firewall") luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") gostatus = false end From 49db48e3dc8e25ab7c0ab209e0d2d08e3c7f37e8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:08:12 +0100 Subject: [PATCH 027/137] Fix iperf on VPS when using web interface --- luci-app-iperf/luasrc/controller/iperf.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-iperf/luasrc/controller/iperf.lua b/luci-app-iperf/luasrc/controller/iperf.lua index e6cb2ec3a..cbc3f1e12 100644 --- a/luci-app-iperf/luasrc/controller/iperf.lua +++ b/luci-app-iperf/luasrc/controller/iperf.lua @@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) end local port = t[ math.random( #t ) ] if password ~= "" then - iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options}) + iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options}) else iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options}) end From 0504af4db6810f57dffaa39a868336c6a8bbf00b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 17:33:17 +0100 Subject: [PATCH 028/137] Fix omr-rename --- luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 02d204117..9d741c683 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -34,7 +34,7 @@ _set_intf_name() { } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null fi fi elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then @@ -54,7 +54,7 @@ _set_intf_name() { } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null } } From 29f0b61c7b8d465a864533eaa53ca246f5603371 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 17:33:51 +0100 Subject: [PATCH 029/137] Change DNS over HTTPS config only when needed --- openmptcprouter/files/etc/uci-defaults/1940-omr-dns | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index 73508e900..93471310a 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -40,7 +40,7 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then EOF fi -if [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then +if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ] && [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then # uci -q batch <<-EOF >/dev/null # delete https-dns-proxy.@https-dns-proxy[-1] # delete https-dns-proxy.@https-dns-proxy[-1] From 2a437c9226494ce27e10cadc984040b04dd05831 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:06:56 +0100 Subject: [PATCH 030/137] Fix omr-bypass with VLAN interfaces --- .../root/etc/init.d/omr-bypass | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 3708a0fce..8c1bf2aeb 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -90,7 +90,8 @@ _bypass_mac() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$mac" ] && return @@ -131,7 +132,8 @@ _bypass_lan_ip() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$ip" ] && return @@ -188,7 +190,8 @@ _bypass_dest_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$dport" ] && return @@ -243,7 +246,8 @@ _bypass_src_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$sport" ] && return @@ -296,7 +300,8 @@ _bypass_proto() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" + intfuci=$(echo $intf | sed 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intfuci.id)" [ -z "$intf" ] && intf="all" [ -z "$proto" ] && return @@ -493,8 +498,9 @@ _intf_rule() { config_foreach _intf_rule_ss_rules ss_rules _intf_rule_v2ray_rules - uci -q set omr-bypass.$intf=interface - uci -q set omr-bypass.$intf.id=$count + intfuci=$(echo $intf | sed 's/\./_/') + uci -q set omr-bypass.$intfuci=interface + uci -q set omr-bypass.$intfuci.id=$count } _bypass_ip_set() { From b3b133ef5d47f19c0fb9f49c3763dba91b542056 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:07:26 +0100 Subject: [PATCH 031/137] Restart vnstart when interface added --- luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index f30be2a41..23d5fc5f7 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -179,6 +179,7 @@ function wizard_add() luci.sys.call("uci -q commit firewall") luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") gostatus = false end From 84eb364b62f705d76f11dd1abb88fdcf8a22acf7 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 6 Jan 2021 17:08:12 +0100 Subject: [PATCH 032/137] Fix iperf on VPS when using web interface --- luci-app-iperf/luasrc/controller/iperf.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-iperf/luasrc/controller/iperf.lua b/luci-app-iperf/luasrc/controller/iperf.lua index e6cb2ec3a..cbc3f1e12 100644 --- a/luci-app-iperf/luasrc/controller/iperf.lua +++ b/luci-app-iperf/luasrc/controller/iperf.lua @@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) end local port = t[ math.random( #t ) ] if password ~= "" then - iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options}) + iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options}) else iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options}) end From f046205cf4ed64478e32b8c8445ea60f340aacd0 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 17:33:17 +0100 Subject: [PATCH 033/137] Fix omr-rename --- luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 02d204117..9d741c683 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -34,7 +34,7 @@ _set_intf_name() { } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null fi fi elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then @@ -54,7 +54,7 @@ _set_intf_name() { } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null } } From 076f85649987438193108d88665caaf0c121a24c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 17:33:51 +0100 Subject: [PATCH 034/137] Change DNS over HTTPS config only when needed --- openmptcprouter/files/etc/uci-defaults/1940-omr-dns | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index 73508e900..93471310a 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -40,7 +40,7 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then EOF fi -if [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then +if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ] && [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then # uci -q batch <<-EOF >/dev/null # delete https-dns-proxy.@https-dns-proxy[-1] # delete https-dns-proxy.@https-dns-proxy[-1] From acf29d0bb75c4ebdce8264832b5cad4647a88075 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 20:00:01 +0100 Subject: [PATCH 035/137] Fix omr-rename disable --- .../root/etc/hotplug.d/net/99-omr-rename | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 9d741c683..f2c19dc55 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -23,7 +23,7 @@ _set_intf_name() { chk_modalias=$MODALIAS [ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" if [ -n "$chk_modalias" ]; then - logger -t "OMR-Rename" "dir: $i - modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" + logger -t "OMR-Rename" "modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" existif=0 @@ -45,6 +45,7 @@ _set_intf_name() { fi } [ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && { + logger -t "OMR-Rename" "device: $device - devpath: $DEVPATH - ifname: $ifname - INTERFACE: $INTERFACE" logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" ip link set ${INTERFACE} down 2>&1 >/dev/null existif=0 @@ -58,7 +59,7 @@ _set_intf_name() { } } -if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "1" ]; then config_load network config_foreach _set_intf_name interface config_foreach _set_intf_name interface From 43a0dd0ee48163017c15b6ec95c48cfe3a7973f3 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 7 Jan 2021 20:00:01 +0100 Subject: [PATCH 036/137] Fix omr-rename disable --- .../root/etc/hotplug.d/net/99-omr-rename | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 9d741c683..f2c19dc55 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -23,7 +23,7 @@ _set_intf_name() { chk_modalias=$MODALIAS [ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" if [ -n "$chk_modalias" ]; then - logger -t "OMR-Rename" "dir: $i - modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" + logger -t "OMR-Rename" "modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" existif=0 @@ -45,6 +45,7 @@ _set_intf_name() { fi } [ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && { + logger -t "OMR-Rename" "device: $device - devpath: $DEVPATH - ifname: $ifname - INTERFACE: $INTERFACE" logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" ip link set ${INTERFACE} down 2>&1 >/dev/null existif=0 @@ -58,7 +59,7 @@ _set_intf_name() { } } -if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "1" ]; then config_load network config_foreach _set_intf_name interface config_foreach _set_intf_name interface From bc7fb24b223ed792249d06ceebec7f70e5a6f9c0 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 8 Jan 2021 10:46:06 +0100 Subject: [PATCH 037/137] Get interface info on stop --- .../root/etc/init.d/openmptcprouter | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 2348fa8b0..adde64a8f 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -56,8 +56,13 @@ omr_intf_set() { elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" + else + uci -q delete network.$1.modalias + uci -q delete network.$1.product fi +} +omr_set_settings() { [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return uci -q set openmptcprouter.$1=interface @@ -76,7 +81,7 @@ start_service() { config_load openmptcprouter config_foreach omr_intf_check interface config_load network - config_foreach omr_intf_set interface + config_foreach omr_set_settings interface uci -q commit network uci -q commit openmptcprouter @@ -112,7 +117,13 @@ start_service() { EOF /etc/init.d/rpcd restart 2>&1 >/dev/null fi +} +stop_service() { + config_load network + config_foreach omr_intf_set interface + uci -q commit network + uci -q commit openmptcprouter } reload_service() { From 4535f2ad44430092d077e54aa6bf5e76fbe1d8bb Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 8 Jan 2021 10:46:21 +0100 Subject: [PATCH 038/137] Disable interface rename by default --- .../root/etc/uci-defaults/openmptcprouter | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter index 24cbccb20..b267d6f21 100755 --- a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter @@ -114,6 +114,13 @@ if [ "$(uci -q get openmptcprouter.settings.menu)" = "" ]; then EOF fi +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set openmptcprouter.settings.disableintfrename='1' + commit openmptcprouter + EOF +fi + sed -i 's/net.ipv4.tcp_retries2=3$/net.ipv4.tcp_retries2=15/' /etc/sysctl.d/zzz_openmptcprouter.conf exit 0 From 0a0886ccc0ecfd60e48e7e14f9ba8b286295d4fc Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 8 Jan 2021 10:46:06 +0100 Subject: [PATCH 039/137] Get interface info on stop --- .../root/etc/init.d/openmptcprouter | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 2348fa8b0..adde64a8f 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -56,8 +56,13 @@ omr_intf_set() { elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" + else + uci -q delete network.$1.modalias + uci -q delete network.$1.product fi +} +omr_set_settings() { [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return uci -q set openmptcprouter.$1=interface @@ -76,7 +81,7 @@ start_service() { config_load openmptcprouter config_foreach omr_intf_check interface config_load network - config_foreach omr_intf_set interface + config_foreach omr_set_settings interface uci -q commit network uci -q commit openmptcprouter @@ -112,7 +117,13 @@ start_service() { EOF /etc/init.d/rpcd restart 2>&1 >/dev/null fi +} +stop_service() { + config_load network + config_foreach omr_intf_set interface + uci -q commit network + uci -q commit openmptcprouter } reload_service() { From 2b0053996f926bded797a2bda01f79d3aa7277e6 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 8 Jan 2021 10:46:21 +0100 Subject: [PATCH 040/137] Disable interface rename by default --- .../root/etc/uci-defaults/openmptcprouter | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter index 24cbccb20..b267d6f21 100755 --- a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter @@ -114,6 +114,13 @@ if [ "$(uci -q get openmptcprouter.settings.menu)" = "" ]; then EOF fi +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set openmptcprouter.settings.disableintfrename='1' + commit openmptcprouter + EOF +fi + sed -i 's/net.ipv4.tcp_retries2=3$/net.ipv4.tcp_retries2=15/' /etc/sysctl.d/zzz_openmptcprouter.conf exit 0 From 57debb668140f62a4982afe469b9d0d3f33c2b00 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 9 Jan 2021 08:42:19 +0100 Subject: [PATCH 041/137] Rename omr-update script to be executed after all others --- .../files/etc/uci-defaults/{000-omr-update => zzzzz-omr-update} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename openmptcprouter/files/etc/uci-defaults/{000-omr-update => zzzzz-omr-update} (100%) diff --git a/openmptcprouter/files/etc/uci-defaults/000-omr-update b/openmptcprouter/files/etc/uci-defaults/zzzzz-omr-update similarity index 100% rename from openmptcprouter/files/etc/uci-defaults/000-omr-update rename to openmptcprouter/files/etc/uci-defaults/zzzzz-omr-update From 0be1a3b11979c29c17e2e5bd90e136558a52fea6 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:11:03 +0100 Subject: [PATCH 042/137] Changes for WAN IPv6 support in status page --- .../luasrc/view/openmptcprouter/wanstatus.htm | 70 +++++- luci-app-openmptcprouter/root/bin/omr-ip-intf | 12 +- .../root/bin/omr-ip6-intf | 37 +++ .../root/bin/omr-tracebox-mptcp | 15 +- .../root/usr/libexec/rpcd/openmptcprouter | 216 ++++++++++++++++-- 5 files changed, 309 insertions(+), 41 deletions(-) create mode 100755 luci-app-openmptcprouter/root/bin/omr-ip6-intf diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index b35f3344f..16caf5a59 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -231,14 +231,25 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr6 != "") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_6addr); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr); statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + } else if (mArray.openmptcprouter.wan_addr6 != "") + { + var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr6); + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr); @@ -248,11 +259,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm var title = '<%:No output%>'; statusMessage += '<%:No output%>' + '
'; } - if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:No server IP address, No WAN IP address%>' + '
'; } - if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr !== "" && (mArray.openmptcprouter.wan_addr !== "" || mArray.openmptcprouter.wan_addr6 !== "") && mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += '<%:Can\'t access and use server part%>' + '
'; } @@ -274,7 +285,10 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '
'; - } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 !== "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
'; + } else if (mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
'; } @@ -392,18 +406,21 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage = ""; } // Populate info - var wanip = mArray.wans[i].wanip; + var wanip = mArray.wans[i].wanip; + var wanip6 = mArray.wans[i].wanip6; if (anonymize == "true" && testPrivateIP(wanip) == false) { wanip=replaceLastNChars(wanip,"x",6); } - var ipaddr = mArray.wans[i].ipaddr; + var ipaddr = mArray.wans[i].ipaddr; + var ip6addr = mArray.wans[i].ip6addr; if (anonymize == "true" && testPrivateIP(ipaddr) == false) { ipaddr=replaceLastNChars(ipaddr,"x",6); } - var whois = mArray.wans[i].whois; - var signal = mArray.wans[i].signal; + var whois = mArray.wans[i].whois; + var whois6 = mArray.wans[i].whois6; + var signal = mArray.wans[i].signal; var multipath = mArray.wans[i].multipath; if(multipath == 'master') { @@ -420,7 +437,13 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { gateway=replaceLastNChars(gateway,"x",6); } + var gateway6 = mArray.wans[i].gateway6; + if (anonymize == "true" && testPrivateIP(gateway6) == false) + { + gateway6=replaceLastNChars(gateway6,"x",10); + } var gw_ping = mArray.wans[i].gw_ping; + var gw_ping6 = mArray.wans[i].gw_ping6; var server_ping = mArray.wans[i].server_ping; var ipv6_discover = mArray.wans[i].ipv6_discover; var multipath_available = mArray.wans[i].multipath_available; @@ -438,6 +461,9 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if (mArray.wans[i].gateway !== "") { var title = mArray.wans[i].label + " (" + gateway + ")"; + } else if (mArray.wans[i].gateway6 !== "") + { + var title = mArray.wans[i].label + " (" + gateway6 + ")"; } else { var title = mArray.wans[i].label; } @@ -446,14 +472,26 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
','<%:ip address:%>', ipaddr); } + if(ip6addr !== '') + { + content += String.format('%s %s
','<%:ipv6 address:%>', ip6addr); + } if(wanip !== '') { content += String.format('%s %s
','<%:wan address:%>', wanip); } + if(wanip6 !== '') + { + content += String.format('%s %s
','<%:wan ipv6 address:%>', wanip6); + } if(whois !== '') { content += String.format('%s %s
','<%:whois:%>', whois); } + if(whois6 !== '') + { + content += String.format('%s %s
','<%:whois:%>', whois6); + } if(latency !== '') { content += String.format('%s %s ms
','<%:latency:%>', latency); @@ -492,14 +530,17 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { title += String.format(' %s',networktype); } - if(ipaddr == '') + if(ipaddr == '' && ip6addr == '') { statusMessage += '<%:No IP defined%>' + '
'; } - if(gateway == '') + if(gateway == '' && gateway6 == '') { statusMessage += '<%:No gateway defined%>' + '
'; } else if(gw_ping == 'DOWN') + { + statusMessage += '<%:Gateway DOWN%>' + '
'; + } else if(gw_ping6 == 'DOWN') { statusMessage += '<%:Gateway DOWN%>' + '
'; } else if(multipath_available == 'ERROR') @@ -515,6 +556,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage += '<%:Wan IP and gateway are identical%>' + '
'; statusMessageClass = "error"; } + if (stat == 'Offline' && ip6addr != '' && ipaddr == mArray.wans[i].gateway6) + { + statusMessage += '<%:Wan IP and gateway are identical%>' + '
'; + statusMessageClass = "error"; + } if(multipath == 'master') { if (master > 1) @@ -557,6 +603,12 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm temp += ''; } + if (mArray.wans.length == 0) + { + temp += '
  • '; + temp += '<%:No WAN with multipath enabled:%>'; + temp += '
  • '; + } for( var i = 0; i < mArray.tunnels.length; i++ ) { // Get link color diff --git a/luci-app-openmptcprouter/root/bin/omr-ip-intf b/luci-app-openmptcprouter/root/bin/omr-ip-intf index 4c87b4256..16434c5a4 100755 --- a/luci-app-openmptcprouter/root/bin/omr-ip-intf +++ b/luci-app-openmptcprouter/root/bin/omr-ip-intf @@ -28,8 +28,10 @@ get_ip_from_website() { } [ -z "$intf" ] && return -ip="" -config_load openmptcprouter -config_foreach get_ip_from_server server -[ -z "$ip" ] && get_ip_from_website -echo $ip \ No newline at end of file +if [ -n "$(ip -4 a show dev $intf)" ]; then + ip="" + config_load openmptcprouter + config_foreach get_ip_from_server server + [ -z "$ip" ] && get_ip_from_website + echo $ip +fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/bin/omr-ip6-intf b/luci-app-openmptcprouter/root/bin/omr-ip6-intf new file mode 100755 index 000000000..c096503ea --- /dev/null +++ b/luci-app-openmptcprouter/root/bin/omr-ip6-intf @@ -0,0 +1,37 @@ +#!/bin/sh +. /lib/functions.sh + +intf=$1 + +get_ip_from_server() { + serverip=$(uci -q get openmptcprouter.$1.ip) + serverport=$(uci -q get openmptcprouter.$1.port) + getip="$(curl -s -k -6 -m 2 --interface $intf https://$serverip:$serverport/clienthost)" + [ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host') + if [ -n "$(echo "$getip" | grep :)" ]; then + ip=$getip + break + fi +} + +get_ip_from_website() { + check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" + [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" + checkip=$(echo $check_ipv6_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short AAAA | tr -d "\n") + ipset add ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1 + getip="$(curl -s -6 -m 2 --interface $intf $check_ipv6_website)" + ipset del ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1 + if [ -n "$(echo "$getip" | grep :)" ]; then + ip=$getip + break + fi +} + +[ -z "$intf" ] && return +if [ -n "$(ip -6 a show dev $intf)" ]; then + ip="" + config_load openmptcprouter + config_foreach get_ip_from_server server + [ -z "$ip" ] && get_ip_from_website + echo $ip +fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp b/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp index 0c28829e1..932364d19 100755 --- a/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp +++ b/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp @@ -1,7 +1,16 @@ #!/bin/sh INTERFACE=$2 -if [ -z "$INTERFACE" ]; then - tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $1 +SERVER=$1 +if [ -n "$(resolveip -4 $SERVER)" ]; then + if [ -z "$INTERFACE" ]; then + tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER + else + tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER + fi else - tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $1 + if [ -z "$INTERFACE" ]; then + tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER + else + tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER + fi fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index 633b47394..bb9700d29 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -545,7 +545,14 @@ function update_vps() local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") end +function get_rootfs() + local rootfs = {} + rootfs['format'] = ut.trim(sys.exec("mount | awk 'NR==1{print $5}'")) + return rootfs +end + function get_ip(interface) + local ut = require "luci.util" local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) local ip = "" if dump and dump['ipv4-address'] then @@ -563,6 +570,42 @@ function get_ip(interface) end end end + if ip == "" then + local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + if dump and dump['l3_device'] then + local ifname = dump['l3_device'] + ip = ut.trim(sys.exec("ip -4 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname)) + end + end + return ip +end + +function get_ip6(interface) + local ut = require "luci.util" + local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + local ip = "" + if dump and dump['ipv6-address'] then + local _, ipv6address + for _, ipv6address in ipairs(dump['ipv6-address']) do + ip = dump['ipv6-address'][_].address + end + end + if ip == "" then + local dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {}) + if dump and dump['ipv6-address'] then + local _, ipv6address + for _, ipv6address in ipairs(dump['ipv6-address']) do + ip = dump['ipv6-address'][_].address + end + end + end + if ip == "" then + local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + if dump and dump['l3_device'] then + local ifname = dump['l3_device'] + ip = ut.trim(sys.exec("ip -6 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname)) + end + end return ip end @@ -625,6 +668,56 @@ function get_gateway(interface) return gateway end +function get_gateway6(interface) + local gateway = "" + local dump = nil + + dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + + if dump and dump.route then + local _, route + for _, route in ipairs(dump.route) do + if dump.route[_].target == "::" then + gateway = dump.route[_].nexthop + end + end + end + if gateway == "" then + if dump and dump.inactive and dump.inactive.route then + local _, route + for _, route in ipairs(dump.inactive.route) do + if dump.inactive.route[_].target == "::" then + gateway = dump.inactive.route[_].nexthop + end + end + end + end + + if gateway == "" then + dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {}) + + if dump and dump.route then + local _, route + for _, route in ipairs(dump.route) do + if dump.route[_].target == "::" then + gateway = dump.route[_].nexthop + end + end + end + if gateway == "" then + if dump and dump.inactive and dump.inactive.route then + local _, route + for _, route in ipairs(dump.inactive.route) do + if dump.inactive.route[_].target == "::" then + gateway = dump.inactive.route[_].nexthop + end + end + end + end + end + return gateway +end + -- This function come from OverTheBox by OVH with many changes -- Copyright 2015 OVH -- Simon Lelievre (simon.lelievre@corp.ovh.com) @@ -689,16 +782,25 @@ function interfaces_status() if mArray.openmptcprouter["dns"] == true then -- wanaddr --mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or "" + if mArray.openmptcprouter["service_addr"] ~= "" then + mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) + mArray.openmptcprouter["service_addr_ip6"] = ut.trim(sys.exec("resolveip -6 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) + end if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website)) - if mArray.openmptcprouter["wan_addr"] == "" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) + if mArray.openmptcprouter["service_addr_ip"] ~= "" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website)) + if mArray.openmptcprouter["wan_addr"] == "" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -4 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) + end end - if mArray.openmptcprouter["ipv6"] == "enabled" then + if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" if mArray.openmptcprouter["wan_addr6"] == "" then mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website)) + if mArray.openmptcprouter["wan_addr"] == "" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) + end end end mArray.openmptcprouter["external_check"] = true @@ -720,9 +822,6 @@ function interfaces_status() end end end - if mArray.openmptcprouter["service_addr"] ~= "" then - mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) - end end if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then @@ -751,7 +850,13 @@ function interfaces_status() local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" local token = uci:get("openmptcprouter",s[".name"],"token") or "" if token ~= "" then - local vpsinfo_json = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') + local vpsinfo_json = "" + if mArray.openmptcprouter["service_addr_ip"] ~= "" then + vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') + end + if mArray.openmptcprouter["service_addr_ip6"] ~= "" then + vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status') + end if vpsinfo_json ~= "" and vpsinfo_json ~= nil then local status, vpsinfo = pcall(function() return json.decode(vpsinfo_json) @@ -821,7 +926,11 @@ function interfaces_status() mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" end if mArray.openmptcprouter["vps_admin"] == false then - local vpstest = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') + if mArray.openmptcprouter["service_addr_ip"] ~= "" then + local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') + elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then + local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/') + end if vpstest == "" then mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" end @@ -859,7 +968,7 @@ function interfaces_status() else mArray.openmptcprouter["tun_state"] = "DOWN" end - if mArray.openmptcprouter["ipv6"] == "enabled" then + if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway") local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'")) if tunnel_ping6_test == "" then @@ -996,7 +1105,9 @@ function interfaces_status() local interface = section[".name"] local net = ntm:get_network(interface) local ipaddr = net:ipaddr() or "" + local ip6addr = net:ip6addr() or "" local gateway = section["gateway"] or "" + local gateway6 = section["ip6gw"] or "" local multipath = section["multipath"] local enabled = section["auto"] @@ -1034,7 +1145,13 @@ function interfaces_status() if ipaddr == "" and ifname ~= nil and ifname ~= "" then ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) end - if ipaddr == "" then + if ip6addr == "" and ifname ~= nil and ifname ~= "" then + ip6addr = ut.trim(sys.exec("ip -6 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) + end + if ip6addr == "" and ifname ~= nil and ifname ~= "" then + ip6addr = ut.trim(sys.exec("ip -6 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) + end + if ipaddr == "" and ip6addr == "" then connectivity = "ERROR" end @@ -1071,8 +1188,10 @@ function interfaces_status() -- Detect WAN gateway status local gw_ping = "UP" - if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then + local gw_ping6 = "UP" + if ifname ~= nil and not (ifname:match("^tun.*") or interface:match("^ovpn.*")) then gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) end if gateway == "" then @@ -1086,18 +1205,40 @@ function interfaces_status() end end end + if gateway6 == "" then + gateway6 = get_gateway6(interface) + end + if gateway6 == "" and ifname ~= nil and ifname ~= "" then + if fs.access("/sys/class/net/" .. ifname) then + gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) + if gateway6 == "" then + gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep default | awk '{print $3}' | tr -d '\n'")) + end + end + end local signal = "" local operator = "" local phonenumber = "" local donglestate = "" local networktype = "" - if gateway ~= "" then + if gateway ~= "" or gateway6 ~= "" then if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then - local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) - if gw_ping_test ~= "" then - gw_ping = "DOWN" - if connectivity == "OK" then - connectivity = "WARNING" + if gateway ~= "" then + local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) + if gw_ping_test ~= "" then + gw_ping = "DOWN" + if connectivity == "OK" then + connectivity = "WARNING" + end + end + end + if gateway6 ~= "" then + local gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'")) + if gw_ping6_test ~= "" then + gw_ping6 = "DOWN" + if connectivity == "OK" then + connectivity = "WARNING" + end end end end @@ -1111,7 +1252,7 @@ function interfaces_status() networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'")) end end - elseif gateway == "" then + elseif gateway == "" and gateway6 == "" then gw_ping = "DOWN" connectivity = "ERROR" end @@ -1147,7 +1288,7 @@ function interfaces_status() local latency = "" local server_ping = "" --if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" then - if ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" and connectivity ~= "ERROR" then + if ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and (ipaddr ~= "" or ip6addr ~= "") and connectivity ~= "ERROR" then local serverip = mArray.openmptcprouter["service_addr"] if serverip == "127.0.0.1" then serverip = mArray.openmptcprouter["wan_addr"] @@ -1170,7 +1311,7 @@ function interfaces_status() local multipath_available = "" local multipath_available_state = "" - if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and gateway ~= "" and gw_ping == "UP" then + if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and (gw_ping == "UP" or gw_ping6 == "UP") then -- Test if multipath can work on the connection local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or "" if multipath_available_state == "" then @@ -1207,7 +1348,9 @@ function interfaces_status() -- end local mtu = "" local whois = "" + local whois6 = "" local publicIP = "" + local publicIP6 = "" if connectivity ~= "ERROR" then if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then @@ -1215,24 +1358,39 @@ function interfaces_status() if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5)))) end + publicIP6 = uci:get("openmptcprouter",interface:sub(5),"publicip6") or "" + if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then + publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. get_device(interface:sub(5)))) + end else publicIP = uci:get("openmptcprouter",interface,"publicip") or "" if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname)) end + publicIP6 = uci:get("openmptcprouter",interface,"publicip6") or "" + if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then + publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. ifname)) + end end if publicIP ~= "" then whois = uci:get("openmptcprouter",interface,"asn") or "" if whois == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then - --whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) - whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) + whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) + --whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) + end + end + if publicIP6 ~= "" then + whois6 = uci:get("openmptcprouter",interface,"asn") or "" + if whois6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then + whois6 = ut.trim(sys.exec("whois " .. publicIP6 .. " | grep -i 'netname' | awk '{print $2}'")) + --whois6 = ut.trim(sys.exec("wget -6 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP6 .. "' | jsonfilter -q -e '@.as_description'")) end end if ifname ~= "" and ifname ~= nil then if fs.access("/sys/class/net/" .. ifname) then mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'")) if mtu == "" and interface ~= nil then - mtu = uci:get("openmptcprouter",interface,"mtu") or "" + mtu = uci:get("openmptcprouter",interface,"mtu") or "" end end end @@ -1249,17 +1407,22 @@ function interfaces_status() --link = net:adminlink() or "", ifname = ifname, ipaddr = ipaddr, + ip6addr = ip6addr, gateway = gateway, + gateway6 = gateway6, multipath = section["multipath"], status = connectivity, wanip = publicIP, + wanip6 = publicIP6, latency = latency, mtu = mtu, whois = whois or "unknown", + whois6 = whois6 or "unknown", qos = section["trafficcontrol"], download = section["download"], upload = section["upload"], gw_ping = gw_ping, + gw_ping6 = gw_ping6, server_ping = server_ping, ipv6_discover = ipv6_discover, multipath_available = multipath_available, @@ -1350,6 +1513,11 @@ function _ipv6_discover(interface) end local methods = { + getrootfs = { + call = function() + return get_rootfs() + end + }, status = { call = function() return interfaces_status() From b25b156436196e81c98c2721418e7ebff8ca2af8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:12:03 +0100 Subject: [PATCH 043/137] Make omr-tracebox and omr-test-speed compatible with WAN IPv6 --- openmptcprouter/files/bin/omr-test-speedv6 | 29 ++++++++++++++++++---- openmptcprouter/files/bin/omr-tracebox | 3 +++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/openmptcprouter/files/bin/omr-test-speedv6 b/openmptcprouter/files/bin/omr-test-speedv6 index ae7634d7c..27fd43e68 100755 --- a/openmptcprouter/files/bin/omr-test-speedv6 +++ b/openmptcprouter/files/bin/omr-test-speedv6 @@ -1,15 +1,34 @@ #!/bin/sh # vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : - INTERFACE="$1" -HOST="proof.ovh.net" +echo "Select best test server..." +HOSTLST="http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin http://ipv4.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin" +bestping="999" +for pinghost in $HOSTLST; do + domain=$(echo $pinghost | awk -F/ '{print $3}') + if [ -z "$INTERFACE" ]; then + ping=$(ping -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1) + else + ping=$(ping -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1) + fi + echo "host: $domain - ping: $ping" + if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then + bestping=$ping + HOST=$pinghost + fi +done + +[ -z "$HOST" ] && HOST="http://proof.ovh.net/files/10Gio.dat" + +echo "Best server is $HOST, running test:" trap : HUP INT TERM if [ -z "$INTERFACE" ]; then - curl -6 http://$HOST/files/10Gio.dat >/dev/null || echo + curl -6 $HOST >/dev/null || echo else - hostip=$(dig +short AAAA $HOST | tr -d "\n") + domain=$(echo $HOST | awk -F/ '{print $3}') + hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") ipset add ss_rules6_dst_bypass_all $hostip - curl -6 --interface $INTERFACE http://$HOST/files/10Gio.dat >/dev/null || echo + curl -6 --interface $INTERFACE $HOST >/dev/null || echo ipset del ss_rules6_dst_bypass_all $hostip fi diff --git a/openmptcprouter/files/bin/omr-tracebox b/openmptcprouter/files/bin/omr-tracebox index 2342d3b8c..2352b53ea 100755 --- a/openmptcprouter/files/bin/omr-tracebox +++ b/openmptcprouter/files/bin/omr-tracebox @@ -2,9 +2,12 @@ INTERFACE="$1" multipathip=$(dig +short A multipath-tcp.org | tr -d "\n") ipset add ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 +multipathip6=$(dig +short AAAA multipath-tcp.org | tr -d "\n") +ipset add ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1 if [ -z "$INTERFACE" ]; then tracebox -v -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org else tracebox -v -i $INTERFACE -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org fi ipset del ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 +ipset del ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1 From 36351e8548c3cf4878ecab2a97c4ded3d3f0b041 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:14:09 +0100 Subject: [PATCH 044/137] Make omr-tracker compatible with WAN IPv6 --- .../share/omr/post-tracking.d/post-tracking | 383 +++++++++++++++++- omr-tracker/files/bin/omr-tracker | 115 ++++++ omr-tracker/files/etc/init.d/omr-tracker | 9 +- .../files/etc/init.d/openmptcprouter-vps | 48 ++- .../files/etc/uci-defaults/1980-omr-firewall | 13 + 5 files changed, 546 insertions(+), 22 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 0acb30236..ca23f14cd 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -1,5 +1,5 @@ - SETROUTE=false + set_route() { local multipath_config_route interface_gw interface_if INTERFACE=$1 @@ -33,6 +33,39 @@ set_route() { fi } +set_route6() { + local multipath_config_route interface_gw interface_if + INTERFACE=$1 + PREVINTERFACE=$2 + SETDEFAULT=$3 + [ -z "$SETDEFAULT" ] && SETDEFAULT="yes" + multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")" + interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) + interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") + if [ "$multipath_config_route" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + interface_gw="$(uci -q get network.$INTERFACE.gateway)" + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if" + [ "$SETDEFAULT" = "yes" ] && ip -6 route replace default scope global nexthop via $interface_gw dev $interface_if + ip -6 route replace default via $interface_gw dev $interface_if table 991337 && SETROUTE=true + fi + fi +} + set_server_default_route() { local server=$1 local serverip multipath_config_route @@ -52,6 +85,25 @@ set_server_default_route() { fi } +set_server_default_route6() { + local server=$1 + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6" + if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then + ip -6 r delete $serverip >/dev/null 2>&1 + fi + ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1 + fi +} + delete_server_default_route() { local server=$1 local serverip @@ -65,6 +117,19 @@ delete_server_default_route() { fi } +delete_server_default_route6() { + local server=$1 + local serverip + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" + ip -6 route del $serverip metric 1 >/dev/null 2>&1 + fi +} + set_routes_intf() { local multipath_config_route local INTERFACE=$1 @@ -89,7 +154,7 @@ set_routes_intf() { interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") fi #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then if [ "$multipath_config_route" = "master" ]; then weight=10 else @@ -114,6 +179,55 @@ set_routes_intf() { fi } +set_routes_intf6() { + local multipath_config_route + local INTERFACE=$1 + multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')" + interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) + interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + #multipath_current_config=$(multipath $interface_if | grep 'deactivated') + interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") + if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_if" != "" ] && [ "$interface_up" = "true" ]; then + interface_gw="$(uci -q get network.$INTERFACE.gateway)" + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip -6 route show $serverip | grep $interface_if)" = "" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then + if [ "$multipath_config_route" = "master" ]; then + weight=10 + else + weight=1 + fi + if [ "$multipath_config_route" = "backup" ]; then + nbintfb=$((nbintfb+1)) + if [ -z "$routesintfbackup6" ]; then + routesintfbackup6="nexthop via $interface_gw dev $interface_if weight $weight" + else + routesintfbackup6="$routesintfbackup6 nexthop via $interface_gw dev $interface_if weight $weight" + fi + else + nbintf=$((nbintf+1)) + if [ -z "$routesintf6" ]; then + routesintf6="nexthop via $interface_gw dev $interface_if weight $weight" + else + routesintf6="$routesintf6 nexthop via $interface_gw dev $interface_if weight $weight" + fi + fi + fi + fi +} + set_route_balancing() { local multipath_config_route interface_gw interface_if INTERFACE=$1 @@ -157,6 +271,49 @@ set_route_balancing() { fi } +set_route_balancing6() { + local multipath_config_route interface_gw interface_if + INTERFACE=$1 + multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')" + interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) + interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") + if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + interface_gw="$(uci -q get network.$INTERFACE.gateway)" + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") + fi + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then + if [ "$(uci -q get network.$INTERFACE.weight)" != "" ]; then + weight=$(uci -q get network.$INTERFACE.weight) + elif [ "$(uci -q get openmtpcprouter.$INTERFACE.weight)" != "" ]; then + weight=$(uci -q get openmtpcprouter.$INTERFACE.weight) + elif [ "$multipath_config_route" = "master" ]; then + weight=2 + else + weight=1 + fi + if [ "$multipath_config_route" = "backup" ]; then + nbintfb=$((nbintfb+1)) + routesbalancingbackup6="$routesbalancingbackup6 nexthop via $interface_gw dev $interface_if weight $weight" + else + nbintf=$((nbintf+1)) + routesbalancing6="$routesbalancing6 nexthop via $interface_gw dev $interface_if weight $weight" + fi + fi + fi +} + set_server_all_routes() { local server=$1 local serverip multipath_config_route @@ -195,6 +352,44 @@ set_server_all_routes() { fi } +set_server_all_routes6() { + local server=$1 + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then + routesintf="" + routesintfbackup="" + nbintf=0 + nbintfb=0 + config_load network + config_foreach set_routes_intf interface + uintf="$(echo $routesintf | awk '{print $5}')" + uintfb="$(echo $routesintfbackup | awk '{print $5}')" + if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then + while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do + ip -6 r del $serverip + done + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" + ip -6 route replace $serverip scope global $routesintf + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" + fi + if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" + ip -6 route replace $serverip scope global metric 999 $routesintfbackup + fi + fi +} + set_server_route() { @@ -225,6 +420,34 @@ set_server_route() { fi } +set_server_route6() { + local server=$1 + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + local metric=$2 + [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + #multipath_current_config=$(multipath $interface_if | grep "deactivated") + interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") + #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" + ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric + fi + if [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric + fi +} + del_server_route() { local server=$1 local serverip @@ -242,6 +465,23 @@ del_server_route() { fi } +del_server_route6() { + local server=$1 + local serverip + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" + local metric + metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 + ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then + ip -6 route del default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + else + ip -6 route del default dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + fi +} + disable_pihole() { local server=$1 if [ -n "$(uci -q get dhcp.@dnsmasq[0].server | grep '#53' | grep '10.2')" ]; then @@ -288,6 +528,7 @@ if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then fi default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3}') +default_gw6=$(ip -6 route show default | grep -v "metric" | awk '/default/ {print $3}') #current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway") interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') @@ -320,6 +561,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1 fi + if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1 + fi if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]; then VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)" VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n") @@ -331,18 +575,22 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then fi config_load openmptcprouter config_foreach del_server_route server + config_foreach del_server_route6 server #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then config_foreach set_server_all_routes server + config_foreach set_server_all_routes6 server fi fi - if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then + if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ] || [ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE + config_foreach set_route6 interface $OMR_TRACKER_INTERFACE elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE "no" + config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no" fi mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)" [ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)" @@ -370,6 +618,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE + config_foreach set_route6 interface $OMR_TRACKER_INTERFACE fi if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi2.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then _log "Tunnel down use ShadowSocks for UDP" @@ -400,6 +649,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then #if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then config_foreach set_server_default_route server + config_foreach set_server_default_route6 server fi fi dns_flush @@ -525,6 +775,20 @@ if [ "$multipath_config" = "master" ]; then config_foreach set_server_default_route server fi fi + if ([ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$default_gw6" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then + omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") + if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then + _log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" + ip -6 route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE + fi + config_load openmptcprouter + #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then + # config_foreach set_server_all_routes server + if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then + config_foreach set_server_default_route server + config_foreach set_server_default_route6 server + fi + fi #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") @@ -534,10 +798,17 @@ if [ "$multipath_config" = "master" ]; then nbintf=0 config_load network config_foreach set_route_balancing interface + config_foreach set_route_balancing6 interface [ -n "$routesbalancing" ] && { ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { _log "Set ip route replace default scope global $routesbalancing" - ip route replace default scope global $routesbalancing + ip route replace default scope global metric 0 $routesbalancing + } + } + [ -n "$routesbalancing6" ] && { + ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6" + ip -6 route replace default scope global metric 1 $routesbalancing6 } } [ -n "$routesbalancingbackup" ] && { @@ -546,11 +817,20 @@ if [ "$multipath_config" = "master" ]; then ip route replace default scope global metric 999 $routesbalancingbackup } } + [ -n "$routesbalancingbackup6" ] && { + ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6" + ip -6 route replace default scope global metric 999 $routesbalancingbackup6 + } + } fi fi if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE " ]; then ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337 fi + if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE " ]; then + ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE table 991337 + fi if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 fi @@ -566,6 +846,15 @@ if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then config_foreach set_server_route server fi fi +if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then + config_load openmptcprouter + #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then + if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then + config_foreach set_server_all_routes6 server + elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then + config_foreach set_server_route6 server + fi +fi if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then download="$(uci -q get network.$OMR_TRACKER_INTERFACE.downloadspeed)" @@ -577,18 +866,33 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then fi gtudpst="up" [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" - if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then + if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] && [ "$OMR_TRACKER_DEVICE_IP" != "" ]; then if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 auto tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 fixed tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 fi else if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate auto tx 12500000 rx 12500000 > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate fixed tx 12500000 rx 12500000 > /dev/null 2>&1 + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + fi + fi + fi + if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ] && [ "$OMR_TRACKER_DEVICE_IP6" != "" ]; then + if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + fi + else + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 fi fi fi @@ -612,6 +916,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..." if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" + local ip6addr="$(omr-ip6-intf $OMR_TRACKER_DEVICE)" else uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up" @@ -641,10 +946,10 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( # fi #fi if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then - local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" - [ -z "$asn" ] && { - asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" - } + #local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" + #[ -z "$asn" ] && { + local asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" + #} fi [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && { uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface @@ -694,6 +999,58 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") } + [ -n "$ip6addr" ] && { + if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + local asn="$(whois $ip6addr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" + fi + [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface + } + if [ "$(uci -q get openmptcprouter.latest_versions.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.latest_versions.lc))) -gt 3600 ]; then + local latestversions="$(curl -6 -s -m 3 https://www.openmptcprouter.com/version/version.json)" + [ -n "$latestversions" ] && { + uci -q set openmptcprouter.latest_versions=latest_versions + uci -q set openmptcprouter.latest_versions.omr=$(echo $latestversions | jsonfilter -q -e '@.omr') + uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps') + uci -q set openmptcprouter.latest_versions.lc=$(date +"%s") + } + fi + local serverip=$(uci -q get shadowsocks-libev.sss0.server) + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { + omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" + [ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + } + [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip6="$ip6addr" + [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" + [ -n "$asn" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn" + } + if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then + if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then + mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + else + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } || { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } + fi + fi + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") + } if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" = "0" ]; then if ping -c 1 $(uci -q get shadowsocks-libev.sss0.server) 2>&1 >/dev/null; then uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 2e7b3d96a..637c27019 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -5,6 +5,7 @@ [ -n "$1" ] || exit . /lib/functions.sh +. /usr/lib/unbound/iptools.sh # retrieve args OMR_TRACKER_INTERFACE="$1" @@ -13,16 +14,20 @@ shift # export vars export OMR_TRACKER_INTERFACE export OMR_TRACKER_HOST +export OMR_TRACKER_HOST6 export OMR_TRACKER_TIMEOUT export OMR_TRACKER_STATUS export OMR_TRACKER_STATUS_MSG export OMR_TRACKER_PREV_STATUS export OMR_TRACKER_DEVICE export OMR_TRACKER_DEVICE_IP +export OMR_TRACKER_DEVICE_IP6 export OMR_TRACKER_DEVICE_GATEWAY +export OMR_TRACKER_DEVICE_GATEWAY6 dscp=56 # set DSCP CS7 (56) in outgoing packets initial_hosts="$OMR_TRACKER_HOSTS" +initial_hosts6="$OMR_TRACKER_HOSTS6" initial_timeout="$OMR_TRACKER_TIMEOUT" wait_test=${OMR_TRACKER_WAIT_TEST:-0} @@ -59,10 +64,15 @@ _update_rto() { _restart() { OMR_TRACKER_HOST="${OMR_TRACKER_HOSTS%% *}" + OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}" [ "$OMR_TRACKER_HOST" = "$OMR_TRACKER_HOSTS" ] || { OMR_TRACKER_HOSTS="${OMR_TRACKER_HOSTS#* } $OMR_TRACKER_HOST" _init_rto } + [ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || { + OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6" + _init_rto + } } _post_tracking() { @@ -170,12 +180,14 @@ OMR_TRACKER_PREV_STATUS="" while true; do # setup tracker variables OMR_TRACKER_DEVICE_IP= + OMR_TRACKER_DEVICE_IP6= OMR_TRACKER_STATUS="ERROR" OMR_TRACKER_STATUS_MSG="" OMR_TRACKER_LATENCY= #OMR_TRACKER_TIMEOUT=$((rto / 1000 + (rto % 1000 ? 1 : 0))) OMR_TRACKER_LIST_HOSTS="" OMR_TRACKER_DEVICE_GATEWAY= + OMR_TRACKER_DEVICE_GATEWAY6= serverip_ping=false if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then @@ -185,6 +197,10 @@ while true; do if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1) fi + #OMR_TRACKER_DEVICE_IP6=$(ip -6 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}') + #if [ -z "$OMR_TRACKER_DEVICE_IP6" ]; then + OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | grep -v 'inet6 f' | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1) + #fi #OMR_TRACKER_DEVICE_IP=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n") #if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then # OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep -v default | awk '/proto static/ {print $1}' | tr -d "\n") @@ -219,6 +235,15 @@ while true; do if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n") fi + if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then + OMR_TRACKER_DEVICE_GATEWAY6=$(uci -q get "network.$OMR_TRACKER_INTERFACE.ip6gw") + fi + if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then + OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.${OMR_TRACKER_INTERFACE} status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${OMR_TRACKER_DEVICE_IP6}\"].nexthop" | tr -d "\n") + fi + if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then + OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") + fi # execute specific tracker if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then @@ -304,6 +329,89 @@ while true; do sleep "$OMR_TRACKER_INTERVAL_TRIES" done fi + if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then + # setup loop variable + tries="$OMR_TRACKER_TRIES" + # loop until tries attempts have been reached + while [ "$tries" -gt 0 ]; do + #if [ -n "$OMR_TRACKER_DEVICE_ROUTE" ]; then + # _ping "$OMR_TRACKER_DEVICE_ROUTE" "$OMR_TRACKER_DEVICE" "no" + # status=$? + #else + _ping "$OMR_TRACKER_DEVICE_GATEWAY6" "$OMR_TRACKER_DEVICE" "no" + status=$? + #fi + if $(exit $status) && [ "$OMR_TRACKER_TYPE" = "none" ]; then + OMR_TRACKER_STATUS_MSG="" + OMR_TRACKER_STATUS="OK" + break + elif [ "$OMR_TRACKER_TYPE" != "none" ]; then + if ! $(exit $status); then + OMR_TRACKER_STATUS_MSG="gateway6 down" + fi + serverip_ping=false + if [ "$OMR_TRACKER_TYPE" = "ping" ]; then + config_load openmptcprouter + config_foreach _ping_server server $OMR_TRACKER_DEVICE + fi + if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST6" ]; then + OMR_TRACKER_HOST6=$(resolveip -6 -t 5 $OMR_TRACKER_HOST6 | head -n 1 | tr -d "\n") + if [ -n "$OMR_TRACKER_HOST6" ]; then + if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then + # Check if route is not used + while ! ip -6 route add $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6 > /dev/null 2>&1 + do + logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6. waiting..." + sleep 2 + ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 + _restart + done + fi + if [ "$OMR_TRACKER_TYPE" = "ping" ]; then + _ping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE" "yes" + statusb=$? + elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then + _httping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes" + statusb=$? + elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then + _dns "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes" + statusb=$? + fi + ip route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 + if $(exit $statusb); then + OMR_TRACKER_STATUS_MSG="" + OMR_TRACKER_STATUS="OK" + break + else + if [ "$OMR_TRACKER_LIST_HOSTS6" = "" ]; then + OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST6" + else + OMR_TRACKER_LIST_HOSTS6="$OMR_TRACKER_LIST_HOSTS6,$OMR_TRACKER_HOST6" + fi + fi + else + OMR_TRACKER_STATUS_MSG="" + OMR_TRACKER_STATUS="OK" + break + fi + else + OMR_TRACKER_STATUS_MSG="" + OMR_TRACKER_STATUS="OK" + break + fi + elif ! $(exit $status); then + OMR_TRACKER_STATUS_MSG="gateway down" + fi + tries=$((tries - 1)) + #_restart + OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}" + [ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || { + OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6" + } + #OMR_TRACKER_TIMEOUT=$((OMR_TRACKER_TIMEOUT * 2)) + sleep "$OMR_TRACKER_INTERVAL_TRIES" + done + fi else OMR_TRACKER_STATUS_MSG="link down" fi @@ -316,6 +424,13 @@ while true; do OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS)" fi fi + if [ "$OMR_TRACKER_LIST_HOSTS6" != "" ]; then + if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then + OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)" + else + OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)" + fi + fi #[ "$OMR_TRACKER_HOSTS" = "$initial_hosts" ] || [ "$OMR_TRACKER_STATUS" = "OK" ] && _post_tracking #[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index 3612c57ee..d5965fe1f 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -11,12 +11,15 @@ USE_PROCD=1 } +. /usr/lib/unbound/iptools.sh + _validate_section() { - local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries + local tmp_hosts=$hosts tmp_hosts6=$hosts6 tmp_timeout=$timeout tmp_tries=$tries local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled tmp_wait_test=$wait_test uci_validate_section omr-tracker "$1" "$2" \ 'hosts:list(host)' \ + 'hosts6:list(host6)' \ 'timeout:uinteger' \ 'tries:uinteger' \ 'interval:uinteger' \ @@ -27,6 +30,7 @@ _validate_section() { 'options:string' [ -z "$hosts" ] && hosts=$tmp_hosts + [ -z "$hosts6" ] && hosts6=$tmp_hosts6 [ -z "$timeout" ] && timeout=$tmp_timeout [ -z "$tries" ] && tries=$tmp_tries [ -z "$interval" ] && interval=$tmp_interval @@ -42,7 +46,7 @@ _launch_tracker() { loopback|lan*|if0*) return;; esac - local hosts timeout tries interval interval_tries options type enabled wait_test + local hosts hosts6 timeout tries interval interval_tries options type enabled wait_test _validate_section "defaults" "defaults" _validate_section "interface" "$1" @@ -65,6 +69,7 @@ _launch_tracker() { # shellcheck disable=SC2086 procd_set_param command /bin/omr-tracker "$1" $options procd_append_param env "OMR_TRACKER_HOSTS=$hosts" + procd_append_param env "OMR_TRACKER_HOSTS6=$hosts6" procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout" procd_append_param env "OMR_TRACKER_TRIES=$tries" procd_append_param env "OMR_TRACKER_INTERVAL=$interval" diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 0ec6b55de..3c5ca2aaf 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -8,6 +8,8 @@ USE_PROCD=1 EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall get_openvpn_key" +. /usr/lib/unbound/iptools.sh + _parse_result() { result=$("echo $1 | jsonfilter -q -e '@.result'") echo $result @@ -22,7 +24,13 @@ _login() { serverport="$(uci -q get openmptcprouter.${servername}.port)" if [ -z "$token" ]; then #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` + else + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` + fi [ -z "$auth" ] && return token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" uci -q set openmptcprouter.${servername}.token="$token" @@ -41,7 +49,13 @@ _get_json() { route=$1 [ -z "$token" ] && _login [ -n "$token" ] && { - result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route` + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route` + else + result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://[$server]:$serverport/$route` + fi echo $result } || { echo '' @@ -54,7 +68,13 @@ _set_json() { settings="$2" [ -z "$token" ] && _login [ -n "$token" ] && { - result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route` + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route` + else + result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://[$server]:$serverport/$route` + fi echo $result } || { echo '' @@ -449,6 +469,7 @@ _get_gre_tunnel() { set network.omrip${i}gre.defaultroute='0' set network.omrip${i}gre.multipath='off' set network.omrip${i}gre.peerdns='0' + set network.omrip${i}gre.ttl='255' set network.omrip${i}gre.ip4table='vpn' set network.omrip${i}gre.peeraddr="$publicaddr" set network.omrip${i}gre.ipaddr="$vpnip_local" @@ -1453,7 +1474,7 @@ _backup_send() { EOF return } - sysupgrade -b /tmp/backup.tar.gz + sysupgrade -k -b /tmp/backup.tar.gz backup_data="$(cat /tmp/backup.tar.gz | base64 | tr -d '\n')" backup_sha256sum="$(sha256sum /tmp/backup.tar.gz | awk '{print $1}')" [ -n "$backup_data" ] && { @@ -1574,10 +1595,20 @@ _config_service() { fi port="$(uci -q get openmptcprouter.${servername}.port)" server="$(uci -q get openmptcprouter.${servername}.ip)" - if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then - reason="$reason, no server API answer" + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then + reason="$reason, no server API answer" + else + reason="$reason, server API answer" + fi else - reason="$reason, server API answer" + if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then + reason="$reason, no server API answer" + else + reason="$reason, server API answer" + fi fi if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then reason="$reason, custom username" @@ -1706,6 +1737,9 @@ start_service() { uci -q batch <<-EOF >/dev/null commit openmptcprouter EOF + if [ "$(ps w | grep sysupgrade)" = "" ]; then + /etc/init.d/sysupgrade restart + fi } service_triggers() { diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index e6f918796..204cb92f3 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -151,6 +151,19 @@ if [ "$(uci -q get firewall.blockquicproxy)" = "" ]; then EOF fi +if [ "$(uci -q get firewall.allowicmpipv6)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set firewall.allowicmpipv6=rule + set firewall.allowicmpipv6.proto='icmp' + set firewall.allowicmpipv6.target='ACCEPT' + set firewall.allowicmpipv6.src='wan' + set firewall.allowicmpipv6.name='Allow IPv6 ICMP' + set firewall.allowicmpipv6.family='ipv6' + set firewall.allowicmpipv6.icmp_type='neighbour-advertisement neighbour-solicitation router-advertisement router-solicitation' + commit firewall + EOF +fi + # Fix firewall config from some old config allintf=$(uci -q get firewall.@zone[1].network) uci -q del firewall.@zone[1].network From 027c4e7c497843af437b2bcfd51bc65604d7038a Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:14:51 +0100 Subject: [PATCH 045/137] Fix https://github.com/Ysurac/openmptcprouter/issues/1524 --- .../luasrc/model/cbi/https-dns-proxy.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua index d914bf09a..d4fee9e00 100644 --- a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua +++ b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua @@ -36,14 +36,16 @@ function create_helper_text() end function get_provider_name(value) - for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - value = value:gsub('[%p%c%s]', '') - p.url_match = p.resolver_url:gsub('[%p%c%s]', '') - if value:match(p.url_match) then - return p.label + if value ~= nil then + for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + value = value:gsub('[%p%c%s]', '') + p.url_match = p.resolver_url:gsub('[%p%c%s]', '') + if value:match(p.url_match) then + return p.label + end end end return translate("Unknown Provider") From 14db6f80fbddb0b399816a497f3a19dcc8428146 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:15:14 +0100 Subject: [PATCH 046/137] Less log for omr-tracker-gre --- omr-tracker/files/bin/omr-tracker-gre | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omr-tracker/files/bin/omr-tracker-gre b/omr-tracker/files/bin/omr-tracker-gre index b169d21d8..89041bbc4 100755 --- a/omr-tracker/files/bin/omr-tracker-gre +++ b/omr-tracker/files/bin/omr-tracker-gre @@ -14,7 +14,7 @@ _ping_server() { -w "$OMR_TRACKER_TIMEOUT" \ -c 1 \ -q \ - "${host}" + "${host}" 2>/dev/null ) && echo "$ret" | grep -sq " 0% packet loss" && { server_ping=true } From 34cf70ae30447b6c3ddbf3c5c9e7fa07e32931a2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 16 Jan 2021 08:15:54 +0100 Subject: [PATCH 047/137] Add system upgrade via interface --- luci-app-sysupgrade/Makefile | 11 + .../luasrc/view/sysupgrade.htm | 123 ++++++ .../po/templates/attendedsysupgrade.pot | 11 + .../root/etc/init.d/sysupgrade | 20 + .../root/etc/uci-defaults/40_luci-sysupgrade | 20 + .../luci/menu.d/luci-app-sysupgrade.json | 13 + .../root/usr/share/rpcd/acl.d/sysupgrade.json | 34 ++ .../www/luci-static/resources/sysupgrade.js | 386 ++++++++++++++++++ openmptcprouter-full/Makefile | 2 +- 9 files changed, 619 insertions(+), 1 deletion(-) create mode 100644 luci-app-sysupgrade/Makefile create mode 100644 luci-app-sysupgrade/luasrc/view/sysupgrade.htm create mode 100644 luci-app-sysupgrade/po/templates/attendedsysupgrade.pot create mode 100755 luci-app-sysupgrade/root/etc/init.d/sysupgrade create mode 100755 luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade create mode 100644 luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json create mode 100644 luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json create mode 100644 luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js diff --git a/luci-app-sysupgrade/Makefile b/luci-app-sysupgrade/Makefile new file mode 100644 index 000000000..3b5ccc6dc --- /dev/null +++ b/luci-app-sysupgrade/Makefile @@ -0,0 +1,11 @@ +# See /LICENSE for more information. +# This is free software, licensed under the GNU General Public License v2. + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI support for sysupgrades +LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +rpcd +rpcd-mod-rpcsys +cgi-io + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm new file mode 100644 index 000000000..ac91611ad --- /dev/null +++ b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm @@ -0,0 +1,123 @@ +<% +-- all lua code provided by https://github.com/jow-/ +-- thank you very much! + + function apply_acls(filename, session) + local json = require "luci.jsonc" + local util = require "luci.util" + local fs = require "nixio.fs" + + local grants = { } + + local acl = json.parse(fs.readfile(filename)) + if type(acl) ~= "table" then + return + end + + local group, perms + for group, perms in pairs(acl) do + local perm, scopes + for perm, scopes in pairs(perms) do + if type(scopes) == "table" then + local scope, objects + for scope, objects in pairs(scopes) do + if type(objects) == "table" then + if not grants[scope] then + grants[scope] = { } + end + + if next(objects) == 1 then + local _, object + for _, object in ipairs(objects) do + if not grants[scope][object] then + grants[scope][object] = { } + end + table.insert(grants[scope][object], perm) + end + else + local object, funcs + for object, funcs in pairs(objects) do + if type(funcs) == "table" then + local _, func + for _, func in ipairs(funcs) do + if not grants[scope][object] then + grants[scope][object] = { } + end + table.insert(grants[scope][object], func) + end + end + end + end + end + end + end + end + end + + local _, scope, object, func + for scope, _ in pairs(grants) do + local objects = { } + for object, _ in pairs(_) do + for _, func in ipairs(_) do + table.insert(objects, { object, func }) + end + end + + util.ubus("session", "grant", { + ubus_rpc_session = session, + scope = scope, objects = objects + }) + end + end + + apply_acls("/usr/share/rpcd/acl.d/sysupgrade.json", luci.dispatcher.context.authsession) +%> +<%+header%> +

    <%:Sysupgrade%>

    +
    + Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages. +
    + + +

    + +

    +
    + +
    + + + +
    +
    + +
    +
    +
    + +
    + + +<%+footer%> diff --git a/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot b/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot new file mode 100644 index 000000000..c14f0951e --- /dev/null +++ b/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot @@ -0,0 +1,11 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm:76 +#: applications/luci-app-attendedsysupgrade/root/usr/share/luci/menu.d/luci-app-attendedsysupgrade.json:3 +msgid "Attended Sysupgrade" +msgstr "" + +#: applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json:3 +msgid "attended sysupgrade via rpcd and luci" +msgstr "" diff --git a/luci-app-sysupgrade/root/etc/init.d/sysupgrade b/luci-app-sysupgrade/root/etc/init.d/sysupgrade new file mode 100755 index 000000000..86eccd349 --- /dev/null +++ b/luci-app-sysupgrade/root/etc/init.d/sysupgrade @@ -0,0 +1,20 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2020 Ycarus (Yannick Chabanois) +# Released under GPL 3. See LICENSE for the full terms. + +{ + START=90 + STOP=10 + USE_PROCD=1 +} + +start_service() +{ + if [ -f /etc/backup/installed_packages.txt ]; then + if [ "$(opkg -V0 update)" = "" ]; then + grep "\toverlay" /etc/backup/installed_packages.txt | cut -f1 | xargs -r opkg -V0 install + rm /etc/backup/installed_packages.txt + fi + fi +} + diff --git a/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade new file mode 100755 index 000000000..a5ef66fe8 --- /dev/null +++ b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade @@ -0,0 +1,20 @@ +#!/bin/sh + +/etc/init.d/uhttpd restart +/etc/init.d/rpcd reload + +[ -e /etc/config/sysupgrade ] && return 0 + +touch /etc/config/sysupgrade + +uci -q batch < + ubus_call("uci", "get", option, option["option"]) +} + +ubus_counter = 0; +ubus_closed = 0; + +function ubus_call(command, argument, params, variable) { + var request_data = {}; + request_data.jsonrpc = "2.0"; + request_data.id = ubus_counter; + request_data.method = "call"; + request_data.params = [data.ubus_rpc_session, command, argument, params] + var request_json = JSON.stringify(request_data) + ubus_counter++; + var request = new XMLHttpRequest(); + request.open("POST", ubus_url, true); + request.setRequestHeader("Content-type", "application/json"); + request.onload = function(event) { + if (request.status === 200) { + var response = JSON.parse(request.responseText) + if (!("error" in response) && "result" in response) { + if (response.result.length === 2) { + if (command === "uci") { + data[variable] = response.result[1].value + } else { + data[variable] = response.result[1][variable] + } + } + } else { + set_status("danger", "Ubus call failed:
    Request: " + request_json + "
    Response: " + JSON.stringify(response)) + } + ubus_closed++; + } + } + request.send(request_json); +} + +function set_status(type, message, loading, show_log) { + $("#status_box").className = "alert-message " + type; + var loading_image = ''; + if (loading) { + loading_image = 'Loading '; + } + if (data.buildlog_url && show_log) { + message += '

    Build log

    ' + } + $("#status_box").innerHTML = loading_image + message; + show("#status_box") +} + +function upgrade_check() { + var current_version = data.release.version.toLowerCase(); + var current_branch = current_version.split('.').slice(0, 2).join('.') + var candidates = [] + hide("#status_box"); + hide("#server_div"); + set_status("info", "Searching for upgrades", true); + fetch(data.url + "/api/versions") + .then(response => response.json()) + .then(response => { + var branches = response["branches"] + for (i in branches) { + // handle snapshots in a special way - as always + if (current_version == "snapshot" && branches[i]["latest"] == "snapshot") { + candidates.unshift(branches[i]) + break + } + + if (current_version == branches[i]["latest"]) { + break + } + if (current_branch != branches[i]["name"]) { + branches[i]["warn_branch_jump"] = true + } + candidates.unshift(branches[i]) + if (current_branch == branches[i]["name"]) { + // don't offer branches older than the current + break + } + } + + if (candidates.length > 0) { + var info_output = "

    New release " + candidates[0].latest + " available

    " + info_output += "Installed version: " + data.release.version + + // tell server the currently installed version + request_dict.current_version = request_dict.version; + // tell server what version to install + request_dict.version = candidates[0].latest; + // tell server to diff the requested packages with the default packages + // this allows to not automatically re-install default packages which + // where dropped in later releases + request_dict.diff_packages = true; + + set_status("success", info_output) + + if (data.advanced_mode == 1) { + show("#edit_button"); + } + var upgrade_button = $("#upgrade_button") + upgrade_button.value = "Request firmware"; + upgrade_button.style.display = "block"; + upgrade_button.disabled = false; + upgrade_button.onclick = upgrade_request; + + } else { + set_status("success", "No upgrades available") + + } + }); + +} + +function upgrade_request() { + // Request firmware using the following parameters + // distro, version, target, board_name, packages + $("#upgrade_button").disabled = true; + hide("#edit_packages"); + hide("#edit_button"); + hide("#keep_container"); + + // add board info to let server determine profile + request_dict.target = data.release.target + request_dict.profile = data.board_name + request_dict.rootfs = data.format + + if (data.edit_packages == true) { + request_dict.packages = $("#edit_packages").value.split("\n") + } else { + request_dict.packages = Object.keys(data.packages); + } + server_request() +} + +function upgrade_request_callback(response) { + var sysupgrade_file = ""; + console.log(response) + for (i in response.images) { + if (response.images[i].type == "sysupgrade") { + sysupgrade_file = response.images[i].name; + } + } + if (sysupgrade_file != "") { + data.sysupgrade_url = data.url + '/release/' + response.bin_dir + '/' + sysupgrade_file + var info_output = '

    Firmware created

    Created file: ' + sysupgrade_file + '

    ' + set_status("success", info_output, false, true); + + show("#keep_container"); + var upgrade_button = $("#upgrade_button") + upgrade_button.disabled = false; + upgrade_button.style.display = "block"; + upgrade_button.value = "Flash firmware"; + upgrade_button.onclick = download_image; + } else { + set_status("danger", "Firmware build successfull but device not sysupgrade compatible!") + } +} + +function flash_image() { + // Flash image via rpc-sys upgrade_start + set_status("warning", "Flashing firmware. Don't unpower device", true) + ubus_call("rpc-sys", "upgrade_start", { + "keep": $("#keep").checked + }, 'message'); + ping_max = 3600; // in seconds + setTimeout(ping_ubus, 10000) +} + +function ping_ubus() { + // Tries to connect to ubus. If the connection fails the device is likely still rebooting. + // If more time than ping_max passes update may failed + if (ping_max > 0) { + ping_max--; + var request = new XMLHttpRequest(); + request.open("GET", ubus_url, true); + request.addEventListener('error', function(event) { + set_status("warning", "Rebooting device - please wait!", true); + setTimeout(ping_ubus, 5000) + }); + request.addEventListener('load', function(event) { + set_status("success", "Success! Please reload web interface"); + $("#upgrade_button").value = "Reload page"; + show("#upgrade_button"); + $("#upgrade_button").disabled = false; + $("#upgrade_button").onclick = function() { + location.reload(); + } + }); + request.send(); + } else { + set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually") + } +} + +function upload_image(blob) { + // Uploads received blob data to the server using cgi-io + set_status("info", "Uploading firmware to device", true); + var request = new XMLHttpRequest(); + var form_data = new FormData(); + + form_data.append("sessionid", data.ubus_rpc_session) + form_data.append("filename", "/tmp/firmware.bin") + form_data.append("filemode", 755) // insecure? + form_data.append("filedata", blob) + + request.addEventListener('load', function(event) { + request_json = JSON.parse(request.responseText) + flash_image(); + }); + + request.addEventListener('error', function(event) { + set_status("danger", "Upload of firmware failed, please retry by reloading web interface") + }); + + request.open('POST', origin + '/cgi-bin/cgi-upload'); + request.send(form_data); +} + + +function download_image() { + // Download image from server once the url was received by upgrade_request + hide("#keep_container"); + hide("#upgrade_button"); + var download_request = new XMLHttpRequest(); + download_request.open("GET", data.sysupgrade_url); + download_request.responseType = "arraybuffer"; + + download_request.onload = function() { + if (this.status === 200) { + var blob = new Blob([download_request.response], { + type: "application/octet-stream" + }); + upload_image(blob) + } + }; + set_status("info", "Downloading firmware to web browser memory", true); + download_request.send(); +} + +function server_request() { + fetch(data.url + "/api/build", { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(request_dict) + }) + .then(response => { + switch (response.status) { + case 200: + response.json() + .then(response => { + upgrade_request_callback(response) + }); + break; + case 202: + set_status("info", "Processing request", true); + setTimeout(function() { + server_request() + }, 5000) + break; + case 400: // bad request + case 422: // bad package + case 500: // build failed + console.log('error (' + response.status + ')'); + response.json() + .then(response => { + if (response.buildlog) { + data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt'; + } + set_status("danger", response.message); + }); + break; + } + }); +} + +request_dict = {} +document.onload = setup() diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index defb4d7b4..74968b5c8 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -80,7 +80,7 @@ MY_DEPENDS := \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ - hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding + hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding luci-app-sysupgrade # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status # luci-proto-bonding luci-app-statistics luci-proto-gre # softethervpn5-client softethervpn5-server luci-app-nginx-ha From 995c2018c5770dc7d0cf27a67c4d59a3eb0e9975 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 18 Jan 2021 17:22:27 +0100 Subject: [PATCH 048/137] Fix IPv6 wan support --- .../luasrc/view/openmptcprouter/wanstatus.htm | 11 +++----- .../luasrc/view/openmptcprouter/wizard.htm | 27 +++++++++++++++++++ .../root/usr/libexec/rpcd/openmptcprouter | 10 +++---- .../share/omr/post-tracking.d/post-tracking | 21 ++++++++------- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 16caf5a59..cff1dbac6 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -231,9 +231,9 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); - } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr6 != "") + } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip6) && mArray.openmptcprouter.wan_addr6 != "") { - var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_6addr); + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); @@ -285,10 +285,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '
    '; - } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 !== "" && mArray.openmptcprouter.external_check == true) - { - statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
    '; - } else if (mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
    '; } @@ -480,7 +477,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:wan address:%>', wanip); } - if(wanip6 !== '') + if(wanip6 !== '' && gateway6 != '') { content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); } diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index da0649831..e213c660c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -576,6 +576,33 @@
    + <% + ipv6list = uci:get_list("network",ifname,"ip6addr") + for key, value in pairs(ipv6list) do + %> +
    + +
    + +
    +
    + <%:Set an IP in the same network as the modem%> +
    +
    +
    + <% + end + %> +
    + +
    + " data-type="ip6addr"> +
    +
    + <%:Set here IP of the modem%> +
    +
    +
    diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index bb9700d29..f8d83797c 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -788,18 +788,18 @@ function interfaces_status() end if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then - if mArray.openmptcprouter["service_addr_ip"] ~= "" then + if mArray.openmptcprouter["service_addr_ip"] ~= "" and mArray.openmptcprouter["service_addr_ip"] ~= nil then mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website)) if mArray.openmptcprouter["wan_addr"] == "" then mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -4 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) end end - if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then + if mArray.openmptcprouter["ipv6"] == "enabled" or ( mArray.openmptcprouter["service_addr_ip6"] ~= "" and mArray.openmptcprouter["service_addr_ip6"] ~= nil) then mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" if mArray.openmptcprouter["wan_addr6"] == "" then mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website)) - if mArray.openmptcprouter["wan_addr"] == "" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) + if mArray.openmptcprouter["wan_addr6"] == "" then + mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) end end end @@ -839,7 +839,7 @@ function interfaces_status() ucic:foreach("openmptcprouter", "server", function(s) local serverip = uci:get("openmptcprouter",s[".name"],"ip") or "" local master = uci:get("openmptcprouter",s[".name"],"master") or "1" - if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip) then + if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) then mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index ca23f14cd..77446d653 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -58,7 +58,7 @@ set_route6() { if [ -z "$interface_gw" ]; then interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") fi - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep ':')" ]; then [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if" [ "$SETDEFAULT" = "yes" ] && ip -6 route replace default scope global nexthop via $interface_gw dev $interface_if ip -6 route replace default via $interface_gw dev $interface_if table 991337 && SETROUTE=true @@ -697,7 +697,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") - elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ]; then + elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]; then if [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ]; then local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) #local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 8.8.8.8) @@ -866,7 +866,7 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then fi gtudpst="up" [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" - if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] && [ "$OMR_TRACKER_DEVICE_IP" != "" ]; then + if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 @@ -881,7 +881,7 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then fi fi fi - if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ] && [ "$OMR_TRACKER_DEVICE_IP6" != "" ]; then + if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ]; then if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 @@ -899,7 +899,10 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then # if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then # glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 # fi - [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1 + [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && { + [ -n "$OMR_TRACKER_DEVICE_IP" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1 + [ -n "$OMR_TRACKER_DEVICE_IP6" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set pref 125 > /dev/null 2>&1 + } fi [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && { [ "$multipath_status" = "$multipath_config" ] || { @@ -966,7 +969,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( local serverip=$(uci -q get shadowsocks-libev.sss0.server) [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" } [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr" [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" @@ -980,7 +983,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 } - else + elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) [ -n "$mtu" ] && { @@ -1018,7 +1021,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( local serverip=$(uci -q get shadowsocks-libev.sss0.server) [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" } [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip6="$ip6addr" [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" @@ -1032,7 +1035,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 } - else + elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) [ -n "$mtu" ] && { From 00f8830d44dbf73d20eaebf8be97ae973539e267 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 19 Jan 2021 14:06:45 +0100 Subject: [PATCH 049/137] Fix forward and bypass in case of multiples IPs --- .../files/shadowsocks-libev.init | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 41e48aa4a..c0590eb35 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -225,6 +225,26 @@ ss_rules() { src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" + [ -z "$dst_ips_bypass4" ] && [ -z "$dst_ips_bypass6" ] && { + dst_ips_bypass4="$dst_ips_bypass" + dst_ips_bypass6="$dst_ips_bypass" + } + [ -z "$dst_ips_forward4" ] && [ -z "$dst_ips_forward6" ] && { + dst_ips_forward4="$dst_ips_forward" + dst_ips_forward6="$dst_ips_forward" + } + [ -z "$src_ips_bypass4" ] && [ -z "$src_ips_bypass6" ] && { + src_ips_bypass4="$src_ips_bypass" + src_ips_bypass6="$src_ips_bypass" + } + [ -z "$src_ips_forward4" ] && [ -z "$src_ips_forward6" ] && { + src_ips_forward4="$src_ips_forward" + src_ips_forward6="$src_ips_forward" + } + [ -z "$src_ips_checkdst4" ] && [ -z "$src_ips_checkdst6" ] && { + src_ips_checkdst4="$src_ips_checkdst" + src_ips_checkdst6="$src_ips_checkdst" + } [ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst" ss_rules_call From d29d25b95a25cd5232d0372f94451d279b03e037 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 20 Jan 2021 16:39:16 +0100 Subject: [PATCH 050/137] Update wizard for WAN IPv6 support --- .../root/etc/init.d/omr-bypass | 12 +++---- .../luasrc/controller/openmptcprouter.lua | 9 +++++ .../luasrc/view/openmptcprouter/wizard.htm | 33 +++++++++++++++++-- .../root/usr/libexec/rpcd/openmptcprouter | 2 ++ 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 8c1bf2aeb..592d875ac 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -374,7 +374,7 @@ _bypass_proto() { _intf_rule_ss_rules() { rule_name=$1 [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count @@ -394,7 +394,7 @@ _intf_rule_ss_rules() { COMMIT EOF fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count @@ -413,7 +413,7 @@ _intf_rule_v2ray_rules() { #rule_name=$1 #[ "$rule_name" = "ss_rules" ] && rule_name="def" rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count @@ -426,14 +426,14 @@ _intf_rule_v2ray_rules() { EOF fi if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables --wait=40 -t mangle -L -n | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables-save | grep omr-bypass6 | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count COMMIT EOF fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *nat -I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count @@ -487,7 +487,7 @@ _intf_rule() { ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1 fi } - if [ "$(iptables --wait=40 -t mangle -L -n | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables-save | grep omr-bypass | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 23d5fc5f7..f60c1c82d 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -223,8 +223,10 @@ function wizard_add() local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" + local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or "" local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or "" local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or "" + local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or "" local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or "" local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or "" local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or "" @@ -281,6 +283,13 @@ function wizard_add() 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) + else + ucic:set("network",intf,"ip6addr","") + ucic:set("network",intf,"ip6gw","") + end ucic:delete("openmptcprouter",intf,"lc") ucic:save("openmptcprouter") diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index e213c660c..f7e5e3c7b 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -147,7 +147,7 @@
    - checked<% end %> /> + checked<% end %> />
    <%:You should disable IPv6 here if server doesn't provide IPv6.%> @@ -580,7 +580,7 @@ ipv6list = uci:get_list("network",ifname,"ip6addr") for key, value in pairs(ipv6list) do %> -
    +
    @@ -592,8 +592,9 @@
    <% end + if ipv6list ~= nil and ipv6list ~= "" then %> -
    +
    " data-type="ip6addr"> @@ -603,6 +604,32 @@
    + <% + else + %> +
    + +
    + +
    +
    + <%:Set an IP in the same network as the modem%> +
    +
    +
    +
    + +
    + " data-type="ip6addr"> +
    +
    + <%:Set here IP of the modem%> +
    +
    +
    + <% + end + %>
    diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index f8d83797c..1a11148c7 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -984,6 +984,8 @@ function interfaces_status() end elseif uci:get("openmptcprouter","settings","vpn") == "none" then mArray.openmptcprouter["tun_service"] = true + mArray.openmptcprouter["tun_state"] = "NONE" + mArray.openmptcprouter["tun6_state"] = "NONE" end mArray.openmptcprouter["multi_vpn"] = false From 6fbc5eed463c736c764f3b9e4ca02b6a95bed3a2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 20 Jan 2021 16:39:38 +0100 Subject: [PATCH 051/137] Doesn't add disabled ss-redir in firewall --- shadowsocks-libev/files/shadowsocks-libev.init | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index c0590eb35..7c3056747 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -146,7 +146,8 @@ ss_rules_cb() { ss_redir_ports() { port=$(uci -q get shadowsocks-libev.$1.local_port) server=$(uci -q get shadowsocks-libev.$1.server) - if [ "$server" = "$2" ] || [ "$2" = "" ]; then + disabled=$(uci -q get shadowsocks-libev.$1.disabled) + if [ "$disabled" != "1" ] && ([ "$server" = "$2" ] || [ "$2" = "" ]); then if [ "$port" -lt "$min_ss_redir_ports" ]; then min_ss_redir_ports=$port fi From b350af4207a0e2ed7107126cc13a886da8389353 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 20 Jan 2021 16:39:58 +0100 Subject: [PATCH 052/137] Fix mail to alert --- mptcp/files/usr/share/omr/post-tracking.d/post-tracking | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 77446d653..71dd7f0ac 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -598,9 +598,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then OMR_SYSNAME="$(uci -q get system.@system[0].hostname)" if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)" - mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)" - mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to) else echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to) @@ -740,9 +740,9 @@ if [ "$OMR_TRACKER_PREV_STATUS" != "" ] && [ "$OMR_TRACKER_PREV_STATUS" != "$OMR OMR_SYSNAME="$(uci -q get system.@system[0].hostname)" if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)" - mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)" - mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to) else echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up\n\nDetected that connection $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up again." | sendmail $(uci -q get mail.default.to) From bd954b3f78d52155428db2f448ce6376493ec3f1 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 11:27:28 +0100 Subject: [PATCH 053/137] Fix WAN IPv6 support if WAN IPv4 is also available --- .../share/omr/post-tracking.d/post-tracking | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 71dd7f0ac..9c3a19fb0 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -210,14 +210,14 @@ set_routes_intf6() { weight=1 fi if [ "$multipath_config_route" = "backup" ]; then - nbintfb=$((nbintfb+1)) + nbintfb6=$((nbintfb6+1)) if [ -z "$routesintfbackup6" ]; then routesintfbackup6="nexthop via $interface_gw dev $interface_if weight $weight" else routesintfbackup6="$routesintfbackup6 nexthop via $interface_gw dev $interface_if weight $weight" fi else - nbintf=$((nbintf+1)) + nbintf6=$((nbintf6+1)) if [ -z "$routesintf6" ]; then routesintf6="nexthop via $interface_gw dev $interface_if weight $weight" else @@ -304,10 +304,10 @@ set_route_balancing6() { weight=1 fi if [ "$multipath_config_route" = "backup" ]; then - nbintfb=$((nbintfb+1)) + nbintfb6=$((nbintfb6+1)) routesbalancingbackup6="$routesbalancingbackup6 nexthop via $interface_gw dev $interface_if weight $weight" else - nbintf=$((nbintf+1)) + nbintf6=$((nbintf6+1)) routesbalancing6="$routesbalancing6 nexthop via $interface_gw dev $interface_if weight $weight" fi fi @@ -369,13 +369,13 @@ set_server_all_routes6() { if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then routesintf="" routesintfbackup="" - nbintf=0 - nbintfb=0 + nbintf6=0 + nbintfb6=0 config_load network config_foreach set_routes_intf interface uintf="$(echo $routesintf | awk '{print $5}')" uintfb="$(echo $routesintfbackup | awk '{print $5}')" - if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then + if [ -n "$routesintf" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do ip -6 r del $serverip done @@ -383,8 +383,8 @@ set_server_all_routes6() { ip -6 route replace $serverip scope global $routesintf [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" fi - if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" + if [ -n "$routesintfbackup" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb6" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb6 $OMR_TRACKER_DEVICE" ip -6 route replace $serverip scope global metric 999 $routesintfbackup fi fi @@ -796,6 +796,7 @@ if [ "$multipath_config" = "master" ]; then routesbalancing="" routesbalancingbackup="" nbintf=0 + nbintf6=0 config_load network config_foreach set_route_balancing interface config_foreach set_route_balancing6 interface @@ -806,7 +807,7 @@ if [ "$multipath_config" = "master" ]; then } } [ -n "$routesbalancing6" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6" ip -6 route replace default scope global metric 1 $routesbalancing6 } @@ -818,7 +819,7 @@ if [ "$multipath_config" = "master" ]; then } } [ -n "$routesbalancingbackup6" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6" ip -6 route replace default scope global metric 999 $routesbalancingbackup6 } From a5ecab5e76a6a237209db87bd0655b9b7423a496 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 11:28:29 +0100 Subject: [PATCH 054/137] Remove message when device doesn't exist with multipath command --- mptcp/files/usr/bin/multipath | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mptcp/files/usr/bin/multipath b/mptcp/files/usr/bin/multipath index 567ab99ee..f25706218 100755 --- a/mptcp/files/usr/bin/multipath +++ b/mptcp/files/usr/bin/multipath @@ -65,8 +65,8 @@ TYPE="$2" #FLAG_PATH=`find /sys/devices/ -path "*/net/$DEVICE/flags"` [ -d "/sys/class/net/$DEVICE/" ] || { - echo "Device '$DEVICE' can't found!" - echo "Use the hardware name like in ifconfig" + #echo "Device '$DEVICE' can't found!" + #echo "Use the hardware name like in ifconfig" exit 1 } From 842ab954d01c9fdad59471936f864d29c69abaad Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 11:28:53 +0100 Subject: [PATCH 055/137] Add glorytun-udp IPv6 wan support --- glorytun-udp/init | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glorytun-udp/init b/glorytun-udp/init index 5e50d59df..e9f7caf7c 100755 --- a/glorytun-udp/init +++ b/glorytun-udp/init @@ -56,11 +56,15 @@ start_instance() { _log "starting ${PROG_NAME} ${1} instance $*" + if [ "$mode" = "to" ]; then + bind="bind from addr :: port 5000 to addr $host port $port" + else + bind="bind from addr $host port $port to addr :: port 5000" + fi procd_open_instance procd_set_param command ${PROG} \ - ${host:+bind ${mode} addr "$host"} \ - ${port:+port "$port"} \ + ${bind} \ ${dev:+dev "$dev"} \ keyfile /tmp/${PROG_NAME}-${1}.key \ persist From 1bd9c2d824dc8f3e556686a0bacea4262a08e9de Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 11:29:18 +0100 Subject: [PATCH 056/137] Fix OpenMPTCProuter status page CSS for IPv6 --- .../resources/openmptcprouter/css/wanstatus.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css index 2e90291e6..35ad4be96 100644 --- a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css @@ -71,7 +71,7 @@ ul { -moz-transition: all 0.5s; } .tree ul ul { - padding-left: 85px; + padding-left: 5px; position: relative; } .tree > ul > li:first-child { @@ -152,7 +152,7 @@ right connector from last child*/ top: 50%; left: 0; border-top: 2px solid black; - width: 85px; + width: 7px; height: 100%; } .tree li a { @@ -222,7 +222,7 @@ right connector from last child*/ width: 2px; /*height: 50%;*/ height: 55px; - left: 200px; + left: 240px; /* z-index: -10;*/ } /*Time for some hover effects*/ @@ -243,9 +243,9 @@ Thanks :)*/ .network-node { position: relative; background-color: #f3f3f3; - padding: 12px; - width: 400px; - max-width: 400px; + padding: 8px; + width: 480px; + max-width: 480px; box-sizing: border-box; min-height: 170px; } @@ -282,7 +282,7 @@ Thanks :)*/ .network-node .info { position: relative; float: right; - width: 250px; + width: 330px; text-align: left; font-size: 12px; color: #757575; @@ -319,7 +319,7 @@ Thanks :)*/ width:5px; border-right:2px dotted black; height:70px; - padding-right: 195px; + padding-right: 240px; } #omr { min-height: 190px; From ac0cd9dcd2fe9b421c6a64f9dc01101d5d7ba979 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 18:59:32 +0100 Subject: [PATCH 057/137] Add DHCPv6 support in wizard --- .../luasrc/view/openmptcprouter/wizard.htm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index f7e5e3c7b..569ce9b50 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -511,6 +511,7 @@ @@ -592,7 +593,7 @@
    <% end - if ipv6list ~= nil and ipv6list ~= "" then + if table.getn(ipv6list) ~= 0 then %>
    @@ -607,7 +608,7 @@ <% else %> -
    +
    @@ -617,7 +618,7 @@
    -
    +
    " data-type="ip6addr"> From 5bdb3ada85234717700031eec21ba3b596aa4fad Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 18:59:55 +0100 Subject: [PATCH 058/137] Add multi IPs server support --- .../share/omr/post-tracking.d/post-tracking | 498 ++++++++++-------- 1 file changed, 270 insertions(+), 228 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 9c3a19fb0..fb01fbdeb 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -68,66 +68,76 @@ set_route6() { set_server_default_route() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY" - if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then - ip r delete $serverip >/dev/null 2>&1 + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY" + if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then + ip r delete $serverip >/dev/null 2>&1 + fi + ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1 fi - ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1 - fi + } + config_list_foreach $server ip server_route } set_server_default_route6() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6" - if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then - ip -6 r delete $serverip >/dev/null 2>&1 + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6" + if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then + ip -6 r delete $serverip >/dev/null 2>&1 + fi + ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1 fi - ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1 - fi + } + config_list_foreach $server ip server_route } delete_server_default_route() { local server=$1 - local serverip - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" - ip route del $serverip metric 1 >/dev/null 2>&1 - fi + delete_route() { + local serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" + ip route del $serverip metric 1 >/dev/null 2>&1 + fi + } + config_list_foreach $server ip delete_route } delete_server_default_route6() { local server=$1 - local serverip - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" - ip -6 route del $serverip metric 1 >/dev/null 2>&1 - fi + delete_route() { + local serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" + ip -6 route del $serverip metric 1 >/dev/null 2>&1 + fi + } + config_list_foreach $server ip delete_route } set_routes_intf() { @@ -316,105 +326,114 @@ set_route_balancing6() { set_server_all_routes() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then - routesintf="" - routesintfbackup="" - nbintf=0 - nbintfb=0 - config_load network - config_foreach set_routes_intf interface - uintf="$(echo $routesintf | awk '{print $5}')" - uintfb="$(echo $routesintfbackup | awk '{print $5}')" - if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then - while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do - ip r del $serverip - done - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" - ip route replace $serverip scope global $routesintf - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then + routesintf="" + routesintfbackup="" + nbintf=0 + nbintfb=0 + config_load network + config_foreach set_routes_intf interface + uintf="$(echo $routesintf | awk '{print $5}')" + uintfb="$(echo $routesintfbackup | awk '{print $5}')" + if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then + while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do + ip r del $serverip + done + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" + ip route replace $serverip scope global $routesintf + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" + fi + if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" + ip route replace $serverip scope global metric 999 $routesintfbackup + fi fi - if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" - ip route replace $serverip scope global metric 999 $routesintfbackup - fi - fi + } + config_list_foreach $server ip server_route } set_server_all_routes6() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then - routesintf="" - routesintfbackup="" - nbintf6=0 - nbintfb6=0 - config_load network - config_foreach set_routes_intf interface - uintf="$(echo $routesintf | awk '{print $5}')" - uintfb="$(echo $routesintfbackup | awk '{print $5}')" - if [ -n "$routesintf" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then - while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do - ip -6 r del $serverip - done - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" - ip -6 route replace $serverip scope global $routesintf - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then + routesintf="" + routesintfbackup="" + nbintf6=0 + nbintfb6=0 + config_load network + config_foreach set_routes_intf interface + uintf="$(echo $routesintf | awk '{print $5}')" + uintfb="$(echo $routesintfbackup | awk '{print $5}')" + if [ -n "$routesintf" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then + while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do + ip -6 r del $serverip + done + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" + ip -6 route replace $serverip scope global $routesintf + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" + fi + if [ -n "$routesintfbackup" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb6" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb6 $OMR_TRACKER_DEVICE" + ip -6 route replace $serverip scope global metric 999 $routesintfbackup + fi fi - if [ -n "$routesintfbackup" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb6" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb6 $OMR_TRACKER_DEVICE" - ip -6 route replace $serverip scope global metric 999 $routesintfbackup - fi - fi + } + config_list_foreach $server ip server_route } set_server_route() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - local metric=$2 - [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - #multipath_current_config=$(multipath $interface_if | grep "deactivated") - interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") - #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" - ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric - fi + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + local metric=$2 + [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + #multipath_current_config=$(multipath $interface_if | grep "deactivated") + interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") + #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" + ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric + fi + } + config_list_foreach $server ip server_route if [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric fi @@ -422,27 +441,30 @@ set_server_route() { set_server_route6() { local server=$1 - local serverip multipath_config_route - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - local metric=$2 - [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - #multipath_current_config=$(multipath $interface_if | grep "deactivated") - interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") - #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" - ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric - fi + server_route() { + local serverip multipath_config_route + serverip=$1 + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + local metric=$2 + [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + #multipath_current_config=$(multipath $interface_if | grep "deactivated") + interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") + #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" + ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric + fi + } + config_list_foreach $server ip server_route if [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric fi @@ -450,14 +472,16 @@ set_server_route6() { del_server_route() { local server=$1 - local serverip - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" - local metric - metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 - ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + remove_route() { + local serverip="$1" + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" + local metric + metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 + ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + } + config_list_foreach $server ip remove_route if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 else @@ -467,14 +491,16 @@ del_server_route() { del_server_route6() { local server=$1 - local serverip - config_get serverip $server ip - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" - local metric - metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 - ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + remove_route() { + local serverip="$1" + [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" + [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" + local metric + metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + ip -6 route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 + ip -6 route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 + } + config_list_foreach $server ip remove_route if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then ip -6 route del default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 else @@ -801,25 +827,25 @@ if [ "$multipath_config" = "master" ]; then config_foreach set_route_balancing interface config_foreach set_route_balancing6 interface [ -n "$routesbalancing" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { _log "Set ip route replace default scope global $routesbalancing" ip route replace default scope global metric 0 $routesbalancing } } [ -n "$routesbalancing6" ] && { - ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && { _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6" ip -6 route replace default scope global metric 1 $routesbalancing6 } } [ -n "$routesbalancingbackup" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { _log "Set backup ip route replace default scope global $routesbalancingbackup" ip route replace default scope global metric 999 $routesbalancingbackup } } [ -n "$routesbalancingbackup6" ] && { - ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { + ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && { _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6" ip -6 route replace default scope global metric 999 $routesbalancingbackup6 } @@ -967,39 +993,47 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.latest_versions.lc=$(date +"%s") } fi - local serverip=$(uci -q get shadowsocks-libev.sss0.server) - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { - omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" - } [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr" [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" [ -n "$asn" ] && { uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn" } - if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then - if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then - mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + local omrtracebox + traceboxmtutest() { + omr_tracebox_mtu() { + local serverip=$1 + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { + omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" + [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" } - elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } || { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } - fi - fi + if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then + if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then + mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } || { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } + fi + fi + } + config_list_foreach $1 ip omr_tracebox_mptcp + } + config_load openmptcprouter + config_foreach traceboxmtutest server uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") } @@ -1019,39 +1053,47 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.latest_versions.lc=$(date +"%s") } fi - local serverip=$(uci -q get shadowsocks-libev.sss0.server) - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { - omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" - } [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip6="$ip6addr" [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" [ -n "$asn" ] && { uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn" } - if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then - if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then - mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + local omrtracebox + traceboxmtutest() { + omr_tracebox_mtu() { + local serverip=$1 + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { + omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" + [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" } - elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } || { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } - fi - fi + if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then + if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then + mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } || { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } + fi + fi + } + config_list_foreach $1 ip omr_tracebox_mptcp + } + config_load openmptcprouter + config_foreach traceboxmtutest server uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") } From 75972e556ef8c04a6d165fe436e83f2ad5af3079 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 19:00:28 +0100 Subject: [PATCH 059/137] Add multi IPs server support in VPS contact script --- .../files/etc/init.d/openmptcprouter-vps | 81 ++++++++++--------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 3c5ca2aaf..be3920ee1 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -17,29 +17,32 @@ _parse_result() { _login() { local username password auth - server="$(uci -q get openmptcprouter.${servername}.ip)" - [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" + #server="$(uci -q get openmptcprouter.${servername}.ip)" + #[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" username="$(uci -q get openmptcprouter.${servername}.username)" password="$(uci -q get openmptcprouter.${servername}.password)" serverport="$(uci -q get openmptcprouter.${servername}.port)" if [ -z "$token" ]; then - #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` - else - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` - fi - [ -z "$auth" ] && return - token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" - uci -q set openmptcprouter.${servername}.token="$token" + login_on_server() { + server=$1 + #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` + else + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` + fi + [ -z "$auth" ] && return + token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" + uci -q set openmptcprouter.${servername}.token="$token" + } + config_list_foreach ${servername} ip login_on_server fi } _ping_server() { - server="$(uci -q get openmptcprouter.${servername}.ip)" - [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" + server="$1" ret=$(ping -c 3 -w 3 -Q 184 $server 2>&1) && echo "$ret" | grep -sq "bytes from" && return false } @@ -1586,30 +1589,36 @@ _config_service() { _login [ -z "$token" ] && { reason="" - _ping_server - status=$? - if $(exit $status); then - reason="can ping server ${servername}" - else - reason="can't ping server ${servername}" - fi + test_ping() { + _ping_server $1 + status=$? + if $(exit $status); then + reason="can ping server ${servername} on $1" + else + reason="can't ping server ${servername} on $1" + fi + } + config_list_foreach "${servername}" ip test_ping port="$(uci -q get openmptcprouter.${servername}.port)" - server="$(uci -q get openmptcprouter.${servername}.ip)" - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then - reason="$reason, no server API answer" + api_test() { + server="$1" + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then + reason="$reason, no server API answer on $1" + else + reason="$reason, server API answer on $1" + fi else - reason="$reason, server API answer" + if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then + reason="$reason, no server API answer on $1" + else + reason="$reason, server API answer on $1" + fi fi - else - if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then - reason="$reason, no server API answer" - else - reason="$reason, server API answer" - fi - fi + } + config_list_foreach "${servername}" ip api_test if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then reason="$reason, custom username" fi From 24efb0ca347f67472382c42e52c484a976a0ac05 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 19:00:49 +0100 Subject: [PATCH 060/137] Update mptcpd --- mptcpd/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mptcpd/Makefile b/mptcpd/Makefile index 34242071d..a23a4a41b 100644 --- a/mptcpd/Makefile +++ b/mptcpd/Makefile @@ -8,10 +8,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mptcpd -PKG_VERSION:=0.4 +PKG_VERSION:=0.5.1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/intel/mptcpd/releases/download/v$(PKG_VERSION) -PKG_HASH:=459c45ba86ea574f1ad7a062a9914474ca650229b97375017bd46d0732f985ba +PKG_HASH:=0ee4418880f20a1a2eff5c54c26185a75092cb44cbabe0fa3f25a2c5886459e7 PKG_RELEASE:=1 PKG_MAINTAINER:=Ycarus (Yannick Chabanois) From 32e9f41e253d606b47efc92b97571bb3916346b2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 19:01:30 +0100 Subject: [PATCH 061/137] Add DHCPv6 wan firewall rules --- .../files/etc/uci-defaults/1980-omr-firewall | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index 204cb92f3..db2fcf39e 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -164,6 +164,28 @@ if [ "$(uci -q get firewall.allowicmpipv6)" = "" ]; then EOF fi +if [ "$(uci -q get firewall.allowdhcpv6546)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set firewall.allowdhcpv6546=rule + set firewall.allowdhcpv6546.target='ACCEPT' + set firewall.allowdhcpv6546.src='wan' + set firewall.allowdhcpv6546.proto='udp' + set firewall.allowdhcpv6546.dest_port='547' + set firewall.allowdhcpv6546.name='Allow DHCPv6 (546-to-547)' + set firewall.allowdhcpv6546.family='ipv6' + set firewall.allowdhcpv6546.src_port='546' + set firewall.allowdhcpv6547=rule + set firewall.allowdhcpv6547.target='ACCEPT' + set firewall.allowdhcpv6547.src='wan' + set firewall.allowdhcpv6547.proto='udp' + set firewall.allowdhcpv6547.dest_port='546' + set firewall.allowdhcpv6547.name='Allow DHCPv6 (547-to-546)' + set firewall.allowdhcpv6547.family='ipv6' + set firewall.allowdhcpv6547.src_port='547' + commit firewall + EOF +fi + # Fix firewall config from some old config allintf=$(uci -q get firewall.@zone[1].network) uci -q del firewall.@zone[1].network From 2bd20232544821276c269e33fc5a2d9599678038 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 21 Jan 2021 21:18:05 +0100 Subject: [PATCH 062/137] Fix wizard with new multiples IP by server feature --- .../luasrc/controller/openmptcprouter.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index f60c1c82d..7260b66a9 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -425,7 +425,8 @@ function wizard_add() local disablednb = 0 local servers = luci.http.formvaluetable("server") for server, _ in pairs(servers) do - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local server_ip = {} + server_ip[1] = luci.http.formvalue("%s.server_ip" % server) or "" local master = luci.http.formvalue("master") or "" -- OpenMPTCProuter VPS @@ -453,7 +454,7 @@ function wizard_add() ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username) ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key) ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled) - ucic:set("openmptcprouter",server,"ip",server_ip) + ucic:set_list("openmptcprouter",server,"ip",server_ip) ucic:set("openmptcprouter",server,"port","65500") ucic:save("openmptcprouter") end From f8f62ee77e9fe0e6f22b09305844deb10fd924bb Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 22 Jan 2021 10:40:57 +0100 Subject: [PATCH 063/137] Fix for multi IP on server --- .../luasrc/controller/openmptcprouter.lua | 2 +- .../luasrc/view/openmptcprouter/wizard.htm | 2 +- .../root/usr/libexec/rpcd/openmptcprouter | 177 +++++++++--------- .../share/omr/post-tracking.d/post-tracking | 4 +- 4 files changed, 94 insertions(+), 91 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 7260b66a9..29ec07420 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -447,7 +447,7 @@ function wizard_add() if openmptcprouter_vps_disabled == "1" then disablednb = disablednb + 1 end - if server_ip ~= "" then + if server_ip[1] ~= "" then serversnb = serversnb + 1 end ucic:set("openmptcprouter",server,"server") diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 569ce9b50..89da6bc85 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -57,7 +57,7 @@
    - " data-optional="false"> + " data-optional="false">
    <%:Server IP will be set for proxy and VPN%>
    diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index 1a11148c7..9f88a0cc4 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -547,7 +547,7 @@ end function get_rootfs() local rootfs = {} - rootfs['format'] = ut.trim(sys.exec("mount | awk 'NR==1{print $5}'")) + rootfs['format'] = luci.util.trim(sys.exec("mount | awk 'NR==1{print $5}'")) return rootfs end @@ -837,102 +837,105 @@ function interfaces_status() mArray.openmptcprouter["vps_hostname"] = "Server" -- Get VPS info ucic:foreach("openmptcprouter", "server", function(s) - local serverip = uci:get("openmptcprouter",s[".name"],"ip") or "" + local serverips = uci:get("openmptcprouter",s[".name"],"ip") or { "" } local master = uci:get("openmptcprouter",s[".name"],"master") or "1" - if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) then - mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" - mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" - mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" - timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2" - if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then - mArray.openmptcprouter["vps_admin_error"] = true - end - local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" - local token = uci:get("openmptcprouter",s[".name"],"token") or "" - if token ~= "" then - local vpsinfo_json = "" - if mArray.openmptcprouter["service_addr_ip"] ~= "" then - vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') + for key, value in pairs(serverips) do + serverip = value + if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) and mArray.openmptcprouter["vps_admin"] == false then + mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" + mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" + mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" + timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2" + if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then + mArray.openmptcprouter["vps_admin_error"] = true end - if mArray.openmptcprouter["service_addr_ip6"] ~= "" then - vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status') - end - if vpsinfo_json ~= "" and vpsinfo_json ~= nil then - local status, vpsinfo = pcall(function() - return json.decode(vpsinfo_json) - end) - if status and vpsinfo.vps ~= nil then - mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or "" - mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or "" - mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or "" - mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or "" - mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or "" - if vpsinfo.vps.kernel ~= nil then - mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or "" - end - if vpsinfo.vps.omr_version ~= nil then - mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or "" - end - if vpsinfo.vps.time ~= "" then - if math.abs(os.time() - vpsinfo.vps.time) > 10 then - mArray.openmptcprouter["vps_time_accurate"] = false - else - mArray.openmptcprouter["vps_time_accurate"] = true + local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" + local token = uci:get("openmptcprouter",s[".name"],"token") or "" + if token ~= "" then + local vpsinfo_json = "" + if mArray.openmptcprouter["service_addr_ip"] ~= "" then + vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') + end + if mArray.openmptcprouter["service_addr_ip6"] ~= "" then + vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status') + end + if vpsinfo_json ~= "" and vpsinfo_json ~= nil then + local status, vpsinfo = pcall(function() + return json.decode(vpsinfo_json) + end) + if status and vpsinfo.vps ~= nil then + mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or "" + mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or "" + mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or "" + mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or "" + mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or "" + if vpsinfo.vps.kernel ~= nil then + mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or "" end + if vpsinfo.vps.omr_version ~= nil then + mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or "" + end + if vpsinfo.vps.time ~= "" then + if math.abs(os.time() - vpsinfo.vps.time) > 10 then + mArray.openmptcprouter["vps_time_accurate"] = false + else + mArray.openmptcprouter["vps_time_accurate"] = true + end + end + mArray.openmptcprouter["vps_admin"] = true + mArray.openmptcprouter["vps_status"] = "UP" + mArray.openmptcprouter["vps_admin_error_msg"] = "" + else + uci:set("openmptcprouter",s[".name"],"admin_error","1") + mArray.openmptcprouter["vps_admin_error"] = true + uci:delete("openmptcprouter",s[".name"],"token") + uci:save("openmptcprouter",s[".name"]) + uci:commit("openmptcprouter",s[".name"]) + mArray.openmptcprouter["vps_admin"] = false + mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error" end - mArray.openmptcprouter["vps_admin"] = true - mArray.openmptcprouter["vps_status"] = "UP" - mArray.openmptcprouter["vps_admin_error_msg"] = "" + if status and vpsinfo.vpn ~= nil then + mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0" + mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0" + mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"] + else + mArray.openmptcprouter["vpn_traffic_rx"] = "0" + mArray.openmptcprouter["vpn_traffic_tx"] = "0" + mArray.openmptcprouter["vpn_traffic"] = "0" + end + if status and vpsinfo.shadowsocks ~= nil then + mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0" + else + mArray.openmptcprouter["ss_traffic"] = "0" + end + if status and vpsinfo.v2ray ~= nil then + mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0" + mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0" + mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"] + else + mArray.openmptcprouter["v2ray_traffic_rx"] = "0" + mArray.openmptcprouter["v2ray_traffic_tx"] = "0" + mArray.openmptcprouter["v2ray_traffic"] = "0" + end + mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"] + mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"] else - uci:set("openmptcprouter",s[".name"],"admin_error","1") - mArray.openmptcprouter["vps_admin_error"] = true - uci:delete("openmptcprouter",s[".name"],"token") - uci:save("openmptcprouter",s[".name"]) - uci:commit("openmptcprouter",s[".name"]) mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error" + mArray.openmptcprouter["vps_admin_error_msg"] = "No result" end - if status and vpsinfo.vpn ~= nil then - mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0" - mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0" - mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"] - else - mArray.openmptcprouter["vpn_traffic_rx"] = "0" - mArray.openmptcprouter["vpn_traffic_tx"] = "0" - mArray.openmptcprouter["vpn_traffic"] = "0" - end - if status and vpsinfo.shadowsocks ~= nil then - mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0" - else - mArray.openmptcprouter["ss_traffic"] = "0" - end - if status and vpsinfo.v2ray ~= nil then - mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0" - mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0" - mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"] - else - mArray.openmptcprouter["v2ray_traffic_rx"] = "0" - mArray.openmptcprouter["v2ray_traffic_tx"] = "0" - mArray.openmptcprouter["v2ray_traffic"] = "0" - end - mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"] - mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"] else mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No result" + mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" end - else - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" - end - if mArray.openmptcprouter["vps_admin"] == false then - if mArray.openmptcprouter["service_addr_ip"] ~= "" then - local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') - elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then - local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/') - end - if vpstest == "" then - mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" + if mArray.openmptcprouter["vps_admin"] == false then + if mArray.openmptcprouter["service_addr_ip"] ~= "" then + local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') + elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then + local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/') + end + if vpstest == "" then + mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" + end end end end diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index fb01fbdeb..a8ce3ed18 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -1030,7 +1030,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( fi fi } - config_list_foreach $1 ip omr_tracebox_mptcp + config_list_foreach $1 ip omr_tracebox_mtu } config_load openmptcprouter config_foreach traceboxmtutest server @@ -1090,7 +1090,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( fi fi } - config_list_foreach $1 ip omr_tracebox_mptcp + config_list_foreach $1 ip omr_tracebox_mtu } config_load openmptcprouter config_foreach traceboxmtutest server From 16ab9a7722f31b8752e59a4c4da1374a31dd8fd5 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 22 Jan 2021 20:59:25 +0100 Subject: [PATCH 064/137] Fix v2ray proxy setting --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index be3920ee1..49d0b5f29 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -1092,7 +1092,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=0 commit shadowsocks-libev set v2ray.main.enabled=0 - commit shadowsocks-libev + commit v2ray set openmptcprouter.settings.shadowsocks_disable=0 commit openmptcprouter EOF @@ -1101,7 +1101,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=1 commit shadowsocks-libev set v2ray.main.enabled=1 - commit shadowsocks-libev + commit v2ray set openmptcprouter.settings.shadowsocks_disable=1 commit openmptcprouter EOF @@ -1110,7 +1110,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=1 commit shadowsocks-libev set v2ray.main.enabled=0 - commit shadowsocks-libev + commit v2ray set openmptcprouter.settings.shadowsocks_disable=1 commit openmptcprouter EOF From 087561e002aefdbc95833eca866b704c93ddec5d Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 09:32:23 +0100 Subject: [PATCH 065/137] Update omr-tracker for multi IPs server --- omr-tracker/files/bin/omr-tracker-server | 139 +++++++++++++---------- omr-tracker/files/bin/omr-tracker-ss | 15 +-- omr-tracker/files/etc/init.d/omr-tracker | 57 +++++----- 3 files changed, 113 insertions(+), 98 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-server b/omr-tracker/files/bin/omr-tracker-server index e7c759b16..5bd212fdb 100755 --- a/omr-tracker/files/bin/omr-tracker-server +++ b/omr-tracker/files/bin/omr-tracker-server @@ -39,84 +39,103 @@ _check_server() { _check_master() { local name=$1 + local count=0 config_get master $1 master config_get ip $1 ip config_get port $1 port "65500" config_get disabled $1 disabled [ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { - #_ping_server $ip - _check_server $ip $port - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { - logger -t "OMR-Tracker-Server" "Master server up, set it back" - logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n') - $ip" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss0.server=$ip - commit shadowsocks-libev - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn - EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + set_ip() { + local ip=$1 + #_ping_server $ip + _check_server $ip $port + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { + logger -t "OMR-Tracker-Server" "Master server up, set it back" + logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip" + uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.sss${count}.server=$ip + commit shadowsocks-libev + EOF + if [ "$count" -eq "0" ]; then + uci -q batch <<-EOF >/dev/null + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + fi + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null + } + count=$((count+1)) } + config_list_foreach $1 ip set_ip break } } _check_backup() { local name=$1 + local count=0 config_get backup $1 backup config_get ip $1 ip config_get port $1 port config_get disabled $1 disabled [ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { - #_ping_server $ip - _check_server $ip $port - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { - logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss0.server=$ip - commit shadowsocks-libev - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn - EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null - sleep $waittest - break + set_ip() { + #_ping_server $ip + _check_server $ip $port + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { + logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" + uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.sss${count}.server=$ip + commit shadowsocks-libev + EOF + if [ "$count" -eq "0" ]; then + uci -q batch <<-EOF >/dev/null + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + fi + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null + sleep $waittest + break + } + count=$((count+1)) } + config_list_foreach $1 ip set_ip } } diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index 525c4a979..e5a2e5ca8 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -49,6 +49,7 @@ retry=${OMR_TRACKER_TRIES:-4} proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111} hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1} wait_test=${OMR_TRACKER_WAIT_TEST:-0} +server=${OMR_TRACKER_SERVER:-sss0} nodns=0 @@ -65,9 +66,9 @@ while true; do } if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then nocontact="" - [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "" ] && { + [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_$[name})" = "" ] && { _log "Shadowsocks is up (can contact via http ${host})" - uci -q set openmptcprouter.omr.shadowsocks="up" + uci -q set openmptcprouter.omr.ss_${name}="up" uci -q commit openmptcprouter.omr } if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then @@ -83,15 +84,15 @@ while true; do [ "${last}" -ge "${retry}" ] && { if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then _log "Shadowsocks is down (can't contact via http ${nocontact})" - uci -q set openmptcprouter.omr.shadowsocks="down" + uci -q set openmptcprouter.omr.ss_${name}="down" uci -q commit openmptcprouter.omr - /etc/init.d/shadowsocks-libev rules_down 2> /dev/null + [ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null _get_ip server_ping=false - server="$(uci -q get shadowsocks-libev.sss0.server)" - _ping_server $server + serverip="$(uci -q get shadowsocks-libev.${server}.server)" + _ping_server $serverip if [ "$server_ping" = false ]; then - _log "Server ($server) seems down, no answer to ping" + _log "Server $server ($serverip) seems down, no answer to ping" fi sleep $wait_test fi diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index d5965fe1f..fa4e4d265 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -132,48 +132,42 @@ _launch_gre_tracker() { _initialize_shadowsocks_tracker() { local redir_tcp server tracker_server - config_get redir_tcp ss_rules redir_tcp - config_get tracker_server "tracker" server - if [ "$redir_tcp" != "all" ]; then - config_get server $redir_tcp server - elif [ "$tracker_server" != "" ]; then - server=$tracker_server - else - server="sss0" - fi + server=$1 + #redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp) + #config_get tracker_server ss_rules server config_get ss_disabled $server disabled 0 - [ -z "$tracker_server" ] && { + [ -z "$(uci -q get shadowsocks-libev.tracker_${server})" ] && [ "$ss_disabled" != "1" ] && { logger -t "omr-tracker" "Create ShadowSock tracker ss_local..." uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.tracker=ss_local - set shadowsocks-libev.tracker.server=$server - set shadowsocks-libev.tracker.local_address="127.0.0.1" - set shadowsocks-libev.tracker.local_port=1111 - set shadowsocks-libev.tracker.mode=tcp_and_udp - set shadowsocks-libev.tracker.timeout=600 - set shadowsocks-libev.tracker.fast_open=1 - set shadowsocks-libev.tracker.syslog=0 - set shadowsocks-libev.tracker.reuse_port=1 - set shadowsocks-libev.tracker.mptcp=1 - set shadowsocks-libev.tracker.verbose=0 - commit shadowsocks-libev - EOF - /etc/init.d/shadowsocks-libev restart - } - [ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { - logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.tracker.server=$server + set shadowsocks-libev.tracker_${server}=ss_local + set shadowsocks-libev.tracker_${server}.server=$server + set shadowsocks-libev.tracker_${server}.local_address="127.0.0.1" + set shadowsocks-libev.tracker_${server}.local_port=1111 + set shadowsocks-libev.tracker_${server}.mode=tcp_and_udp + set shadowsocks-libev.tracker_${server}.timeout=600 + set shadowsocks-libev.tracker_${server}.fast_open=1 + set shadowsocks-libev.tracker_${server}.syslog=0 + set shadowsocks-libev.tracker_${server}.reuse_port=1 + set shadowsocks-libev.tracker_${server}.mptcp=1 + set shadowsocks-libev.tracker_${server}.verbose=0 commit shadowsocks-libev EOF /etc/init.d/shadowsocks-libev restart } +# [ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { +# logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." +# uci -q batch <<-EOF >/dev/null +# set shadowsocks-libev.tracker.server=$server +# commit shadowsocks-libev +# EOF +# /etc/init.d/shadowsocks-libev restart +# } } _launch_shadowsocks_tracker() { local hosts timeout tries interval local_port enabled server wait_test - [ "$1" = "tracker" ] || return + [ "$(echo $1 | grep tracker)" != "" ] || return _validate_section "proxy" "proxy" @@ -194,6 +188,7 @@ _launch_shadowsocks_tracker() { procd_append_param env "OMR_TRACKER_INTERVAL=$interval" procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port" procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" + procd_append_param env "OMR_TRACKER_SERVER=$server" procd_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 @@ -235,7 +230,7 @@ start_service() { local ss_disabled logger -t "omr-tracker" "Launching..." config_load shadowsocks-libev - _initialize_shadowsocks_tracker + config_foreach _initialize_shadowsocks_tracker server config_load network config_foreach _launch_tracker interface From c4cfdcda06ac422ef2d5898b16dc14a030633dd5 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 09:33:02 +0100 Subject: [PATCH 066/137] Set some settings at startup --- .../root/etc/init.d/openmptcprouter | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index adde64a8f..44188939f 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -18,31 +18,12 @@ omr_intf_check() { omr_intf_set() { local device local ifname - local multipath - config_get multipath "$1" multipath config_get ifname "$1" ifname config_get device "$1" device - config_get proto "$1" proto config_get type "$1" type - config_get addlatency "$1" addlatency - [ -z "$addlatency" ] && addlatency=0 - devicename=$(echo "$device" | cut -d'/' -f3) [ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') - if [ -n "$ifname" ]; then - if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then - tc qdisc del dev ${ifname} root netem - fi - if [ "$addlatency" != "0" ]; then - if [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then - tc qdisc add dev ${ifname} root netem delay ${addlatency}ms - elif [ "$(tc qdisc show dev $ifname | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then - tc qdisc replace dev ${ifname} root netem delay ${addlatency}ms - fi - fi - fi - if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then devicepath=$(readlink -f /sys/class/net/${ifname}) if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then @@ -63,6 +44,15 @@ omr_intf_set() { } omr_set_settings() { + local device + local ifname + local multipath + config_get multipath "$1" multipath + config_get ifname "$1" ifname + config_get device "$1" device + config_get proto "$1" proto + config_get type "$1" type + config_get addlatency "$1" addlatency [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return uci -q set openmptcprouter.$1=interface @@ -73,6 +63,25 @@ omr_set_settings() { else uci -q set network.$1.ipv6=1 fi + + [ -z "$addlatency" ] && addlatency=0 + devicename=$(echo "$device" | cut -d'/' -f3) + + [ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') + + if [ -n "$ifname" ]; then + if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then + tc qdisc del dev ${ifname} root netem + fi + if [ "$addlatency" != "0" ]; then + if [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then + tc qdisc add dev ${ifname} root netem delay ${addlatency}ms + elif [ "$(tc qdisc show dev $ifname | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then + tc qdisc replace dev ${ifname} root netem delay ${addlatency}ms + fi + fi + fi + } start_service() { From 13eb40242c41ecd985480289f8c1f39339d4be61 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 10:08:54 +0100 Subject: [PATCH 067/137] Fix shadowsocks tracker --- omr-tracker/files/bin/omr-tracker-ss | 6 +++--- omr-tracker/files/etc/init.d/omr-tracker | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index e5a2e5ca8..9a7234c93 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -66,9 +66,9 @@ while true; do } if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then nocontact="" - [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_$[name})" = "" ] && { + [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_${server})" = "" ] && { _log "Shadowsocks is up (can contact via http ${host})" - uci -q set openmptcprouter.omr.ss_${name}="up" + uci -q set openmptcprouter.omr.ss_${server}="up" uci -q commit openmptcprouter.omr } if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then @@ -84,7 +84,7 @@ while true; do [ "${last}" -ge "${retry}" ] && { if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then _log "Shadowsocks is down (can't contact via http ${nocontact})" - uci -q set openmptcprouter.omr.ss_${name}="down" + uci -q set openmptcprouter.omr.ss_${server}="down" uci -q commit openmptcprouter.omr [ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null _get_ip diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index fa4e4d265..77765c19c 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -133,6 +133,9 @@ _launch_gre_tracker() { _initialize_shadowsocks_tracker() { local redir_tcp server tracker_server server=$1 + + [ -n "$(echo $server | grep sss)" ] || return + #redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp) #config_get tracker_server ss_rules server config_get ss_disabled $server disabled 0 From 43fad987993c69612e0b0b80c912504b211c5226 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 10:09:51 +0100 Subject: [PATCH 068/137] Fix API contact --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 49d0b5f29..19a7d68bb 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -22,6 +22,7 @@ _login() { username="$(uci -q get openmptcprouter.${servername}.username)" password="$(uci -q get openmptcprouter.${servername}.password)" serverport="$(uci -q get openmptcprouter.${servername}.port)" + #[ -z "$server" ] && server="$(uci -q get openmptcprouter.${servername}.ip)" if [ -z "$token" ]; then login_on_server() { server=$1 @@ -37,6 +38,7 @@ _login() { token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" uci -q set openmptcprouter.${servername}.token="$token" } + config_load openmptcprouter config_list_foreach ${servername} ip login_on_server fi } From becf56df854590ab67265c7d7d4d171683b68638 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 16:42:49 +0100 Subject: [PATCH 069/137] Fix issue when VPS have multiples IPs and IPs are redirected to multiples LAN IP --- shadowsocks-libev/files/ss-rules | 46 ++++++++++++------------- shadowsocks-libev/files/ss-rules6 | 48 +++++++++++++-------------- v2ray-core/files/usr/bin/v2ray-rules | 44 ++++++++++++------------ v2ray-core/files/usr/bin/v2ray-rules6 | 40 +++++++++++----------- 4 files changed, 89 insertions(+), 89 deletions(-) diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 732d9d620..74373efc3 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -125,28 +125,28 @@ ss_rules_flush() { iptables-save --counters | grep -v ssr_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules_"); do + for setname in $(ipset -n list | grep "ssr_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules_ipset_init() { ipset --exist restore <<-EOF - create ss_rules_src_bypass hash:net hashsize 64 - create ss_rules_src_forward hash:net hashsize 64 - create ss_rules_src_checkdst hash:net hashsize 64 - create ss_rules_dst_bypass_all hash:net hashsize 64 - create ss_rules_dst_bypass hash:net hashsize 64 - create ss_rules_dst_bypass_ hash:net hashsize 64 - create ss_rules_dst_forward hash:net hashsize 64 + create ssr_${rule}_src_bypass hash:net hashsize 64 + create ssr_${rule}_src_forward hash:net hashsize 64 + create ssr_${rule}_src_checkdst hash:net hashsize 64 + create ssr_rules_dst_bypass_all hash:net hashsize 64 + create ssr_${rule}_dst_bypass hash:net hashsize 64 + create ssr_${rule}_dst_bypass_ hash:net hashsize 64 + create ssr_${rule}_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(ss_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(ss_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(ss_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") - $(ss_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") - $(ss_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") - $(ss_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") + $(ss_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") + $(ss_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -192,9 +192,9 @@ ss_rules_iptchains_init_tcp() { *nat :ssr_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -250,19 +250,19 @@ ss_rules_iptchains_init_() { :ssr_${rule}_dst - :ssr_${rule}_forward - $(ss_rules_iptchains_mkprerules "$proto") - -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src - -A ssr_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN - -A ssr_${rule}_src -m set --match-set ss_rules_src_forward src -j ssr_${rule}_forward - -A ssr_${rule}_src -m set --match-set ss_rules_src_checkdst src -j ssr_${rule}_dst + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j ssr_${rule}_forward + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j ssr_${rule}_dst -A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j ssr_${rule}_forward + -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j ssr_${rule}_forward $recentrst_addset_rules -A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index 1c25b43bf..c114dc268 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -108,28 +108,28 @@ ss_rules6_flush() { ip6tables-save --counters | grep -v ssr6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules6_"); do + for setname in $(ipset -n list | grep "ssr6_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules6_ipset_init() { ipset --exist restore <<-EOF - create ss_rules6_src_bypass hash:net family inet6 hashsize 64 - create ss_rules6_src_forward hash:net family inet6 hashsize 64 - create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") - $(ss_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") - $(ss_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") - $(ss_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -174,9 +174,9 @@ ss_rules6_iptchains_init_tcp() { *nat :ssr6_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_all dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -232,19 +232,19 @@ ss_rules6_iptchains_init_() { :ssr6_${rule}_dst - :ssr6_${rule}_forward - $(ss_rules6_iptchains_mkprerules "$proto") - -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_forward src -j ssr6_${rule}_forward - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j ssr6_${rule}_dst + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j ssr6_${rule}_forward + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j ssr6_${rule}_dst -A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j ssr6_${rule}_forward + -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j ssr6_${rule}_forward $recentrst_addset_rules -A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/usr/bin/v2ray-rules b/v2ray-core/files/usr/bin/v2ray-rules index 2d6642274..a43b19be7 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules +++ b/v2ray-core/files/usr/bin/v2ray-rules @@ -125,28 +125,28 @@ v2r_rules_flush() { iptables-save --counters | grep -v v2r_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules_"); do + for setname in $(ipset -n list | grep "ssr_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } v2r_rules_ipset_init() { ipset --exist restore <<-EOF - create ss_rules_src_bypass hash:net hashsize 64 - create ss_rules_src_forward hash:net hashsize 64 - create ss_rules_src_checkdst hash:net hashsize 64 + create ssr_${rule}_src_bypass hash:net hashsize 64 + create ssr_${rule}_src_forward hash:net hashsize 64 + create ssr_${rule}_src_checkdst hash:net hashsize 64 create ss_rules_dst_bypass_all hash:net hashsize 64 - create ss_rules_dst_bypass hash:net hashsize 64 - create ss_rules_dst_bypass_ hash:net hashsize 64 - create ss_rules_dst_forward hash:net hashsize 64 + create ssr_${rule}_dst_bypass hash:net hashsize 64 + create ssr_${rule}_dst_bypass_ hash:net hashsize 64 + create ssr_${rule}_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(v2r_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(v2r_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") - $(v2r_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") - $(v2r_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") - $(v2r_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -192,9 +192,9 @@ v2r_rules_iptchains_init_tcp() { *nat :v2r_${rule}_local_out - -I OUTPUT 1 -p tcp -j v2r_${rule}_local_out - -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A v2r_${rule}_local_out -m mark --mark 0x539 -j RETURN -A v2r_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -250,19 +250,19 @@ v2r_rules_iptchains_init_() { :v2r_${rule}_dst - :v2r_${rule}_forward - $(v2r_rules_iptchains_mkprerules "$proto") - -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -p $proto $o_ipt_extra -j v2r_${rule}_src - -A v2r_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN - -A v2r_${rule}_src -m set --match-set ss_rules_src_forward src -j v2r_${rule}_forward - -A v2r_${rule}_src -m set --match-set ss_rules_src_checkdst src -j v2r_${rule}_dst + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j v2r_${rule}_forward + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j v2r_${rule}_dst -A v2r_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j v2r_${rule}_forward + -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j v2r_${rule}_forward $recentrst_addset_rules -A v2r_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/usr/bin/v2ray-rules6 b/v2ray-core/files/usr/bin/v2ray-rules6 index 14f51e5dd..b05c70c59 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules6 +++ b/v2ray-core/files/usr/bin/v2ray-rules6 @@ -108,28 +108,28 @@ v2ray_rules6_flush() { ip6tables-save --counters | grep -v v2r6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules6_"); do + for setname in $(ipset -n list | grep "ssr6_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } v2ray_rules6_ipset_init() { ipset --exist restore <<-EOF - create ss_rules6_src_bypass hash:net family inet6 hashsize 64 - create ss_rules6_src_forward hash:net family inet6 hashsize 64 - create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -240,20 +240,20 @@ v2ray_rules6_iptchains_init_() { :v2r6_${rule}_forward - $(v2ray_rules6_iptchains_mkprerules "udp") $(v2ray_rules6_iptchains_mkprerules "tcp") - -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -p tcp $o_ipt_extra -j v2r6_${rule}_src -A v2r6_${rule}_pre_src -p udp $o_ipt_extra -j v2r6_${rule}_src - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_forward src -j v2r6_${rule}_forward - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j v2r6_${rule}_dst + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j v2r6_${rule}_forward + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j v2r6_${rule}_dst -A v2r6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j v2r6_${rule}_forward + -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j v2r6_${rule}_forward $recentrst_addset_rules -A v2r6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules From a0da499c105c71960b014d36ade9fc5167d7803d Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 16:43:15 +0100 Subject: [PATCH 070/137] Display IPv6 in status only when gateway exist --- .../luasrc/view/openmptcprouter/wanstatus.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index cff1dbac6..1aa626cd5 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -469,7 +469,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } - if(ip6addr !== '') + if(ip6addr !== '' && gateway6 != '') { content += String.format('%s %s
    ','<%:ipv6 address:%>', ip6addr); } @@ -477,7 +477,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:wan address:%>', wanip); } - if(wanip6 !== '' && gateway6 != '') + if(wanip6 !== '') { content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); } From b0e38240cc83d4f40f084d51344511d4b0787fe4 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 27 Jan 2021 18:18:50 +0100 Subject: [PATCH 071/137] Fix shadowsocks iptables rules --- .../files/shadowsocks-libev.init | 5 ++++ shadowsocks-libev/files/ss-rules | 29 ++++++++++--------- shadowsocks-libev/files/ss-rules6 | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 7c3056747..9e15c6241 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -1,6 +1,7 @@ #!/bin/sh /etc/rc.common # # Copyright (C) 2017-2019 Yousong Zhou +# Copyright (C) 2019-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. @@ -314,6 +315,10 @@ stop_service() { rm -rf "$ss_confdir" } +reload_service() { + restart "$@" +} + rules_exist() { [ -n "$(iptables -t nat -L -n | grep ssr)" ] && return 0 return 1 diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 74373efc3..396de706d 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # @@ -135,7 +135,7 @@ ss_rules_ipset_init() { create ssr_${rule}_src_bypass hash:net hashsize 64 create ssr_${rule}_src_forward hash:net hashsize 64 create ssr_${rule}_src_checkdst hash:net hashsize 64 - create ssr_rules_dst_bypass_all hash:net hashsize 64 + create ss_rules_dst_bypass_all hash:net hashsize 64 create ssr_${rule}_dst_bypass hash:net hashsize 64 create ssr_${rule}_dst_bypass_ hash:net hashsize 64 create ssr_${rule}_dst_forward hash:net hashsize 64 @@ -187,18 +187,19 @@ ss_rules_iptchains_init_tcp() { forward) local_target=ssr_${rule}_forward ;; bypass|*) return 0;; esac - - iptables-restore -w --noflush <<-EOF - *nat - :ssr_${rule}_local_out - - -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN - -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN - -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" - COMMIT - EOF + if [ "$(iptables -t nat -L ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then + iptables-restore -w --noflush <<-EOF + *nat + :ssr_${rule}_local_out - + -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN + -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN + -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" + COMMIT + EOF + fi } ss_rules_iptchains_init_udp() { diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index c114dc268..84d04beb5 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # From 35e7190c47a0a26f41b8c4a8bbff713a280f33fa Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 16:42:49 +0100 Subject: [PATCH 072/137] Fix issue when VPS have multiples IPs and IPs are redirected to multiples LAN IP --- shadowsocks-libev/files/ss-rules | 46 ++++++++++++------------- shadowsocks-libev/files/ss-rules6 | 48 +++++++++++++-------------- v2ray-core/files/usr/bin/v2ray-rules | 44 ++++++++++++------------ v2ray-core/files/usr/bin/v2ray-rules6 | 40 +++++++++++----------- 4 files changed, 89 insertions(+), 89 deletions(-) diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 732d9d620..74373efc3 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -125,28 +125,28 @@ ss_rules_flush() { iptables-save --counters | grep -v ssr_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules_"); do + for setname in $(ipset -n list | grep "ssr_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules_ipset_init() { ipset --exist restore <<-EOF - create ss_rules_src_bypass hash:net hashsize 64 - create ss_rules_src_forward hash:net hashsize 64 - create ss_rules_src_checkdst hash:net hashsize 64 - create ss_rules_dst_bypass_all hash:net hashsize 64 - create ss_rules_dst_bypass hash:net hashsize 64 - create ss_rules_dst_bypass_ hash:net hashsize 64 - create ss_rules_dst_forward hash:net hashsize 64 + create ssr_${rule}_src_bypass hash:net hashsize 64 + create ssr_${rule}_src_forward hash:net hashsize 64 + create ssr_${rule}_src_checkdst hash:net hashsize 64 + create ssr_rules_dst_bypass_all hash:net hashsize 64 + create ssr_${rule}_dst_bypass hash:net hashsize 64 + create ssr_${rule}_dst_bypass_ hash:net hashsize 64 + create ssr_${rule}_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(ss_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(ss_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(ss_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") - $(ss_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") - $(ss_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") - $(ss_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") + $(ss_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") + $(ss_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") + $(ss_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -192,9 +192,9 @@ ss_rules_iptchains_init_tcp() { *nat :ssr_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -250,19 +250,19 @@ ss_rules_iptchains_init_() { :ssr_${rule}_dst - :ssr_${rule}_forward - $(ss_rules_iptchains_mkprerules "$proto") - -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src - -A ssr_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN - -A ssr_${rule}_src -m set --match-set ss_rules_src_forward src -j ssr_${rule}_forward - -A ssr_${rule}_src -m set --match-set ss_rules_src_checkdst src -j ssr_${rule}_dst + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j ssr_${rule}_forward + -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j ssr_${rule}_dst -A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j ssr_${rule}_forward + -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j ssr_${rule}_forward $recentrst_addset_rules -A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index 1c25b43bf..c114dc268 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -108,28 +108,28 @@ ss_rules6_flush() { ip6tables-save --counters | grep -v ssr6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules6_"); do + for setname in $(ipset -n list | grep "ssr6_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules6_ipset_init() { ipset --exist restore <<-EOF - create ss_rules6_src_bypass hash:net family inet6 hashsize 64 - create ss_rules6_src_forward hash:net family inet6 hashsize 64 - create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") - $(ss_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") - $(ss_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") - $(ss_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") + $(ss_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") + $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -174,9 +174,9 @@ ss_rules6_iptchains_init_tcp() { *nat :ssr6_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_all dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -232,19 +232,19 @@ ss_rules6_iptchains_init_() { :ssr6_${rule}_dst - :ssr6_${rule}_forward - $(ss_rules6_iptchains_mkprerules "$proto") - -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_forward src -j ssr6_${rule}_forward - -A ssr6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j ssr6_${rule}_dst + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j ssr6_${rule}_forward + -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j ssr6_${rule}_dst -A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j ssr6_${rule}_forward + -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j ssr6_${rule}_forward $recentrst_addset_rules -A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/usr/bin/v2ray-rules b/v2ray-core/files/usr/bin/v2ray-rules index 2d6642274..a43b19be7 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules +++ b/v2ray-core/files/usr/bin/v2ray-rules @@ -125,28 +125,28 @@ v2r_rules_flush() { iptables-save --counters | grep -v v2r_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules_"); do + for setname in $(ipset -n list | grep "ssr_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } v2r_rules_ipset_init() { ipset --exist restore <<-EOF - create ss_rules_src_bypass hash:net hashsize 64 - create ss_rules_src_forward hash:net hashsize 64 - create ss_rules_src_checkdst hash:net hashsize 64 + create ssr_${rule}_src_bypass hash:net hashsize 64 + create ssr_${rule}_src_forward hash:net hashsize 64 + create ssr_${rule}_src_checkdst hash:net hashsize 64 create ss_rules_dst_bypass_all hash:net hashsize 64 - create ss_rules_dst_bypass hash:net hashsize 64 - create ss_rules_dst_bypass_ hash:net hashsize 64 - create ss_rules_dst_forward hash:net hashsize 64 + create ssr_${rule}_dst_bypass hash:net hashsize 64 + create ssr_${rule}_dst_bypass_ hash:net hashsize 64 + create ssr_${rule}_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(v2r_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(v2r_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") - $(v2r_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") - $(v2r_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") - $(v2r_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") + $(v2r_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") + $(v2r_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -192,9 +192,9 @@ v2r_rules_iptchains_init_tcp() { *nat :v2r_${rule}_local_out - -I OUTPUT 1 -p tcp -j v2r_${rule}_local_out - -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A v2r_${rule}_local_out -m mark --mark 0x539 -j RETURN -A v2r_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -250,19 +250,19 @@ v2r_rules_iptchains_init_() { :v2r_${rule}_dst - :v2r_${rule}_forward - $(v2r_rules_iptchains_mkprerules "$proto") - -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -p $proto $o_ipt_extra -j v2r_${rule}_src - -A v2r_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN - -A v2r_${rule}_src -m set --match-set ss_rules_src_forward src -j v2r_${rule}_forward - -A v2r_${rule}_src -m set --match-set ss_rules_src_checkdst src -j v2r_${rule}_dst + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j v2r_${rule}_forward + -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j v2r_${rule}_dst -A v2r_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j v2r_${rule}_forward + -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j v2r_${rule}_forward $recentrst_addset_rules -A v2r_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/usr/bin/v2ray-rules6 b/v2ray-core/files/usr/bin/v2ray-rules6 index 14f51e5dd..b05c70c59 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules6 +++ b/v2ray-core/files/usr/bin/v2ray-rules6 @@ -108,28 +108,28 @@ v2ray_rules6_flush() { ip6tables-save --counters | grep -v v2r6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ss_rules6_"); do + for setname in $(ipset -n list | grep "ssr6_${rule}"); do ipset destroy "$setname" 2>/dev/null || true done } v2ray_rules6_ipset_init() { ipset --exist restore <<-EOF - create ss_rules6_src_bypass hash:net family inet6 hashsize 64 - create ss_rules6_src_forward hash:net family inet6 hashsize 64 - create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 - create ss_rules6_dst_forward hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 + create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") - $(v2ray_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") - $(v2ray_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") + $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -240,20 +240,20 @@ v2ray_rules6_iptchains_init_() { :v2r6_${rule}_forward - $(v2ray_rules6_iptchains_mkprerules "udp") $(v2ray_rules6_iptchains_mkprerules "tcp") - -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN + -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -p tcp $o_ipt_extra -j v2r6_${rule}_src -A v2r6_${rule}_pre_src -p udp $o_ipt_extra -j v2r6_${rule}_src - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_forward src -j v2r6_${rule}_forward - -A v2r6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j v2r6_${rule}_dst + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j v2r6_${rule}_forward + -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j v2r6_${rule}_dst -A v2r6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j v2r6_${rule}_forward + -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j v2r6_${rule}_forward $recentrst_addset_rules -A v2r6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules From 208e80fb6b3bc9824f059a17e0f0b7025de5b18c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 25 Jan 2021 16:43:15 +0100 Subject: [PATCH 073/137] Display IPv6 in status only when gateway exist --- .../luasrc/view/openmptcprouter/wanstatus.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index cff1dbac6..1aa626cd5 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -469,7 +469,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } - if(ip6addr !== '') + if(ip6addr !== '' && gateway6 != '') { content += String.format('%s %s
    ','<%:ipv6 address:%>', ip6addr); } @@ -477,7 +477,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:wan address:%>', wanip); } - if(wanip6 !== '' && gateway6 != '') + if(wanip6 !== '') { content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); } From e3a0ce9cd5ce59f00636d5d8865fe83c4a349169 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 27 Jan 2021 18:18:50 +0100 Subject: [PATCH 074/137] Fix shadowsocks iptables rules --- .../files/shadowsocks-libev.init | 5 ++++ shadowsocks-libev/files/ss-rules | 29 ++++++++++--------- shadowsocks-libev/files/ss-rules6 | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 7c3056747..9e15c6241 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -1,6 +1,7 @@ #!/bin/sh /etc/rc.common # # Copyright (C) 2017-2019 Yousong Zhou +# Copyright (C) 2019-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. @@ -314,6 +315,10 @@ stop_service() { rm -rf "$ss_confdir" } +reload_service() { + restart "$@" +} + rules_exist() { [ -n "$(iptables -t nat -L -n | grep ssr)" ] && return 0 return 1 diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 74373efc3..396de706d 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # @@ -135,7 +135,7 @@ ss_rules_ipset_init() { create ssr_${rule}_src_bypass hash:net hashsize 64 create ssr_${rule}_src_forward hash:net hashsize 64 create ssr_${rule}_src_checkdst hash:net hashsize 64 - create ssr_rules_dst_bypass_all hash:net hashsize 64 + create ss_rules_dst_bypass_all hash:net hashsize 64 create ssr_${rule}_dst_bypass hash:net hashsize 64 create ssr_${rule}_dst_bypass_ hash:net hashsize 64 create ssr_${rule}_dst_forward hash:net hashsize 64 @@ -187,18 +187,19 @@ ss_rules_iptchains_init_tcp() { forward) local_target=ssr_${rule}_forward ;; bypass|*) return 0;; esac - - iptables-restore -w --noflush <<-EOF - *nat - :ssr_${rule}_local_out - - -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN - -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN - -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" - COMMIT - EOF + if [ "$(iptables -t nat -L ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then + iptables-restore -w --noflush <<-EOF + *nat + :ssr_${rule}_local_out - + -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN + -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN + -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" + COMMIT + EOF + fi } ss_rules_iptchains_init_udp() { diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index c114dc268..84d04beb5 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # From df1f5a791591115b98f19e2c24934804d4709f95 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:41:36 +0100 Subject: [PATCH 075/137] Fix omr-bypass with vlan --- .../root/etc/init.d/omr-bypass | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 592d875ac..82a1e68f5 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -50,7 +50,8 @@ _bypass_domains() { _bypass_domain() { local domain=$1 local intf=$2 - + intf=$(echo $intf | sed -e 's/\./_/') + [ -z "$intf" ] && intf="all" if [ -n "$domain" ]; then domain=$(echo $domain | sed 's:^\.::') @@ -68,7 +69,7 @@ _bypass_domain() { fi fi if [ "$(uci -q get dhcp.@dnsmasq[0].ipset | grep /$domain/)" = "" ]; then - uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intf,omr6_dst_bypass_$intf" + uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intfuci,omr6_dst_bypass_$intf" else dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g') for dnsipset in $dnsmasqipset; do @@ -90,8 +91,8 @@ _bypass_mac() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intfuci=$(echo $intf | sed 's/\./_/') - local intfid="$(uci -q get omr-bypass.$intfuci.id)" + intf=$(echo $intf | sed -e 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" [ -z "$mac" ] && return @@ -132,8 +133,8 @@ _bypass_lan_ip() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intfuci=$(echo $intf | sed 's/\./_/') - local intfid="$(uci -q get omr-bypass.$intfuci.id)" + intf=$(echo $intf | sed -e 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" [ -z "$ip" ] && return @@ -190,8 +191,8 @@ _bypass_dest_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intfuci=$(echo $intf | sed 's/\./_/') - local intfid="$(uci -q get omr-bypass.$intfuci.id)" + intf=$(echo $intf | sed -e 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" [ -z "$dport" ] && return @@ -246,8 +247,8 @@ _bypass_src_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intfuci=$(echo $intf | sed 's/\./_/') - local intfid="$(uci -q get omr-bypass.$intfuci.id)" + intf=$(echo $intf | sed -e 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" [ -z "$sport" ] && return @@ -300,8 +301,8 @@ _bypass_proto() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intfuci=$(echo $intf | sed 's/\./_/') - local intfid="$(uci -q get omr-bypass.$intfuci.id)" + intf=$(echo $intf | sed -e 's/\./_/') + local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" [ -z "$proto" ] && return @@ -459,6 +460,7 @@ _intf_rule() { #[ "$mode" = "off" ] && return [ -z "$count" ] && return [ -z "$intf" ] && return + intf=$(echo $intf | sed -e 's/\./_/') [ "$(echo $1 | grep _dev)" != "" ] && return [ -z "$RELOAD" ] || [ "$(ipset --list | grep omr_dst_bypass_$intf)" = "" ] && { unset RELOAD @@ -498,9 +500,8 @@ _intf_rule() { config_foreach _intf_rule_ss_rules ss_rules _intf_rule_v2ray_rules - intfuci=$(echo $intf | sed 's/\./_/') - uci -q set omr-bypass.$intfuci=interface - uci -q set omr-bypass.$intfuci.id=$count + uci -q set omr-bypass.$intf=interface + uci -q set omr-bypass.$intf.id=$count } _bypass_ip_set() { From 1518776a8be6f8ffc5b9c6cb53e187518c0f55a2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:42:01 +0100 Subject: [PATCH 076/137] Fix typo --- .../luasrc/view/openmptcprouter/settings.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index c23724f44..7ae4100b4 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -255,7 +255,7 @@
    - +
    checked<% end %>>
    From 4f6b1d263eb9970ff5798e6e09084e45f467f7c6 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:43:01 +0100 Subject: [PATCH 077/137] Support 2 IPs on server --- .../luasrc/controller/openmptcprouter.lua | 54 +++++++++++++++---- .../luasrc/view/openmptcprouter/wizard.htm | 26 +++++++-- 2 files changed, 68 insertions(+), 12 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 29ec07420..62974d55b 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -66,7 +66,8 @@ function wizard_add() ucic:foreach("openmptcprouter", "server", function(s) local servername = s[".name"] nbserver = nbserver + 1 - server_ip = ucic:get("openmptcprouter",servername,"ip") + server_ips = ucic:get_list("openmptcprouter",servername,"ip") + server_ip = server_ips[1] end) if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then ucic:set("shadowsocks-libev","sss0","server",server_ip) @@ -425,8 +426,14 @@ function wizard_add() local disablednb = 0 local servers = luci.http.formvaluetable("server") for server, _ in pairs(servers) do - local server_ip = {} - server_ip[1] = luci.http.formvalue("%s.server_ip" % server) or "" + local serverips = luci.http.formvaluetable("%s.serverip" % server) or {} + local aserverips = {} + for _, ip in pairs(serverips) do + if ip ~= "" and ip ~= nil then + table.insert(aserverips,ip) + end + end + local master = luci.http.formvalue("master") or "" -- OpenMPTCProuter VPS @@ -447,14 +454,14 @@ function wizard_add() if openmptcprouter_vps_disabled == "1" then disablednb = disablednb + 1 end - if server_ip[1] ~= "" then + if next(aserverips) ~= nil then 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,"disabled",openmptcprouter_vps_disabled) - ucic:set_list("openmptcprouter",server,"ip",server_ip) + ucic:set_list("openmptcprouter",server,"ip",aserverips) ucic:set("openmptcprouter",server,"port","65500") ucic:save("openmptcprouter") end @@ -488,6 +495,13 @@ function wizard_add() ucic:save("shadowsocks-libev") ucic:save("v2ray") + ucic:foreach("shadowsocks-libev","server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") then + ucic:delete("shadowsocks-libev",sectionname,"ip") + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end + end) local ss_servers_nginx = {} local ss_servers_ha = {} @@ -497,14 +511,20 @@ function wizard_add() for server, _ in pairs(servers) do local master = luci.http.formvalue("master") or "" - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local server_ips = luci.http.formvaluetable("%s.serverip" % server) or {} + local server_ip = "" + for _, ip in pairs(server_ips) do + if server_ip == "" and ip ~= "" and ip ~= nil then + server_ip=ip + end + end -- We have an IP, so set it everywhere - if server_ip ~= "" and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then + if server_ip ~= "" and server_ip ~= nil and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then -- Check if we have more than one IP, in this case use Nginx HA if serversnb > 1 then if master == server then ss_ip=server_ip - ucic:set("shadowsocks-libev","sss0","server",server_ip) + --ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -516,6 +536,14 @@ function wizard_add() luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + end end k = k + 1 ucic:set("nginx-ha","ShadowSocks","enable","0") @@ -526,7 +554,7 @@ function wizard_add() ucic:set("openmptcprouter","settings","ha","0") ucic:set("nginx-ha","ShadowSocks","enable","0") ucic:set("nginx-ha","VPN","enable","0") - ucic:set("shadowsocks-libev","sss0","server",server_ip) + --ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -538,6 +566,14 @@ function wizard_add() luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + end end end end diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 89da6bc85..d966771d9 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -55,9 +55,19 @@

    <%=servername%>

    - +
    - " data-optional="false"> + " data-optional="false"> +
    + <%:Server IP will be set for proxy and VPN%> +
    +
    +
    +
    +
    + +
    + " data-optional="false">
    <%:Server IP will be set for proxy and VPN%>
    @@ -147,7 +157,10 @@
    - checked<% end %> /> +
    <%:You should disable IPv6 here if server doesn't provide IPv6.%> @@ -874,6 +887,13 @@ if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*")) and device_notvirtual(ifacea) then %> + <% + end + end + for _, ifacea in ipairs(net:get_networks()) do + if not (ifacea:name() == "loopback" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then + %> + <% end end From ea850cea047c99cdec43954b183e4a0c4f367230 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:43:31 +0100 Subject: [PATCH 078/137] Support alias interfaces --- .../root/usr/libexec/rpcd/openmptcprouter | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index 9f88a0cc4..b80a81a7d 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -1115,6 +1115,7 @@ function interfaces_status() local gateway6 = section["ip6gw"] or "" local multipath = section["multipath"] local enabled = section["auto"] + local proto = section["proto"] or "" --if not ipaddr or not gateway then return end -- Don't show if0 in the overview @@ -1130,7 +1131,7 @@ function interfaces_status() duplicateif = false if ifname ~= "" and ifname ~= nil then - if allintf[ifname] then + if allintf[ifname] and not section["ifname"]:match("^@.*") then connectivity = "ERROR" duplicateif = true else @@ -1144,10 +1145,10 @@ function interfaces_status() if enabled == "0" then return end local connectivity = "OK" - if ipaddr == "" and ifname ~= nil and ifname ~= "" then + if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then ipaddr = ut.trim(sys.exec("ip -4 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) end - if ipaddr == "" and ifname ~= nil and ifname ~= "" then + if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) end if ip6addr == "" and ifname ~= nil and ifname ~= "" then @@ -1195,14 +1196,16 @@ function interfaces_status() local gw_ping = "UP" local gw_ping6 = "UP" if ifname ~= nil and not (ifname:match("^tun.*") or interface:match("^ovpn.*")) then - gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + if proto ~= "dhcpv6" then + gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + end gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) end - if gateway == "" then + if gateway == "" and proto ~= "dhcpv6" then gateway = get_gateway(interface) end - if gateway == "" and ifname ~= nil and ifname ~= "" then + if gateway == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then if fs.access("/sys/class/net/" .. ifname) then gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) if gateway == "" then @@ -1263,7 +1266,7 @@ function interfaces_status() end if ifname ~= "" and ifname ~= nil then - local proto = section['proto'] + --local proto = section['proto'] if proto == "qmi" then local device = section['device'] intfdata = ut.trim(sys.exec("omr-qmi " .. device .. " all")) @@ -1438,6 +1441,7 @@ function interfaces_status() phonenumber = phonenumber, donglestate = donglestate, networktype = networktype, + proto = proto, rx = rx, tx = tx, } From e05f1b8e02b1e2f494b282cd2fbad359f1ab1eef Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:44:10 +0100 Subject: [PATCH 079/137] Update ndpi netfiler2 --- ndpi-netfilter2/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ndpi-netfilter2/Makefile b/ndpi-netfilter2/Makefile index 9f04c4e87..b74ed75c1 100644 --- a/ndpi-netfilter2/Makefile +++ b/ndpi-netfilter2/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ndpi-netfilter2 -PKG_RELEASE:=2 -PKG_REV:=0a03249da911f4033fd2a0d38a97cdba72eee2b6 +PKG_RELEASE:=3 +PKG_REV:=25a5c2e1d619aa2d819b18bed8276b3bd7eb4c5b PKG_VERSION:=3.2-$(PKG_REV) PKG_SOURCE_PROTO:=git From 6ab5f128a943fb2e19c44618314bc17bf8b7b142 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:44:38 +0100 Subject: [PATCH 080/137] Support multi servers with glorytun UDP --- .../share/omr/post-tracking.d/post-tracking | 86 +++++++++++-------- 1 file changed, 48 insertions(+), 38 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index a8ce3ed18..9c51d7b7c 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -891,45 +891,55 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then if [ "$(uci -q show | grep mptcpr)" = "" ]; then touch /etc/config/openmptcprouter fi - gtudpst="up" - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" - if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then - if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + glorytunudppath() { + gtudp_port="$(uci -q get glorytun-udp.vpn.port)" + gtudp_dev="$(uci -q get glorytun-udp.vpn.dev)" + addpath() { + serverip=$1 + #gtudpst="up" + #[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" + if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] && [ -n "$(resolveip -4 $serverip)" ]; then + if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + fi + else + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + fi + fi fi - else - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ] && [ -n "$(resolveip -6 $serverip)" ]; then + if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 + fi + else + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 + fi + fi fi - fi - fi - if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ]; then - if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - fi - else - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - fi - fi - fi -# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then -# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 -# fi - [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && { - [ -n "$OMR_TRACKER_DEVICE_IP" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1 - [ -n "$OMR_TRACKER_DEVICE_IP6" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set pref 125 > /dev/null 2>&1 +# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then +# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 + # fi + [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && { + [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$(resolveip -4 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1 + [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$(resolveip -6 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1 + } + } + config_list_foreach $1 ip addpath } + config_load openmptcprouter + config_foreach glorytunudppath server fi [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && { [ "$multipath_status" = "$multipath_config" ] || { @@ -1230,7 +1240,7 @@ if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then sleep 5 fi -if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ]; then +if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then _log "Can't find omr-tracker-v2ray, restart omr-tracker..." /etc/init.d/omr-tracker restart fi @@ -1246,7 +1256,7 @@ if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get uci -q commit openmptcprouter fi -if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ]; then +if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then _log "Can't find omr-tracker-ss, restart omr-tracker..." /etc/init.d/omr-tracker restart fi From afcb30eb2d23c0d21e672fa686ad85f605250ace Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:45:45 +0100 Subject: [PATCH 081/137] Set public IP for uPnP --- omr-tracker/files/bin/omr-tracker-ss | 7 ++++++- omr-tracker/files/bin/omr-tracker-v2ray | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index 9a7234c93..be0074b01 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -27,7 +27,12 @@ _get_ip() { [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" - uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" + public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" + uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}" + [ -n "$public_ipv4" ] && { + uci -q set upnpd.config.external_ip="${public_ipv4}" + uci -q commit upnpd + } if [ "$(uci -q get openmptcprouter.omr.shadowsocks)" != "down" ]; then uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" else diff --git a/omr-tracker/files/bin/omr-tracker-v2ray b/omr-tracker/files/bin/omr-tracker-v2ray index 32ef73c6b..e8e0dcffe 100755 --- a/omr-tracker/files/bin/omr-tracker-v2ray +++ b/omr-tracker/files/bin/omr-tracker-v2ray @@ -27,7 +27,12 @@ _get_ip() { [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" - uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" + public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" + uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}" + [ -n "${public_ipv4}" ] && { + uci -q set upnpd.config.external_ip="${public_ipv4}" + uci -q commit upnpd + } if [ "$(uci -q get openmptcprouter.omr.v2ray)" != "down" ]; then uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" else From 07afc6ce8e80557b0c97f88883de53750cfdc8fa Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:46:36 +0100 Subject: [PATCH 082/137] Support multiples IPs on server for MPTCPoverVPN and OpenVPN Bonding --- openmptcprouter/files/etc/init.d/mptcpovervpn | 6 +++--- openmptcprouter/files/etc/init.d/openvpnbonding | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/mptcpovervpn b/openmptcprouter/files/etc/init.d/mptcpovervpn index 870148e5b..a2f7d97e4 100755 --- a/openmptcprouter/files/etc/init.d/mptcpovervpn +++ b/openmptcprouter/files/etc/init.d/mptcpovervpn @@ -9,7 +9,7 @@ } _getremoteip() { - [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip) + [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}') } mptcp_over_vpn() { @@ -139,8 +139,8 @@ start_service() elif [ "$(uci -q get glorytun.vpn.host)" = "10.255.250.1" ] && [ "$nbintf" != "$nbintfvpn" ]; then uci -q batch <<-EOF >/dev/null delete shadowsocks-libev.sss0.disabled - set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip)" - set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip)" + set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')" + set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')" commit glorytun commit glorytun-udp EOF diff --git a/openmptcprouter/files/etc/init.d/openvpnbonding b/openmptcprouter/files/etc/init.d/openvpnbonding index d36eeb584..87dfdf483 100755 --- a/openmptcprouter/files/etc/init.d/openvpnbonding +++ b/openmptcprouter/files/etc/init.d/openvpnbonding @@ -9,7 +9,7 @@ } _getremoteip() { - [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip) + [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}') } _openvpnbonding() { From 58eb27a3440b9db5d57db6dd6940f9836da696ed Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 28 Jan 2021 20:47:14 +0100 Subject: [PATCH 083/137] Fix on openmptcprouter-vps with multiples IPs --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 19a7d68bb..853891f9d 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -362,10 +362,11 @@ _get_vps_config() { fi fi fi - vpsip="$(uci -q get openmptcprouter.${servername}.ip)" + vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')" if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then config_foreach _set_ss_server server "server" $vpsip uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.sss0.server="$vpsip" commit shadowsocks-libev EOF if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" = "0" ]; then @@ -1033,7 +1034,9 @@ _set_ss_server() { elif [ "$value" = "false" ]; then value=0 fi - [ "$(echo $1 | grep omr)" != "" ] && uci -q set shadowsocks-libev.$1.$option=$value + if [ "$(echo $1 | grep omr)" != "" ] || [ "$(echo $1 | grep sss)" ]; then + uci -q set shadowsocks-libev.$1.$option=$value + fi } _set_config_from_vps() { @@ -1044,7 +1047,7 @@ _set_config_from_vps() { logger -t "OMR-VPS" "Get config from server ${servername}..." noerror=1 # get VPS ip - vpsip="$(uci -q get openmptcprouter.${servername}.ip)" + vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')" vps_lastchange="$(echo "$vps_config" | jsonfilter -q -e '@.vps.lastchange')" lastchange="$(uci -q get openmptcprouter.${servername}.lastchange)" [ -z "$lastchange" ] && lastchange=0 From 6a9ec1d08cf728ab56af64e9a6451cb34b487871 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 10:50:57 +0100 Subject: [PATCH 084/137] Display ipv6 parameters only if IPv6 is enabled --- .../luasrc/view/openmptcprouter/wizard.htm | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index d966771d9..e1fb06c4c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -57,19 +57,13 @@
    - " data-optional="false"> + " data-optional="false"> + " data-optional="false">
    <%:Server IP will be set for proxy and VPN%>
    -
    -
    -
    -
    - -
    - " data-optional="false">
    - <%:Server IP will be set for proxy and VPN%> + <%:A secondary server IP can be set for dual IPv4/IPv6 server contact if WAN IPv6 are set%>
    @@ -157,7 +151,7 @@
    - @@ -621,7 +615,7 @@ <% else %> -
    +
    @@ -631,7 +625,7 @@
    -
    +
    " data-type="ip6addr"> From 76265b24bd9f5187d24f4a644e0e0e2bdc418af6 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 10:51:21 +0100 Subject: [PATCH 085/137] Add -tt as SSH arg --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8ebdbeb63..a837a7293 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -98,6 +98,7 @@ jobs: user: deploy port: ${{ secrets.OMR_DEPLOY_PORT }} key: ${{ secrets.PRIVATE_KEY }} + args: -tt - if: steps.branch_name.outputs.SOURCE_BRANCH != '' name: Deploy - Create directory uses: ysurac/ssh-action@master @@ -112,6 +113,7 @@ jobs: user: deploy port: ${{ secrets.OMR_DEPLOY_PORT }} key: ${{ secrets.PRIVATE_KEY }} + args: -tt - name: Move binaries for rsync working-directory: ../../omr env: From db48ca879438b59b22a5c07b3db90e18a50a731c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 10:52:07 +0100 Subject: [PATCH 086/137] Add default ip route for wan --- mptcp/files/usr/share/omr/post-tracking.d/post-tracking | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 9c51d7b7c..eb495ac43 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -872,6 +872,9 @@ if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then config_foreach set_server_route server fi + if [ "$(ip r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then + ip r replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1 + fi fi if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then config_load openmptcprouter @@ -881,6 +884,9 @@ if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; th elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then config_foreach set_server_route6 server fi + if [ "$(ip -6 r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then + ip -6 r replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1 + fi fi if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then From bea2f5f6298b037bddc14aa98f2edf3068d05ad2 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 14:31:44 +0100 Subject: [PATCH 087/137] Add mac address to OMR Rename ident --- .../root/etc/hotplug.d/net/99-omr-rename | 15 ++++++++++----- .../root/etc/init.d/openmptcprouter | 12 ++++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index f2c19dc55..4ff952d0e 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -20,17 +20,22 @@ _set_intf_name() { fi [ -n "$modalias" ] && { if [ -f /sys/class/net/${INTERFACE}/device/uevent ]; then + mac="" + if [ -f /sys/class/net/${INTERFACE}/address ]; then + mac="$(cat /sys/class/net/${INTERFACE}/address | tr -d '\n')" + fi chk_modalias=$MODALIAS [ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" if [ -n "$chk_modalias" ]; then + chk_modalias="${chk_modalias}-${mac}" logger -t "OMR-Rename" "modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" - existif=0 + existif="0" ip link set ${INTERFACE} down 2>&1 >/dev/null [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null - existif=1 + existif="1" } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null @@ -48,10 +53,10 @@ _set_intf_name() { logger -t "OMR-Rename" "device: $device - devpath: $DEVPATH - ifname: $ifname - INTERFACE: $INTERFACE" logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" ip link set ${INTERFACE} down 2>&1 >/dev/null - existif=0 + existif="0" [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null - existif=1 + existif="1" } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null @@ -62,5 +67,5 @@ _set_intf_name() { if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "1" ]; then config_load network config_foreach _set_intf_name interface - config_foreach _set_intf_name interface +# config_foreach _set_intf_name interface fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 44188939f..decb1fdcc 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -27,7 +27,11 @@ omr_intf_set() { if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then devicepath=$(readlink -f /sys/class/net/${ifname}) if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then - uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" + mac="" + if [ -f /sys/class/net/${ifname}/address ]; then + mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')" + fi + uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac" uci -q set network.$1.product="$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" elif [ -n "$devicepath" ] && ([ "$(echo ${devicepath} | grep virtual)" != "" ] || [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" = "" ] || [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" != "" ] || [ "$(cat /sys/class/net/${ifname}tmp/device/uevent)" != "" ]); then uci -q delete network.$1.device @@ -35,7 +39,11 @@ omr_intf_set() { uci -q delete network.$1.product fi elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then - uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" + mac="" + if [ -f /sys/class/net/${ifname}/address ]; then + mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')" + fi + uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac" uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" else uci -q delete network.$1.modalias From 51cae2dac9dc6a4eea9e978fbdf110625b649115 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 17:28:57 +0100 Subject: [PATCH 088/137] Fix https://github.com/Ysurac/openmptcprouter/issues/1547 --- openmptcprouter/files/bin/omr-test-speed | 10 +++++++--- openmptcprouter/files/bin/omr-test-speedv6 | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/openmptcprouter/files/bin/omr-test-speed b/openmptcprouter/files/bin/omr-test-speed index b01279773..c38fcd9e4 100755 --- a/openmptcprouter/files/bin/omr-test-speed +++ b/openmptcprouter/files/bin/omr-test-speed @@ -27,8 +27,12 @@ if [ -z "$INTERFACE" ]; then curl -4 $HOST >/dev/null || echo else domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") - ipset add ss_rules_dst_bypass_all $hostip + hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') + for ip in $hostip; do + ipset add ss_rules_dst_bypass_all $ip + done curl -4 --interface $INTERFACE $HOST >/dev/null || echo - ipset del ss_rules_dst_bypass_all $hostip + for ip in $hostip; do + ipset del ss_rules_dst_bypass_all $ip + done fi diff --git a/openmptcprouter/files/bin/omr-test-speedv6 b/openmptcprouter/files/bin/omr-test-speedv6 index 27fd43e68..b80399e5c 100755 --- a/openmptcprouter/files/bin/omr-test-speedv6 +++ b/openmptcprouter/files/bin/omr-test-speedv6 @@ -27,8 +27,12 @@ if [ -z "$INTERFACE" ]; then curl -6 $HOST >/dev/null || echo else domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") - ipset add ss_rules6_dst_bypass_all $hostip + hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') + for ip in $hostip; do + ipset add ss_rules6_dst_bypass_all $ip + done curl -6 --interface $INTERFACE $HOST >/dev/null || echo - ipset del ss_rules6_dst_bypass_all $hostip + for ip in $hostip; do + ipset del ss_rules6_dst_bypass_all $ip + done fi From 3a28ad66e5e4c39f33ced6e0808c96aeae81e522 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 17:29:28 +0100 Subject: [PATCH 089/137] Add VLAN support in wizard --- .../luasrc/controller/openmptcprouter.lua | 4 ++++ .../luasrc/view/openmptcprouter/wizard.htm | 24 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 62974d55b..4f06cff5b 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -220,6 +220,7 @@ function wizard_add() local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or "" local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or "" local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or "" + local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or "" local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or "" local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" @@ -244,6 +245,9 @@ function wizard_add() end ucic:set("network",intf,"type",typeintf) end + if vlan ~= "" then + ifname=ifname .. '.' .. vlan + end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") ucic:set("network",intf,"masterintf",masterintf) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index e1fb06c4c..ad0762c8d 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -21,6 +21,17 @@ end return true end + function splitstring(inputstr, sep) + if sep == nil then + sep = "%s" + end + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t + end + %> @@ -537,20 +548,27 @@ +
    + +
    +
    <%:Choose physical interface.%> @@ -885,7 +903,7 @@ end end for _, ifacea in ipairs(net:get_networks()) do - if not (ifacea:name() == "loopback" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then + if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then %> <% From d2aeaf3c2bbadfa0fffe8fbfaa90e735bd089665 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:21:02 +0100 Subject: [PATCH 090/137] Update RPI4 firmware --- bcm27xx-eeprom/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile index 8397130ae..6a4dda9b4 100644 --- a/bcm27xx-eeprom/Makefile +++ b/bcm27xx-eeprom/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-eeprom -PKG_VERSION:=16bb29427f96dc8276a7102c0526154a1084bffd -PKG_RELEASE:=3 +PKG_VERSION:=3d6165304cb04bda4454e460dea791b5f92a122a +PKG_RELEASE:=4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)? -PKG_HASH:=9bf42edbcd5ce38538750860c3c788af435206aa441b7d78cf88d094631dbb14 +PKG_HASH:=d6f25e3d962ea3c770ca1af78466371c47970381b48fb7c2acaf838966d327fc PKG_LICENSE:=BSD-3-Clause Custom PKG_LICENSE_FILES:=LICENSE From 9432081ec4a42978155c135709a74bfe1278612f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:21:58 +0100 Subject: [PATCH 091/137] Fix wizard --- .../luasrc/controller/openmptcprouter.lua | 5 ++++- .../luasrc/view/openmptcprouter/wizard.htm | 14 ++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 4f06cff5b..d64b41986 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -246,7 +246,7 @@ function wizard_add() ucic:set("network",intf,"type",typeintf) end if vlan ~= "" then - ifname=ifname .. '.' .. vlan + ifname = ifname .. '.' .. vlan end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") @@ -905,6 +905,9 @@ function settings_add() -- Enable/disable debug local debug = luci.http.formvalue("debug") or "0" ucic:set("openmptcprouter","settings","debug",debug) + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"verbose",debug) + end) -- Enable/disable vnstat backup local savevnstat = luci.http.formvalue("savevnstat") or "0" diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index ad0762c8d..24c67a126 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -549,26 +549,24 @@ <% iffind=0 uciifname=uci:get("network",ifname,"ifname") - ifname=splitstring(uciifname,'.')[1] or "" + realifname=splitstring(uciifname,'.')[1] or "" vlan=splitstring(uciifname,'.')[2] or "" for _, ifacea in ipairs(ifaces) do if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then %> - + <% end end - if iffind == 0 and uci:get("network",ifname,"ifname") ~= nil then + if iffind == 0 and uciifname ~= nil then %> - + <% end %> -
    - -
    - + +
    <%:Choose physical interface.%> From 499481490bd47d1ade6f325d99ef3b78d073a9ba Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:22:47 +0100 Subject: [PATCH 092/137] Separate rules for bypass --- luci-app-omr-bypass/root/etc/init.d/omr-bypass | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 82a1e68f5..a859b345e 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -375,13 +375,25 @@ _bypass_proto() { _intf_rule_ss_rules() { rule_name=$1 [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_dst)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_dst | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN + COMMIT + EOF + fi + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_local_out)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_local_out | grep omr_dst_bypass_$intf)" = "" ]; then + iptables-restore -w --wait=60 --noflush <<-EOF + *nat -I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN + COMMIT + EOF + fi + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_pre_src | grep omr_dst_bypass_$intf)" = "" ]; then + iptables-restore -w --wait=60 --noflush <<-EOF + *nat -I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN COMMIT @@ -493,6 +505,7 @@ _intf_rule() { iptables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count + -I omr-bypass-local 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count COMMIT EOF fi From 334fefc2b722b0f3fd0b3c4d870450f986d42c62 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:24:37 +0100 Subject: [PATCH 093/137] Add translation option to sysupgrade --- .../luasrc/view/sysupgrade.htm | 12 +++++----- .../www/luci-static/resources/sysupgrade.js | 23 ++++++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm index ac91611ad..7cb1efa9d 100644 --- a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm +++ b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm @@ -75,7 +75,7 @@ <%+header%>

    <%:Sysupgrade%>

    - Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages. + <%:Easily search and install new releases and package upgrades.%>
    @@ -87,27 +87,27 @@
    - +
    diff --git a/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js b/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js index 68d53bf8f..bfb2a83ba 100644 --- a/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js +++ b/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js @@ -1,3 +1,4 @@ +'require ui'; function $(s) { return document.getElementById(s.substring(1)); } @@ -161,7 +162,7 @@ function upgrade_check() { var candidates = [] hide("#status_box"); hide("#server_div"); - set_status("info", "Searching for upgrades", true); + set_status("info", _("Searching for upgrades"), true); fetch(data.url + "/api/versions") .then(response => response.json()) .then(response => { @@ -188,7 +189,7 @@ function upgrade_check() { if (candidates.length > 0) { var info_output = "

    New release " + candidates[0].latest + " available

    " - info_output += "Installed version: " + data.release.version + info_output += _('Installed version:') + " " + data.release.version // tell server the currently installed version request_dict.current_version = request_dict.version; @@ -205,13 +206,13 @@ function upgrade_check() { show("#edit_button"); } var upgrade_button = $("#upgrade_button") - upgrade_button.value = "Request firmware"; + upgrade_button.value = _("Request firmware"); upgrade_button.style.display = "block"; upgrade_button.disabled = false; upgrade_button.onclick = upgrade_request; } else { - set_status("success", "No upgrades available") + set_status("success", _("No upgrades available")) } }); @@ -265,7 +266,7 @@ function upgrade_request_callback(response) { function flash_image() { // Flash image via rpc-sys upgrade_start - set_status("warning", "Flashing firmware. Don't unpower device", true) + set_status("warning", _("Flashing firmware. Don't unpower device"), true) ubus_call("rpc-sys", "upgrade_start", { "keep": $("#keep").checked }, 'message'); @@ -281,11 +282,11 @@ function ping_ubus() { var request = new XMLHttpRequest(); request.open("GET", ubus_url, true); request.addEventListener('error', function(event) { - set_status("warning", "Rebooting device - please wait!", true); + set_status("warning", _("Rebooting device - please wait!"), true); setTimeout(ping_ubus, 5000) }); request.addEventListener('load', function(event) { - set_status("success", "Success! Please reload web interface"); + set_status("success", _("Success! Please reload web interface")); $("#upgrade_button").value = "Reload page"; show("#upgrade_button"); $("#upgrade_button").disabled = false; @@ -295,13 +296,13 @@ function ping_ubus() { }); request.send(); } else { - set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually") + set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually")) } } function upload_image(blob) { // Uploads received blob data to the server using cgi-io - set_status("info", "Uploading firmware to device", true); + set_status("info", _("Uploading firmware to device"), true); var request = new XMLHttpRequest(); var form_data = new FormData(); @@ -316,7 +317,7 @@ function upload_image(blob) { }); request.addEventListener('error', function(event) { - set_status("danger", "Upload of firmware failed, please retry by reloading web interface") + set_status("danger", _("Upload of firmware failed, please retry by reloading web interface")) }); request.open('POST', origin + '/cgi-bin/cgi-upload'); @@ -340,7 +341,7 @@ function download_image() { upload_image(blob) } }; - set_status("info", "Downloading firmware to web browser memory", true); + set_status("info", _("Downloading firmware to web browser memory"), true); download_request.send(); } From 72f75b823b96863595e920ed44f23fc89b86762b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 2 Feb 2021 10:32:40 +0100 Subject: [PATCH 094/137] Add sysupgrade translation template --- .../po/templates/attendedsysupgrade.pot | 11 --- .../po/templates/sysupgrade.pot | 81 +++++++++++++++++++ 2 files changed, 81 insertions(+), 11 deletions(-) delete mode 100644 luci-app-sysupgrade/po/templates/attendedsysupgrade.pot create mode 100644 luci-app-sysupgrade/po/templates/sysupgrade.pot diff --git a/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot b/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot deleted file mode 100644 index c14f0951e..000000000 --- a/luci-app-sysupgrade/po/templates/attendedsysupgrade.pot +++ /dev/null @@ -1,11 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm:76 -#: applications/luci-app-attendedsysupgrade/root/usr/share/luci/menu.d/luci-app-attendedsysupgrade.json:3 -msgid "Attended Sysupgrade" -msgstr "" - -#: applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json:3 -msgid "attended sysupgrade via rpcd and luci" -msgstr "" diff --git a/luci-app-sysupgrade/po/templates/sysupgrade.pot b/luci-app-sysupgrade/po/templates/sysupgrade.pot new file mode 100644 index 000000000..0c4a913f0 --- /dev/null +++ b/luci-app-sysupgrade/po/templates/sysupgrade.pot @@ -0,0 +1,81 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 +msgid "Search for upgrades" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 +msgid "Server:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "" From 3b0f43fbf3e5c341ddfddfab081f8ff96fbd78de Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 17:28:57 +0100 Subject: [PATCH 095/137] Fix https://github.com/Ysurac/openmptcprouter/issues/1547 --- openmptcprouter/files/bin/omr-test-speed | 10 +++++++--- openmptcprouter/files/bin/omr-test-speedv6 | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/openmptcprouter/files/bin/omr-test-speed b/openmptcprouter/files/bin/omr-test-speed index b01279773..c38fcd9e4 100755 --- a/openmptcprouter/files/bin/omr-test-speed +++ b/openmptcprouter/files/bin/omr-test-speed @@ -27,8 +27,12 @@ if [ -z "$INTERFACE" ]; then curl -4 $HOST >/dev/null || echo else domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") - ipset add ss_rules_dst_bypass_all $hostip + hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') + for ip in $hostip; do + ipset add ss_rules_dst_bypass_all $ip + done curl -4 --interface $INTERFACE $HOST >/dev/null || echo - ipset del ss_rules_dst_bypass_all $hostip + for ip in $hostip; do + ipset del ss_rules_dst_bypass_all $ip + done fi diff --git a/openmptcprouter/files/bin/omr-test-speedv6 b/openmptcprouter/files/bin/omr-test-speedv6 index 27fd43e68..b80399e5c 100755 --- a/openmptcprouter/files/bin/omr-test-speedv6 +++ b/openmptcprouter/files/bin/omr-test-speedv6 @@ -27,8 +27,12 @@ if [ -z "$INTERFACE" ]; then curl -6 $HOST >/dev/null || echo else domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") - ipset add ss_rules6_dst_bypass_all $hostip + hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') + for ip in $hostip; do + ipset add ss_rules6_dst_bypass_all $ip + done curl -6 --interface $INTERFACE $HOST >/dev/null || echo - ipset del ss_rules6_dst_bypass_all $hostip + for ip in $hostip; do + ipset del ss_rules6_dst_bypass_all $ip + done fi From 9d49605bc73eee6b93d2e8e4ee8f3fa3364fec1f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 17:29:28 +0100 Subject: [PATCH 096/137] Add VLAN support in wizard --- .../luasrc/controller/openmptcprouter.lua | 4 ++++ .../luasrc/view/openmptcprouter/wizard.htm | 24 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 62974d55b..4f06cff5b 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -220,6 +220,7 @@ function wizard_add() local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or "" local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or "" local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or "" + local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or "" local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or "" local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" @@ -244,6 +245,9 @@ function wizard_add() end ucic:set("network",intf,"type",typeintf) end + if vlan ~= "" then + ifname=ifname .. '.' .. vlan + end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") ucic:set("network",intf,"masterintf",masterintf) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 019cb844a..3845a6e47 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -21,6 +21,17 @@ end return true end + function splitstring(inputstr, sep) + if sep == nil then + sep = "%s" + end + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t + end + %> @@ -537,20 +548,27 @@ +
    + +
    +
    <%:Choose physical interface.%> @@ -885,7 +903,7 @@ end end for _, ifacea in ipairs(net:get_networks()) do - if not (ifacea:name() == "loopback" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then + if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then %> <% From 5a13e63cd376197e3441974c32971cbf8b76486f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:21:02 +0100 Subject: [PATCH 097/137] Update RPI4 firmware --- bcm27xx-eeprom/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile index 8397130ae..6a4dda9b4 100644 --- a/bcm27xx-eeprom/Makefile +++ b/bcm27xx-eeprom/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-eeprom -PKG_VERSION:=16bb29427f96dc8276a7102c0526154a1084bffd -PKG_RELEASE:=3 +PKG_VERSION:=3d6165304cb04bda4454e460dea791b5f92a122a +PKG_RELEASE:=4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)? -PKG_HASH:=9bf42edbcd5ce38538750860c3c788af435206aa441b7d78cf88d094631dbb14 +PKG_HASH:=d6f25e3d962ea3c770ca1af78466371c47970381b48fb7c2acaf838966d327fc PKG_LICENSE:=BSD-3-Clause Custom PKG_LICENSE_FILES:=LICENSE From e34e324ea09f968c101b683fbabbd5bb436c8341 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:21:58 +0100 Subject: [PATCH 098/137] Fix wizard --- .../luasrc/controller/openmptcprouter.lua | 5 ++++- .../luasrc/view/openmptcprouter/wizard.htm | 14 ++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 4f06cff5b..d64b41986 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -246,7 +246,7 @@ function wizard_add() ucic:set("network",intf,"type",typeintf) end if vlan ~= "" then - ifname=ifname .. '.' .. vlan + ifname = ifname .. '.' .. vlan end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") @@ -905,6 +905,9 @@ function settings_add() -- Enable/disable debug local debug = luci.http.formvalue("debug") or "0" ucic:set("openmptcprouter","settings","debug",debug) + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"verbose",debug) + end) -- Enable/disable vnstat backup local savevnstat = luci.http.formvalue("savevnstat") or "0" diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 3845a6e47..bc47a5976 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -549,26 +549,24 @@ <% iffind=0 uciifname=uci:get("network",ifname,"ifname") - ifname=splitstring(uciifname,'.')[1] or "" + realifname=splitstring(uciifname,'.')[1] or "" vlan=splitstring(uciifname,'.')[2] or "" for _, ifacea in ipairs(ifaces) do if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then %> - + <% end end - if iffind == 0 and uci:get("network",ifname,"ifname") ~= nil then + if iffind == 0 and uciifname ~= nil then %> - + <% end %> -
    - -
    - + +
    <%:Choose physical interface.%> From 6a34e811811eb4c4452f0f2d9e8e33487029a5f0 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:22:47 +0100 Subject: [PATCH 099/137] Separate rules for bypass --- luci-app-omr-bypass/root/etc/init.d/omr-bypass | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index 82a1e68f5..a859b345e 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -375,13 +375,25 @@ _bypass_proto() { _intf_rule_ss_rules() { rule_name=$1 [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_dst)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_dst | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN + COMMIT + EOF + fi + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_local_out)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_local_out | grep omr_dst_bypass_$intf)" = "" ]; then + iptables-restore -w --wait=60 --noflush <<-EOF + *nat -I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN + COMMIT + EOF + fi + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_pre_src | grep omr_dst_bypass_$intf)" = "" ]; then + iptables-restore -w --wait=60 --noflush <<-EOF + *nat -I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN COMMIT @@ -493,6 +505,7 @@ _intf_rule() { iptables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count + -I omr-bypass-local 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count COMMIT EOF fi From 4aa2c75de59913926079634c2682d986fed420c9 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Mon, 1 Feb 2021 16:24:37 +0100 Subject: [PATCH 100/137] Add translation option to sysupgrade --- .../luasrc/view/sysupgrade.htm | 12 +++++----- .../www/luci-static/resources/sysupgrade.js | 23 ++++++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm index ac91611ad..7cb1efa9d 100644 --- a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm +++ b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm @@ -75,7 +75,7 @@ <%+header%>

    <%:Sysupgrade%>

    - Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages. + <%:Easily search and install new releases and package upgrades.%>
    @@ -87,27 +87,27 @@
    - +
    diff --git a/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js b/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js index 68d53bf8f..bfb2a83ba 100644 --- a/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js +++ b/luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js @@ -1,3 +1,4 @@ +'require ui'; function $(s) { return document.getElementById(s.substring(1)); } @@ -161,7 +162,7 @@ function upgrade_check() { var candidates = [] hide("#status_box"); hide("#server_div"); - set_status("info", "Searching for upgrades", true); + set_status("info", _("Searching for upgrades"), true); fetch(data.url + "/api/versions") .then(response => response.json()) .then(response => { @@ -188,7 +189,7 @@ function upgrade_check() { if (candidates.length > 0) { var info_output = "

    New release " + candidates[0].latest + " available

    " - info_output += "Installed version: " + data.release.version + info_output += _('Installed version:') + " " + data.release.version // tell server the currently installed version request_dict.current_version = request_dict.version; @@ -205,13 +206,13 @@ function upgrade_check() { show("#edit_button"); } var upgrade_button = $("#upgrade_button") - upgrade_button.value = "Request firmware"; + upgrade_button.value = _("Request firmware"); upgrade_button.style.display = "block"; upgrade_button.disabled = false; upgrade_button.onclick = upgrade_request; } else { - set_status("success", "No upgrades available") + set_status("success", _("No upgrades available")) } }); @@ -265,7 +266,7 @@ function upgrade_request_callback(response) { function flash_image() { // Flash image via rpc-sys upgrade_start - set_status("warning", "Flashing firmware. Don't unpower device", true) + set_status("warning", _("Flashing firmware. Don't unpower device"), true) ubus_call("rpc-sys", "upgrade_start", { "keep": $("#keep").checked }, 'message'); @@ -281,11 +282,11 @@ function ping_ubus() { var request = new XMLHttpRequest(); request.open("GET", ubus_url, true); request.addEventListener('error', function(event) { - set_status("warning", "Rebooting device - please wait!", true); + set_status("warning", _("Rebooting device - please wait!"), true); setTimeout(ping_ubus, 5000) }); request.addEventListener('load', function(event) { - set_status("success", "Success! Please reload web interface"); + set_status("success", _("Success! Please reload web interface")); $("#upgrade_button").value = "Reload page"; show("#upgrade_button"); $("#upgrade_button").disabled = false; @@ -295,13 +296,13 @@ function ping_ubus() { }); request.send(); } else { - set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually") + set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually")) } } function upload_image(blob) { // Uploads received blob data to the server using cgi-io - set_status("info", "Uploading firmware to device", true); + set_status("info", _("Uploading firmware to device"), true); var request = new XMLHttpRequest(); var form_data = new FormData(); @@ -316,7 +317,7 @@ function upload_image(blob) { }); request.addEventListener('error', function(event) { - set_status("danger", "Upload of firmware failed, please retry by reloading web interface") + set_status("danger", _("Upload of firmware failed, please retry by reloading web interface")) }); request.open('POST', origin + '/cgi-bin/cgi-upload'); @@ -340,7 +341,7 @@ function download_image() { upload_image(blob) } }; - set_status("info", "Downloading firmware to web browser memory", true); + set_status("info", _("Downloading firmware to web browser memory"), true); download_request.send(); } From 78799489c88998391e14178bdc8cdd68f69955b1 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:02:08 +0100 Subject: [PATCH 101/137] Fix wizard shadowsocks server enable --- .../luasrc/controller/openmptcprouter.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index d64b41986..859252e71 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -477,7 +477,9 @@ function wizard_add() ucic:set("v2ray","main","enabled","0") ucic:foreach("shadowsocks-libev", "server", function(s) local sectionname = s[".name"] - ucic:set("shadowsocks-libev",sectionname,"disabled","0") + if sectionname:match("^sss.*") then + ucic:set("shadowsocks-libev",sectionname,"disabled","0") + end end) elseif default_proxy == "v2ray" and serversnb > 0 and serversnb > disablednb then --ucic:set("shadowsocks-libev","sss0","disabled","1") @@ -543,7 +545,7 @@ function wizard_add() local nbip = 0 for _, ssip in pairs(server_ips) do ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) - if default_proxy == "shadowsocks" then + if default_proxy == "shadowsocks" and serversnb > disablednb then ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") end nbip = nbip + 1 @@ -573,7 +575,7 @@ function wizard_add() local nbip = 0 for _, ssip in pairs(server_ips) do ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) - if default_proxy == "shadowsocks" then + if default_proxy == "shadowsocks" and serversnb > disablednb then ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") end nbip = nbip + 1 From bdbdc201ec632dbfabdc948b28ecc0eff860c6b8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:03:03 +0100 Subject: [PATCH 102/137] Fix shadowsocks iptables rules --- shadowsocks-libev/files/shadowsocks-libev.init | 4 +++- shadowsocks-libev/files/ss-rules | 2 +- shadowsocks-libev/files/ss-rules6 | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 9e15c6241..fa1b1602d 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -308,6 +308,7 @@ start_service() { # Add rule to match traffic marked by firewall for bypass ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1 rules_up + [ -f /etc/firewall.gre-tunnel ] && sh /etc/firewall.gre-tunnel > /dev/null 2>&1 } stop_service() { @@ -320,7 +321,7 @@ reload_service() { } rules_exist() { - [ -n "$(iptables -t nat -L -n | grep ssr)" ] && return 0 + [ -n "$(iptables-save | grep 'A ssr')" ] && return 0 return 1 } @@ -347,6 +348,7 @@ rules_up() { config_foreach ss_rules_restart "$cfgtype" "$cfgtype" done config_foreach ss_rules ss_rules + [ -z "$(iptables-save | grep :ssr)" ] && logger -t "Shadowsocks" "Rules not applied" [ -f /etc/init.d/omr-bypass ] && { logger -t "Shadowsocks" "Reload omr-bypass rules" /etc/init.d/omr-bypass reload_rules diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 396de706d..2f4583e47 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -187,7 +187,7 @@ ss_rules_iptchains_init_tcp() { forward) local_target=ssr_${rule}_forward ;; bypass|*) return 0;; esac - if [ "$(iptables -t nat -L ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then + if [ "$(iptables-save | grep ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then iptables-restore -w --noflush <<-EOF *nat :ssr_${rule}_local_out - diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index 84d04beb5..3225573a1 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -175,7 +175,7 @@ ss_rules6_iptchains_init_tcp() { :ssr6_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_all dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN -A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" From 398d47d1fd20f235502ac15c03896d9b2847dee9 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:08:05 +0100 Subject: [PATCH 103/137] Add nano --- openmptcprouter-full/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index 74968b5c8..f5b008643 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -50,6 +50,7 @@ MY_DEPENDS := \ speedtestc \ iftop \ htop \ + nano \ tcpdump \ ethtool \ iputils-ping \ From e90e6eab51a3b1752ff52a355065afcc50522848 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:09:33 +0100 Subject: [PATCH 104/137] Add sss1 server for secondary server ip and rename ss_redir hi to hi1 --- .../etc/uci-defaults/1930-omr-shadowsocks | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 69da0ea91..8460546c3 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -1,6 +1,13 @@ #!/bin/sh # Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project +if [ "$(uci -q get shadowsocks-libev.hi)" != ""; then + uci -q batch <<-EOF >/dev/null + rename shadowsocks-libev.hi="hi1" + commit shadowsocks-libev + EOF +fi + if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then NBCPU=$(grep -c '^processor' /proc/cpuinfo | tr -d "\n") if [ "$NBCPU" -gt 2 ]; then @@ -26,24 +33,16 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then fi fi - if [ "$(uci -q get shadowsocks-libev.hi.timeout)" != "1000" ]; then - uci -q batch <<-EOF > /dev/null - set shadowsocks-libev.hi.timeout=1000 - commit shadowsocks-libev - EOF - for c in $(seq 2 $NBCPU); do + if [ "$(uci -q get shadowsocks-libev.hi1.timeout)" != "1000" ]; then + for c in $(seq 1 $NBCPU); do uci -q batch <<-EOF > /dev/null set shadowsocks-libev.hi$c.timeout=1000 commit shadowsocks-libev EOF done fi - if [ "$(uci -q get shadowsocks-libev.hi.mode)" != "tcp" ]; then - uci -q batch <<-EOF > /dev/null - set shadowsocks-libev.hi.mode=tcp_and_udp - commit shadowsocks-libev - EOF - for c in $(seq 2 $NBCPU); do + if [ "$(uci -q get shadowsocks-libev.hi1.mode)" != "tcp" ]; then + for c in $(seq 1 $NBCPU); do uci -q batch <<-EOF > /dev/null set shadowsocks-libev.hi$c.mode=tcp_and_udp commit shadowsocks-libev @@ -51,12 +50,16 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then done fi fi + if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then - port=1101 - for c in $(seq 3 2 $NBCPU); do + port=1100 + for c in $(seq 1 2 $NBCPU); do uci -q batch <<-EOF >/dev/null set shadowsocks-libev.hi$c.local_port=$port + set shadowsocks-libev.hi$c.server=sss0 set shadowsocks-libev.hi$((c+1)).local_port=$port + set shadowsocks-libev.hi$((c+1)).local_address="::" + set shadowsocks-libev.hi$((c+1)).server=sss1 commit shadowsocks-libev EOF port=$((port+1)) @@ -70,9 +73,9 @@ fi if [ "$(uci -q get shadowsocks-libev.hi.obfs)" = "1" ]; then uci -q batch <<-EOF > /dev/null set shadowsocks-libev.sss0.obfs=1 - set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi.obfs_plugin)" - set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi.obfs_host)" - set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi.obfs_type)" + set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi1.obfs_plugin)" + set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi1.obfs_host)" + set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi1.obfs_type)" commit shadowsocks-libev EOF fi @@ -85,12 +88,23 @@ if [ "$(uci -q get shadowsocks-libev.ss_rules.server)" = "" ]; then fi -if [ "$(uci -q get ucitrack.@shadowsocks-libev[*1].affects | grep openmptcprouter-vps)" = "" ]; then +if [ "$(uci -q get ucitrack.@shadowsocks-libev[-1].affects | grep openmptcprouter-vps)" = "" ]; then uci -q batch <<-EOF >/dev/null add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps" commit ucitrack EOF fi +if [ "$(uci -q get shadowsocks-libev.sss1)" = "" ]; then + uci -q batch <<-EOF > /dev/null + set shadowsocks-libev.sss1=server + set shadowsocks-libev.sss1.server_port='65101' + set shadowsocks-libev.sss1.method='chacha20-ietf-poly1305' + set shadowsocks-libev.sss1.obfs='0' + set shadowsocks-libev.sss1.disabled='1' + commit shadowsocks-libev + EOF +fi + rm -f /tmp/luci-indexcache exit 0 From 29b20d0e98735673c910c7067b6d16961b58f95f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:10:01 +0100 Subject: [PATCH 105/137] Set FS check by default --- openmptcprouter/files/etc/uci-defaults/2060-omr-system | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openmptcprouter/files/etc/uci-defaults/2060-omr-system b/openmptcprouter/files/etc/uci-defaults/2060-omr-system index 70beaade9..787763c26 100755 --- a/openmptcprouter/files/etc/uci-defaults/2060-omr-system +++ b/openmptcprouter/files/etc/uci-defaults/2060-omr-system @@ -8,8 +8,6 @@ uci -q batch <<-EOF >/dev/null commit rpcd set luci.apply.timeout='20' commit luci - set fstab.@global[0].check_fs='1' - commit fstab EOF if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then @@ -20,6 +18,10 @@ if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then fi /sbin/block detect > /etc/config/fstab +uci -q batch <<-EOF >/dev/null + set fstab.@global[0].check_fs='1' + commit fstab +EOF [ -n "$(ubus call system board | jsonfilter -e '@.board_name' | grep raspberry)" ] && [ "$(uci -q get openmptcprouter.settings.scaling_governor)" != "performance" ] && { # force CPU speed for RPI From 4be600968078affff2b01ea6f6d3c48102b3fa9c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 11:10:37 +0100 Subject: [PATCH 106/137] Fix routes in post tracking --- mptcp/files/usr/share/omr/post-tracking.d/post-tracking | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index eb495ac43..27031e506 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -164,7 +164,7 @@ set_routes_intf() { interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") fi #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -z "$(echo $interface_gw | grep :)" ]; then if [ "$multipath_config_route" = "master" ]; then weight=10 else @@ -827,7 +827,7 @@ if [ "$multipath_config" = "master" ]; then config_foreach set_route_balancing interface config_foreach set_route_balancing6 interface [ -n "$routesbalancing" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { _log "Set ip route replace default scope global $routesbalancing" ip route replace default scope global metric 0 $routesbalancing } @@ -839,7 +839,7 @@ if [ "$multipath_config" = "master" ]; then } } [ -n "$routesbalancingbackup" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { _log "Set backup ip route replace default scope global $routesbalancingbackup" ip route replace default scope global metric 999 $routesbalancingbackup } From b4013edd0c88d34449cf7beda0c82f6960469ece Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:43:22 +0100 Subject: [PATCH 107/137] Display ifname if not same as label --- .../luasrc/view/openmptcprouter/wanstatus.htm | 19 +- .../po/templates/openmptcprouter.pot | 489 ++++++++++-------- 2 files changed, 289 insertions(+), 219 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 1aa626cd5..83f601bbf 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -404,17 +404,26 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } // Populate info var wanip = mArray.wans[i].wanip; - var wanip6 = mArray.wans[i].wanip6; if (anonymize == "true" && testPrivateIP(wanip) == false) { wanip=replaceLastNChars(wanip,"x",6); } + var wanip6 = mArray.wans[i].wanip6; + if (anonymize == "true") + { + wanip6=replaceLastNChars(wanip6,"x",6); + } var ipaddr = mArray.wans[i].ipaddr; - var ip6addr = mArray.wans[i].ip6addr; if (anonymize == "true" && testPrivateIP(ipaddr) == false) { ipaddr=replaceLastNChars(ipaddr,"x",6); } + var ip6addr = mArray.wans[i].ip6addr; + if (anonymize == "true") + { + ip6addr=replaceLastNChars(ip6addr,"x",6); + } + var ifname = mArray.wans[i].ifname; var whois = mArray.wans[i].whois; var whois6 = mArray.wans[i].whois6; var signal = mArray.wans[i].signal; @@ -469,7 +478,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } - if(ip6addr !== '' && gateway6 != '') + if(ip6addr !== '' && gateway6 !== '') { content += String.format('%s %s
    ','<%:ipv6 address:%>', ip6addr); } @@ -481,6 +490,10 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); } + if(ifname !== '' && ifname !== mArray.wans[i].label) + { + content += String.format('%s %s
    ','<%:interface:%>', ifname); + } if(whois !== '') { content += String.format('%s %s
    ','<%:whois:%>', whois); diff --git a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot index 4daf598a7..684de3447 100644 --- a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot +++ b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot @@ -1,28 +1,34 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:256 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 msgid "A Dead Simple VPN is a TCP VPN that can replace Glorytun TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:251 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:253 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:269 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:271 msgid "A Dead Simple VPN key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:73 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:77 +msgid "" +"A secondary server IP can be set for dual IPv4/IPv6 server contact if WAN " +"IPv6 are set" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:88 msgid "API username to retrieve personnalized settings from the server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:654 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:732 msgid "APN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:118 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:133 msgid "Add a new server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:827 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:912 msgid "Add an interface" msgstr "" @@ -31,11 +37,11 @@ msgstr "" msgid "Advanced Settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:125 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:140 msgid "Advanced settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 msgid "" "All VPN available here can do aggregation over MPTCP or using own internal " "method." @@ -45,18 +51,18 @@ msgstr "" msgid "All router settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:225 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 msgid "" "An Advanced Encryption Standard (AES) instruction set is integrated in the " "processor." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:680 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:758 msgid "Authentication Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:718 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:734 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:796 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:812 msgid "Backup" msgstr "" @@ -73,60 +79,60 @@ msgstr "" msgid "Beta" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:296 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:307 msgid "Big time difference between the server and the router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:478 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:496 msgid "Bridge" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:236 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:254 msgid "By default VPN is used for any traffic that is not TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:170 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:188 msgid "" "By default proxy is used for any traffic that is TCP (and UDP for V2Ray)." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:685 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:763 msgid "CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:257 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:268 msgid "Can\\'t access and use server part" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:283 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:294 msgid "Can\\'t contact Server Admin Script" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:273 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:284 msgid "Can\\'t get public IP address from ShadowSocks" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:276 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:287 msgid "Can\\'t get public IP address from V2Ray" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:270 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:281 msgid "Can\\'t ping server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:482 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:500 msgid "" "Choose MacVLAN if you want to create a virtual interface based on a physical " "interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:416 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:502 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:548 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:434 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:520 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:572 msgid "Choose physical interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:123 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:138 msgid "Common server settings" msgstr "" @@ -134,11 +140,15 @@ msgstr "" msgid "Core temp:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:368 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:513 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:386 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:531 msgid "DHCP" msgstr "" +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:532 +msgid "DHCPv6" +msgstr "" + #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:188 msgid "DNS issue: can\\'t resolve hostname" msgstr "" @@ -147,22 +157,22 @@ msgstr "" msgid "Debug" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:172 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:190 msgid "Default Proxy" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:304 msgid "Default VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:52 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:457 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:63 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:475 msgid "Delete" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:580 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:607 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:628 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:658 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:685 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:706 msgid "Device" msgstr "" @@ -211,7 +221,7 @@ msgstr "" msgid "Disable renaming interfaces" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:106 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:121 msgid "Disable server" msgstr "" @@ -227,12 +237,13 @@ msgstr "" msgid "Disable tracebox test" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:716 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:732 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:166 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:794 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:810 msgid "Disabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:778 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:856 msgid "Download speed (Kb/s)" msgstr "" @@ -241,11 +252,11 @@ msgid "Dynamic change" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:187 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:148 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:163 msgid "Enable IPv6" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:768 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:846 msgid "Enable SQM" msgstr "" @@ -261,16 +272,17 @@ msgstr "" msgid "Enable debug logs" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:715 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:731 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:167 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:793 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:809 msgid "Enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:208 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:226 msgid "Encryption" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:229 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:247 msgid "Encryption method is used for Shadowsocks, V2Ray, Glorytun and OpenVPN." msgstr "" @@ -278,29 +290,30 @@ msgstr "" msgid "Filesystem is readonly" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:140 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:155 msgid "Force retrieve all keys from server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:135 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:150 msgid "Force retrieve settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:674 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:752 msgid "GPRS only" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:504 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:665 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:552 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:555 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:727 msgid "Gateway DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:244 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 msgid "Glorytun TCP is used by default for UDP and ICMP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:239 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:241 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:257 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:259 msgid "Glorytun key" msgstr "" @@ -340,30 +353,40 @@ msgstr "" msgid "IPv4 TCP SYN retries2" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:424 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:554 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:442 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:578 msgid "IPv4 address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:570 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:594 msgid "IPv4 gateway" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:430 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:564 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:448 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:588 msgid "IPv4 netmask" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:158 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:176 msgid "IPv6 Prefix" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:544 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:705 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:608 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:635 +msgid "IPv6 address" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:622 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:645 +msgid "IPv6 gateway" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:600 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:767 msgid "IPv6 route received" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:146 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:161 msgid "IPv6 settings" msgstr "" @@ -371,44 +394,44 @@ msgstr "" msgid "IPv6 tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:336 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:347 msgid "IPv6:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:443 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:461 msgid "Interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:193 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:203 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:244 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:256 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:268 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:280 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:211 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:221 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:298 msgid "Key is retrieved from server API by default." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:83 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:98 msgid "" "Key to configure and retrieve others keys from Server and to set server " "settings from OpenMPTCProuter." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:341 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:359 msgid "LAN interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:672 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:750 msgid "LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:352 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:463 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:370 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:481 msgid "Label" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:358 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:468 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:376 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:486 msgid "Label for the interface" msgstr "" @@ -417,42 +440,42 @@ msgid "Last available backup on server:" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:124 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:313 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:324 msgid "Latest available version" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:130 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:319 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:330 msgid "Load:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:268 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 msgid "MLVPN can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:263 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:265 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:281 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:283 msgid "MLVPN password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:292 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:303 msgid "MPTCP is not enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:330 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:341 msgid "MPTCP may not be enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:758 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:836 msgid "MPTCP over VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:477 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:495 msgid "MacVLAN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:717 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:733 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:795 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:811 msgid "Master" msgstr "" @@ -468,15 +491,15 @@ msgstr "" msgid "Minimum scaling CPU frequency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:669 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:747 msgid "Modem default" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:703 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:781 msgid "Modem init timeout" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:514 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:533 msgid "ModemManager" msgstr "" @@ -484,43 +507,43 @@ msgstr "" msgid "More than one default VPN is enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:712 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:728 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:790 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:806 msgid "Multipath TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:527 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:533 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:688 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:694 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:583 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:589 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:750 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:756 msgid "Multipath current state is" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:522 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:683 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:578 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:745 msgid "Multipath master already defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:668 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:558 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:730 msgid "Multipath seems to be blocked on the connection" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:515 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:534 msgid "NCM" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:683 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:761 msgid "NONE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:539 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:700 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:595 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:762 msgid "Network interface duplicated" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:800 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:802 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:862 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:864 msgid "Network overview" msgstr "" @@ -528,8 +551,8 @@ msgstr "" msgid "Networks settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:497 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:658 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:545 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:720 msgid "No IP defined" msgstr "" @@ -537,15 +560,19 @@ msgstr "" msgid "No IPv6 access" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:511 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:672 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:562 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:734 msgid "No Server ping response after 1 second" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:279 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:290 msgid "No WAN IP address detected in less than 1 second" msgstr "" +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:619 +msgid "No WAN with multipath enabled:" +msgstr "" + #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:26 msgid "No available backup on server." msgstr "" @@ -554,33 +581,33 @@ msgstr "" msgid "No change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:720 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:782 msgid "No data" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:501 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:662 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:549 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:724 msgid "No gateway defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:248 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:249 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:259 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:260 msgid "No output" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:253 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:264 msgid "No server IP address, No WAN IP address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:266 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:277 msgid "No server defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:214 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:232 msgid "None" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:476 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:494 msgid "Normal" msgstr "" @@ -606,17 +633,17 @@ msgstr "" msgid "On wizard change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:182 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:200 msgid "Only ShadowSocks is supported with server multiple IPs for now." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:722 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:800 msgid "" "Only one interface must be set as \"Master\", this should be the most stable " "interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:97 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:112 msgid "Only one server can be master, else all servers are set as backup." msgstr "" @@ -624,7 +651,7 @@ msgstr "" msgid "OpenMPTCProuter" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 msgid "OpenVPN can't be used in multi VPS configuration." msgstr "" @@ -632,8 +659,8 @@ msgstr "" msgid "Optimize for latency instead of bandwidth" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:369 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:518 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:387 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:537 msgid "Other" msgstr "" @@ -641,46 +668,50 @@ msgstr "" msgid "Other settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:684 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:762 msgid "PAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:686 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:764 msgid "PAP/CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:697 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:775 msgid "PAP/CHAP password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:691 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:769 msgid "PAP/CHAP username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:660 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:738 msgid "PIN code" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:516 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:535 msgid "PPPoE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:381 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:487 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:527 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:399 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:505 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:546 msgid "Physical interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:670 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:748 msgid "Prefer LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:671 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:749 msgid "Prefer UMTS" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:363 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:508 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:71 +msgid "Primary server IP" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:381 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:526 msgid "Protocol" msgstr "" @@ -688,15 +719,15 @@ msgstr "" msgid "Proxy is DISABLED" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:169 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:187 msgid "Proxy settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:341 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:352 msgid "Proxy traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:517 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:536 msgid "QMI" msgstr "" @@ -708,12 +739,12 @@ msgstr "" msgid "Restore backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:133 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:148 msgid "Retrieve settings from server" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:352 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:836 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:921 msgid "Save & Apply" msgstr "" @@ -729,7 +760,11 @@ msgstr "" msgid "Scaling governor" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:830 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:72 +msgid "Secondary server IP" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:915 msgid "Select the device you want to base the interface on." msgstr "" @@ -737,64 +772,67 @@ msgstr "" msgid "Send backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:58 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:60 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:69 msgid "Server IP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:62 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:74 msgid "Server IP will be set for proxy and VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:78 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:80 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:93 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:95 msgid "Server key" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:43 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:42 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:53 msgid "Server settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:68 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:70 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:83 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:85 msgid "Server username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:666 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:744 msgid "Service Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:559 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:583 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:613 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:640 msgid "Set an IP in the same network as the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:575 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:599 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:627 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:650 msgid "Set here IP of the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:92 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:107 msgid "Set server as master" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:199 msgid "" "Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and " "UDP when V2Ray is enabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:333 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 msgid "" "Set the default VPN used for ICMP (and UDP if proxy used is shadowsocks), " "for all traffic if proxy is disabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:788 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:866 msgid "" "Set value between 80-95% of max download speed link. 0 to disable SQM/QoS." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:804 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:882 msgid "" "Set value between 80-95% of max upload speed link. 0 to disable SQM/QoS." msgstr "" @@ -807,12 +845,12 @@ msgstr "" msgid "ShadowSocks is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:193 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:211 msgid "ShadowSocks is used for TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:188 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:190 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:206 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:208 msgid "ShadowSocks key" msgstr "" @@ -820,8 +858,8 @@ msgstr "" msgid "Show all settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:367 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:512 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:385 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:530 msgid "Static address" msgstr "" @@ -840,7 +878,7 @@ msgid "" "local end." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:227 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:245 msgid "" "There is no Advanced Encryption Standard (AES) instruction set integrated in " "the processor, you should use chacha20." @@ -859,24 +897,24 @@ msgid "" "retransmissions remain unacknowledged." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:351 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:362 msgid "Total traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:473 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:491 msgid "Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:280 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:298 msgid "UBOND can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:275 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:277 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:293 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:295 msgid "UBOND password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:673 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:751 msgid "UMTS/GPRS" msgstr "" @@ -893,17 +931,17 @@ msgstr "" msgid "Update server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:794 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:872 msgid "Upload speed (Kb/s)" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:141 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:325 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:336 msgid "Uptime:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:783 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:799 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:861 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:877 msgid "Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value." msgstr "" @@ -911,27 +949,32 @@ msgstr "" msgid "V2Ray is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:203 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:221 msgid "V2Ray is used for TCP and UDP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:200 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:218 msgid "V2Ray user" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:198 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:216 msgid "V2Ray user id" msgstr "" +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:568 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:569 +msgid "VLAN" +msgstr "" + #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:184 msgid "VPN is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:235 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:253 msgid "VPN settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:346 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:357 msgid "VPN traffic:" msgstr "" @@ -939,12 +982,13 @@ msgstr "" msgid "VPN tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:306 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:317 msgid "Version" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:515 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:676 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:566 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:571 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:738 msgid "Wan IP and gateway are identical" msgstr "" @@ -955,10 +999,10 @@ msgid "" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:258 -msgid "When proxy shadowsocks is used, use it for UDP if proxy down" +msgid "When proxy shadowsocks is used, use it for UDP if VPN down" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:40 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:51 msgid "Wizard" msgstr "" @@ -967,33 +1011,33 @@ msgstr "" msgid "You" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:763 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:841 msgid "You can enable MPTCP over VPN if your provider filter Multipath TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:373 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:391 msgid "You can use DHCP if you have multiple real ethernet ports." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:522 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:541 msgid "" "You can use DHCP if you have multiple real ethernet ports. Select other if " "you want to use another protocol available in Network Interfaces page." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:163 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 msgid "You can use a public IPv6 prefix only if you set only one server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:444 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:462 msgid "You must disable DHCP on your modems and set IP in different networks." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:153 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:171 msgid "You should disable IPv6 here if server doesn't provide IPv6." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:773 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:851 msgid "You should disable SQM for LTE or any interfaces with variable speed." msgstr "" @@ -1009,7 +1053,7 @@ msgstr "" msgid "address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:675 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:753 msgid "auto" msgstr "" @@ -1017,35 +1061,43 @@ msgstr "" msgid "empty key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:447 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:638 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:495 +msgid "interface:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:479 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:700 msgid "ip address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:459 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:650 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:483 +msgid "ipv6 address:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:712 msgid "latency:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:463 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:654 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:511 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:716 msgid "mtu:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:551 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:707 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:607 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:769 msgid "multipath:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:467 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:515 msgid "operator:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:218 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:236 msgid "other" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:471 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:519 msgid "phone number:" msgstr "" @@ -1053,21 +1105,26 @@ msgstr "" msgid "range:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:475 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:523 msgid "state:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:554 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:710 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:610 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:772 msgid "traffic control:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:451 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:642 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:487 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:704 msgid "wan address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:455 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:646 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:491 +msgid "wan ipv6 address:" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:499 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:503 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:708 msgid "whois:" msgstr "" From 33b9626a33d51f702cb70927ef86a73e7037cfc8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:44:00 +0100 Subject: [PATCH 108/137] No error if board description not available --- .../luci-static/resources/view/dashboard/include/10_router.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js index 5b57f6126..759818be1 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js @@ -368,7 +368,7 @@ return baseclass.extend({ release: { title: _('Firmware Version'), - value: boardinfo.release.description + value: boardinfo.release.description ? boardinfo.release.description : null } }; From 4dd42e32c0ac1d28d3d2f601d1e8432f5bc80327 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:44:30 +0100 Subject: [PATCH 109/137] Change way to detect if shadowsocks iptables rules applied --- omr-tracker/files/bin/omr-tracker-ss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index be0074b01..bffca1732 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -76,7 +76,7 @@ while true; do uci -q set openmptcprouter.omr.ss_${server}="up" uci -q commit openmptcprouter.omr } - if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then + if [ -z "$(iptables-save | grep :ssr)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then _log "Reload Shadowsocks rules" /etc/init.d/shadowsocks-libev rules_up 2> /dev/null _get_ip From c7e9b2aceb4ba7ca630adf4c4930120f396810e1 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:45:54 +0100 Subject: [PATCH 110/137] Set omrvpn as external interface for upnpd --- openmptcprouter/files/etc/uci-defaults/2092-upnpd | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 openmptcprouter/files/etc/uci-defaults/2092-upnpd diff --git a/openmptcprouter/files/etc/uci-defaults/2092-upnpd b/openmptcprouter/files/etc/uci-defaults/2092-upnpd new file mode 100755 index 000000000..a89804ab6 --- /dev/null +++ b/openmptcprouter/files/etc/uci-defaults/2092-upnpd @@ -0,0 +1,10 @@ +#!/bin/sh + +if [ "$(uci -q get upnpd.config.external_ifac)" != "omrvpn" ]; then + uci -q batch <<-EOF >/dev/null + set upnpd.config.external_iface=omrvpn + commit upnpd + EOF +fi + +exit 0 From 73f577c515508aa6fb5ff218b2699a9405967bfe Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:46:30 +0100 Subject: [PATCH 111/137] only set dns over https settings on first boot --- openmptcprouter/files/etc/uci-defaults/1940-omr-dns | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index 93471310a..662442e18 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -40,7 +40,7 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then EOF fi -if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ] && [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then +if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then # uci -q batch <<-EOF >/dev/null # delete https-dns-proxy.@https-dns-proxy[-1] # delete https-dns-proxy.@https-dns-proxy[-1] From 55d4722aca1dc6877ec24a7a88a1f1c753221ac8 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 4 Feb 2021 14:47:12 +0100 Subject: [PATCH 112/137] Update copyright --- v2ray-core/files/etc/init.d/v2ray | 2 +- v2ray-core/files/usr/bin/v2ray-rules | 2 +- v2ray-core/files/usr/bin/v2ray-rules6 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v2ray-core/files/etc/init.d/v2ray b/v2ray-core/files/etc/init.d/v2ray index 34acc668b..d7d25942d 100755 --- a/v2ray-core/files/etc/init.d/v2ray +++ b/v2ray-core/files/etc/init.d/v2ray @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # # Copyright 2019-2020 Xingwang Liao -# Copyright 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright 2020-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # Licensed to the public under the MIT License. # diff --git a/v2ray-core/files/usr/bin/v2ray-rules b/v2ray-core/files/usr/bin/v2ray-rules index a43b19be7..98978f12e 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules +++ b/v2ray-core/files/usr/bin/v2ray-rules @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # The design idea was derived from ss-rules by Jian Chang # diff --git a/v2ray-core/files/usr/bin/v2ray-rules6 b/v2ray-core/files/usr/bin/v2ray-rules6 index b05c70c59..5e1714110 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules6 +++ b/v2ray-core/files/usr/bin/v2ray-rules6 @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # From 7d9545aa4015567c345f2e7a11534d2c3b4b95eb Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:47:16 +0100 Subject: [PATCH 113/137] Fix for IPv6 in wizard --- .../luasrc/controller/openmptcprouter.lua | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 859252e71..bc7b55188 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -251,7 +251,7 @@ function wizard_add() if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") ucic:set("network",intf,"masterintf",masterintf) - elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" ) then + elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then ucic:set("network",intf,"ifname",ifname) elseif typeintf == "" and device ~= "" and proto == "ncm" then ucic:set("network",intf,"device",device_ncm) @@ -295,6 +295,11 @@ function wizard_add() ucic:set("network",intf,"ip6addr","") ucic:set("network",intf,"ip6gw","") end + + if proto == "dhcpv6" then + ucic:set("network",intf,"reqaddress","try") + ucic:set("network",intf,"reqprefix","auto") + end ucic:delete("openmptcprouter",intf,"lc") ucic:save("openmptcprouter") @@ -437,6 +442,11 @@ function wizard_add() table.insert(aserverips,ip) end end + if disableipv6 == "1" then + if table.getn(aserverips) == 2 then + table.remove(aserverips, 2) + end + end local master = luci.http.formvalue("master") or "" @@ -548,6 +558,9 @@ function wizard_add() if default_proxy == "shadowsocks" and serversnb > disablednb then ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") end + if disableipv6 == "1" and nbip > 0 then + break + end nbip = nbip + 1 end end @@ -579,6 +592,9 @@ function wizard_add() ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") end nbip = nbip + 1 + if disableipv6 == "1" and nbip > 0 then + break + end end end end From f27860f81ffa65a69d9c40498864848633aa59b9 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:47:47 +0100 Subject: [PATCH 114/137] Display only one input for server IP in wizard if IPv6 disabled --- .../luasrc/view/openmptcprouter/wizard.htm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 24c67a126..8ddce55b0 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -65,7 +65,16 @@

    <%=servername%>

    -
    +
    + +
    + " data-optional="false"> +
    + <%:Server IP will be set for proxy and VPN%> +
    +
    +
    +
    " data-optional="false"> From 44b12433567d36c14610e5c5c4eaaab8b8f6d2f6 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:48:15 +0100 Subject: [PATCH 115/137] Add log on omr-tracker-ss --- omr-tracker/files/bin/omr-tracker-ss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index bffca1732..58a17ed5b 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -72,7 +72,7 @@ while true; do if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then nocontact="" [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_${server})" = "" ] && { - _log "Shadowsocks is up (can contact via http ${host})" + _log "Shadowsocks ${server} is up (can contact via http ${host})" uci -q set openmptcprouter.omr.ss_${server}="up" uci -q commit openmptcprouter.omr } @@ -87,8 +87,8 @@ while true; do last=$((last + 1 )) [ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host" [ "${last}" -ge "${retry}" ] && { - if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then - _log "Shadowsocks is down (can't contact via http ${nocontact})" + if [ -n "$(iptables -w -t nat -L -n | grep ssr)" ]; then + _log "Shadowsocks ${server} is down (can't contact via http ${nocontact})" uci -q set openmptcprouter.omr.ss_${server}="down" uci -q commit openmptcprouter.omr [ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null From a1a7c39923ab4099f4281b6cacbee636e39ae233 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:48:56 +0100 Subject: [PATCH 116/137] Fix omr-tracker for ss-tracker --- omr-tracker/files/etc/init.d/omr-tracker | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index 77765c19c..467817e91 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -139,6 +139,7 @@ _initialize_shadowsocks_tracker() { #redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp) #config_get tracker_server ss_rules server config_get ss_disabled $server disabled 0 + [ "$ss_disabled" = "0" ] && ss_enable="1" [ -z "$(uci -q get shadowsocks-libev.tracker_${server})" ] && [ "$ss_disabled" != "1" ] && { logger -t "omr-tracker" "Create ShadowSock tracker ss_local..." uci -q batch <<-EOF >/dev/null @@ -230,7 +231,7 @@ _gre_tunnel() { } start_service() { - local ss_disabled + local ss_enable=0 logger -t "omr-tracker" "Launching..." config_load shadowsocks-libev config_foreach _initialize_shadowsocks_tracker server @@ -238,7 +239,7 @@ start_service() { config_load network config_foreach _launch_tracker interface - if [ "$ss_disabled" != "1" ]; then + if [ "$ss_enable" = "1" ]; then config_load shadowsocks-libev config_foreach _launch_shadowsocks_tracker ss_local #elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then From d77382ac8c7ccb48930aeb64e1ae98c28448313d Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:49:19 +0100 Subject: [PATCH 117/137] Fix openmptcprouter vps login --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 1 + 1 file changed, 1 insertion(+) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 853891f9d..5241b9fbc 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -37,6 +37,7 @@ _login() { [ -z "$auth" ] && return token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" uci -q set openmptcprouter.${servername}.token="$token" + [ -n "$token" ] && break } config_load openmptcprouter config_list_foreach ${servername} ip login_on_server From 9476921bd52050ee1e2ba7454190a041d9007729 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 5 Feb 2021 19:49:59 +0100 Subject: [PATCH 118/137] Rename shadowsocks ss-redir from hi to hi1 --- openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks | 4 ++-- shadowsocks-libev/files/shadowsocks-libev.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 8460546c3..5880c13b0 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -3,7 +3,7 @@ if [ "$(uci -q get shadowsocks-libev.hi)" != ""; then uci -q batch <<-EOF >/dev/null - rename shadowsocks-libev.hi="hi1" + rename shadowsocks-libev.hi=hi1 commit shadowsocks-libev EOF fi @@ -70,7 +70,7 @@ if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then EOF fi -if [ "$(uci -q get shadowsocks-libev.hi.obfs)" = "1" ]; then +if [ "$(uci -q get shadowsocks-libev.hi1.obfs)" = "1" ]; then uci -q batch <<-EOF > /dev/null set shadowsocks-libev.sss0.obfs=1 set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi1.obfs_plugin)" diff --git a/shadowsocks-libev/files/shadowsocks-libev.config b/shadowsocks-libev/files/shadowsocks-libev.config index 2bf7def6b..719a9cc85 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.config +++ b/shadowsocks-libev/files/shadowsocks-libev.config @@ -1,4 +1,4 @@ -config ss_redir hi +config ss_redir hi1 option server 'sss0' option local_address '::' option local_port '1100' From d4df42934a426a2acec628fa2f5507c07d765ebc Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 6 Feb 2021 08:56:44 +0100 Subject: [PATCH 119/137] Fix display when device have a . --- .../luasrc/view/openmptcprouter/wizard.htm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 8ddce55b0..5224df408 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -558,8 +558,13 @@ <% iffind=0 uciifname=uci:get("network",ifname,"ifname") - realifname=splitstring(uciifname,'.')[1] or "" - vlan=splitstring(uciifname,'.')[2] or "" + if uciifname:match("/") then + realifname=uciifname + vlan="" + else + realifname=splitstring(uciifname,'.')[1] or "" + vlan=splitstring(uciifname,'.')[2] or "" + end for _, ifacea in ipairs(ifaces) do if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then %> From dc66b82252eceb11ad5be31739ded6f46feb99a9 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 6 Feb 2021 09:05:02 +0100 Subject: [PATCH 120/137] Fix issue with modemmanager in wizard --- .../luasrc/view/openmptcprouter/wizard.htm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 5224df408..ba31c9dd7 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -22,6 +22,9 @@ return true end function splitstring(inputstr, sep) + if inputstr == nil then + return "" + end if sep == nil then sep = "%s" end From e7279f36abc5d8947defe87daf9b3dc2fe91f8f1 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 14:34:41 +0100 Subject: [PATCH 121/137] Add default information for luci-app-mptcp --- luci-app-mptcp/luasrc/model/cbi/mptcp.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index a69f69e3e..27654e021 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -18,7 +18,7 @@ mtcpck:value(0, translate("disable")) local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) mtcpck:value(1, translate("enable")) mtcpck:value(0, translate("disable")) -local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager")) +local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh")) mtcppm:value("default", translate("default")) mtcppm:value("fullmesh", translate("fullmesh")) mtcppm:value("ndiffports", translate("ndiffports")) From 4b68351f4c80b012a36626da9cee9be536779956 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 14:35:14 +0100 Subject: [PATCH 122/137] Fix wizard display when IPv6 enabled --- .../luasrc/view/openmptcprouter/wizard.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index ba31c9dd7..317d7051c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -68,7 +68,7 @@

    <%=servername%>

    -
    +
    " data-optional="false"> @@ -77,7 +77,7 @@
    -
    +
    " data-optional="false"> From 57fff1658e2b6a2179b4a5ea7baa242482b950d3 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 14:35:48 +0100 Subject: [PATCH 123/137] Track both server IP --- omr-tracker/files/bin/omr-tracker-server | 159 ++++++++++++++--------- 1 file changed, 97 insertions(+), 62 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-server b/omr-tracker/files/bin/omr-tracker-server index 5bd212fdb..8c0e7c577 100755 --- a/omr-tracker/files/bin/omr-tracker-server +++ b/omr-tracker/files/bin/omr-tracker-server @@ -37,9 +37,26 @@ _check_server() { done } +_disable_redir() { + local redir=$1 + config_get server $redir server + if [ "$server" = "sss${count}" ]; then + config_set $redir disabled "1" + fi +} + +_enable_redir() { + local redir=$1 + config_get server $redir server + if [ "$server" = "sss${count}" ]; then + config_set $redir disabled "0" + fi +} + _check_master() { local name=$1 local count=0 + local countips=0 config_get master $1 master config_get ip $1 ip config_get port $1 port "65500" @@ -49,39 +66,47 @@ _check_master() { local ip=$1 #_ping_server $ip _check_server $ip $port - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { - logger -t "OMR-Tracker-Server" "Master server up, set it back" - logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss${count}.server=$ip - commit shadowsocks-libev - EOF - if [ "$count" -eq "0" ]; then + if [ "$server_ping" = true ]; then + if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then + logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back" + #logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip" uci -q batch <<-EOF >/dev/null - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn + set shadowsocks-libev.sss${count}.server=$ip + commit shadowsocks-libev EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + if [ "$count" -eq "0" ]; then + uci -q batch <<-EOF >/dev/null + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + fi + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null fi - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - } - count=$((count+1)) + config_load shadowsocks-libev + config_foreach _enable_redir ss_redir + count=$((count+1)) + else + config_load shadowsocks-libev + config_foreach _disable_redir ss_redir + fi + countips=$((countips+1)) } config_list_foreach $1 ip set_ip break @@ -91,6 +116,7 @@ _check_master() { _check_backup() { local name=$1 local count=0 + local countips=0 config_get backup $1 backup config_get ip $1 ip config_get port $1 port @@ -99,43 +125,52 @@ _check_backup() { set_ip() { #_ping_server $ip _check_server $ip $port - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break - [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ] && { - logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss${count}.server=$ip - commit shadowsocks-libev - EOF - if [ "$count" -eq "0" ]; then + #[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break + if [ "$server_ping" = true ]; then + if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then + logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" uci -q batch <<-EOF >/dev/null - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn + set shadowsocks-libev.sss${count}.server=$ip + commit shadowsocks-libev EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + if [ "$count" -eq "0" ]; then + uci -q batch <<-EOF >/dev/null + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + fi + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null + sleep $waittest fi - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - sleep $waittest - break - } - count=$((count+1)) + config_load shadowsocks-libev + config_foreach _enable_redir ss_redir + count=$((count+1)) + else + config_load shadowsocks-libev + config_foreach _disable_redir ss_redir + fi + countips=$((countips+1)) } config_list_foreach $1 ip set_ip + uci -q commit shadowsocks-libev + [ "$server_ping" = true ] && break } } From 5ff2617fcbe04c2bbfdf57ce5c0e2f3b5f1a9322 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 14:36:32 +0100 Subject: [PATCH 124/137] omr-test-speed can now work on server side --- openmptcprouter/files/bin/omr-test-speed | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/openmptcprouter/files/bin/omr-test-speed b/openmptcprouter/files/bin/omr-test-speed index c38fcd9e4..fa95ff2cc 100755 --- a/openmptcprouter/files/bin/omr-test-speed +++ b/openmptcprouter/files/bin/omr-test-speed @@ -28,11 +28,15 @@ if [ -z "$INTERFACE" ]; then else domain=$(echo $HOST | awk -F/ '{print $3}') hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') - for ip in $hostip; do - ipset add ss_rules_dst_bypass_all $ip - done + if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then + for ip in $hostip; do + ipset add ss_rules_dst_bypass_all $ip + done + fi curl -4 --interface $INTERFACE $HOST >/dev/null || echo - for ip in $hostip; do - ipset del ss_rules_dst_bypass_all $ip - done + if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then + for ip in $hostip; do + ipset del ss_rules_dst_bypass_all $ip + done + fi fi From bcdd7ac67ba5a26c90cf95d60b8e13b7a8646195 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 14:37:01 +0100 Subject: [PATCH 125/137] Fix firewall redirect from public IP to router --- .../files/etc/init.d/openmptcprouter-vps | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 5241b9fbc..f6aee441e 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -804,6 +804,9 @@ _vps_firewall_redirect_port() { config_get src_ip $1 src_ip config_get v2ray $1 v2ray "0" config_get dmz $1 dmz "0" + if [ -z "$src_dport" ] && [ -n "$dest_port" ]; then + src_dport=$dest_port + fi if [ "$dmz" = "1" ] && [ "$src_dport" != "2-64999" ]; then uci -q batch <<-EOF >/dev/null set firewall.${section}.src_dport='2-64999' @@ -971,6 +974,15 @@ _vps_firewall_close_port() { } _set_vps_firewall() { + fw3 -q print | grep 'vpn.* -d' | + while IFS=$"\n" read -r c; do + eval $(echo $c | sed 's/-A/-D/') 2>&1 >/dev/null + newrule=$(echo $c | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') + eval $(echo $newrule | sed 's/-A/-D/') || true + eval $newrule + done + #' + fwservername=$1 [ -z "$servername" ] && servername=$fwservername [ -z "$fwservername" ] && fwservername=$servername @@ -1005,13 +1017,6 @@ _set_vps_firewall() { } set_vps_firewall() { - fw3 -q print | grep 'vpn.* -d' | - while IFS=$"\n" read -r c; do - eval $(echo $c | sed 's/-A/-D/') 2>&1 >/dev/null - newrule=$(echo $c | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') - eval $(echo $newrule | sed 's/-A/-C/') || eval $newrule - done - #' config_load openmptcprouter config_foreach _set_vps_firewall server } From 96283d0252ecab05e3525ed2a6640c9dbc44243a Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Feb 2021 15:29:41 +0100 Subject: [PATCH 126/137] Force firewall network to be a list --- .../luasrc/controller/openmptcprouter.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index bc7b55188..453b69479 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -36,6 +36,15 @@ end function wizard_add() local gostatus = true + + -- Force WAN zone firewall members to be a list + local fwwan = sys.exec("uci -q get firewall.@zone[1].network") + luci.sys.call("uci -q delete firewall.@zone[1].network") + for interface in fwwan:gmatch("%S+") do + luci.sys.call("uci -q add_list firewall.@zone[1].network=" .. interface) + end + ucic:save("firewall") + -- Add new server local add_server = luci.http.formvalue("add_server") or "" local add_server_name = luci.http.formvalue("add_server_name") or "" @@ -190,7 +199,9 @@ function wizard_add() for intf, _ in pairs(delete_intf) do local defif = ucic:get("network",intf,"ifname") ucic:delete("network",intf) - ucic:delete("network",intf .. "_dev") + if ucic:get("network",intf .. "_dev") ~= "" then + ucic:delete("network",intf .. "_dev") + end ucic:save("network") ucic:commit("network") ucic:delete("sqm",intf) From ed8fa2811538dd2a3a817abe44d2f3792f4c5ebe Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 11 Feb 2021 21:12:55 +0100 Subject: [PATCH 127/137] Fix wizard display --- .../luasrc/view/openmptcprouter/wizard.htm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 317d7051c..0e7e838a6 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -68,7 +68,7 @@

    <%=servername%>

    -
    +
    " data-optional="false"> @@ -77,7 +77,7 @@
    -
    +
    " data-optional="false"> @@ -86,12 +86,12 @@ <%:Server IP will be set for proxy and VPN%>
    - <%:A secondary server IP can be set for dual IPv4/IPv6 server contact if WAN IPv6 are set%> + <%:A second server's IP can be set for dual IPv4/IPv6 server if WAN IPv6 are set%>

    -
    +
    " data-optional="false"> @@ -101,7 +101,7 @@
    -
    +
    " data-optional="false"> @@ -115,7 +115,7 @@ if nbserver > 1 then %>
    -
    +
    checked<% end %>/> @@ -129,7 +129,7 @@ end %>
    -
    +
    checked<% end %>/> From bbc373d1577709eb0cb674498a7075da6bfe9067 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 11 Feb 2021 21:13:57 +0100 Subject: [PATCH 128/137] Check gateway using ping from interface --- .../root/usr/libexec/rpcd/openmptcprouter | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index b80a81a7d..bc36f9649 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -1232,7 +1232,12 @@ function interfaces_status() if gateway ~= "" or gateway6 ~= "" then if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then if gateway ~= "" then - local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) + local gw_ping_test = "" + if ifname ~= "" and ifname ~= nil then + gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway .. " | grep '100% packet loss'")) + else + gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) + end if gw_ping_test ~= "" then gw_ping = "DOWN" if connectivity == "OK" then @@ -1241,7 +1246,12 @@ function interfaces_status() end end if gateway6 ~= "" then - local gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'")) + local gw_ping6_test = "" + if ifname ~= "" and ifname ~= nil then + gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway6 .. " | grep '100% packet loss'")) + else + gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'")) + end if gw_ping6_test ~= "" then gw_ping6 = "DOWN" if connectivity == "OK" then From f6cfd19828bc08fd48f4f177ce2c8769937fe945 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 11 Feb 2021 21:15:04 +0100 Subject: [PATCH 129/137] Fix omr test speed v6 --- openmptcprouter/files/bin/omr-test-speedv6 | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/openmptcprouter/files/bin/omr-test-speedv6 b/openmptcprouter/files/bin/omr-test-speedv6 index b80399e5c..0d5444041 100755 --- a/openmptcprouter/files/bin/omr-test-speedv6 +++ b/openmptcprouter/files/bin/omr-test-speedv6 @@ -3,14 +3,14 @@ INTERFACE="$1" echo "Select best test server..." -HOSTLST="http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin http://ipv4.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin" +HOSTLST="http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin http://ipv6.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin" bestping="999" for pinghost in $HOSTLST; do domain=$(echo $pinghost | awk -F/ '{print $3}') if [ -z "$INTERFACE" ]; then - ping=$(ping -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1) + ping=$(ping -6 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1) else - ping=$(ping -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1) + ping=$(ping -6 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1) fi echo "host: $domain - ping: $ping" if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then @@ -28,11 +28,15 @@ if [ -z "$INTERFACE" ]; then else domain=$(echo $HOST | awk -F/ '{print $3}') hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') - for ip in $hostip; do - ipset add ss_rules6_dst_bypass_all $ip - done + if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then + for ip in $hostip; do + ipset add ss_rules6_dst_bypass_all $ip + done + fi curl -6 --interface $INTERFACE $HOST >/dev/null || echo - for ip in $hostip; do - ipset del ss_rules6_dst_bypass_all $ip - done + if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then + for ip in $hostip; do + ipset del ss_rules6_dst_bypass_all $ip + done + fi fi From 14a3be2bce063fa69a704ff5dad9661fcd17d0e7 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Thu, 11 Feb 2021 21:15:32 +0100 Subject: [PATCH 130/137] Fix firewall rules setting --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index f6aee441e..e299b4a90 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -976,8 +976,8 @@ _vps_firewall_close_port() { _set_vps_firewall() { fw3 -q print | grep 'vpn.* -d' | while IFS=$"\n" read -r c; do - eval $(echo $c | sed 's/-A/-D/') 2>&1 >/dev/null - newrule=$(echo $c | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') + eval $(echo $c | sed 's/iptables/iptables -w/' | sed 's/-A/-D/') 2>&1 >/dev/null + newrule=$(echo $c | sed 's/iptables/iptables -w/' | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') eval $(echo $newrule | sed 's/-A/-D/') || true eval $newrule done From b5f4261207b65ed84b1d0815ae99439304bb0666 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 12 Feb 2021 15:01:18 +0100 Subject: [PATCH 131/137] Update and fix bcm27xx eeprom --- bcm27xx-eeprom/Makefile | 4 ++-- .../0001-rpi-eeprom-update-OpenWrt-defaults.patch | 10 ++++++---- ...rpi-eeprom-update-change-default-include-path.patch | 9 --------- .../patches/0004-rpi-eeprom-update-remove-chmod.patch | 4 ++-- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile index 6a4dda9b4..dec227d51 100644 --- a/bcm27xx-eeprom/Makefile +++ b/bcm27xx-eeprom/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-eeprom -PKG_VERSION:=3d6165304cb04bda4454e460dea791b5f92a122a +PKG_VERSION:=2fec47bd7f981c9cb21b0fb3fdd4fe07f23f9e3b PKG_RELEASE:=4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)? -PKG_HASH:=d6f25e3d962ea3c770ca1af78466371c47970381b48fb7c2acaf838966d327fc +PKG_HASH:=f54c26ec399801dee7d3d0cc0e969c28878b6f42c982e166c863edb91d2d2a21 PKG_LICENSE:=BSD-3-Clause Custom PKG_LICENSE_FILES:=LICENSE diff --git a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch index a9c8faac7..059426306 100644 --- a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch +++ b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch @@ -14,22 +14,24 @@ Signed-off-by: Álvaro Fernández Rojas --- a/rpi-eeprom-update +++ b/rpi-eeprom-update -@@ -24,15 +24,15 @@ else +@@ -24,17 +24,17 @@ else fi - # May be used to select beta or stable releases instead of the default critical updates. --FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-critical} + # Selects the release sub-directory +-FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default} +FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-stable} FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}} -FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup} +FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup} ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1} - USE_FLASHROM=${USE_FLASHROM:-0} RECOVERY_BIN=${RECOVERY_BIN:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}/recovery.bin} BOOTFS=${BOOTFS:-/boot} -VCMAILBOX=${VCMAILBOX:-/opt/vc/bin/vcmailbox} +VCMAILBOX=${VCMAILBOX:-/usr/bin/vcmailbox} CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0} + RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}" + + DT_BOOTLOADER_TS=${DT_BOOTLOADER_TS:-/proc/device-tree/chosen/bootloader/build-timestamp} EXIT_SUCCESS=0 EXIT_UPDATE_REQUIRED=1 diff --git a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch index 6aee93cf2..f24a9c3f1 100644 --- a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch +++ b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch @@ -24,12 +24,3 @@ Signed-off-by: Álvaro Fernández Rojas fi LOCAL_MODE=0 -@@ -345,7 +345,7 @@ Options: - -u Install the specified VL805 (USB EEPROM) image file. - - Environment: --Environment variables should be defined in /etc/default/rpi-eeprom-update -+Environment variables should be defined in /etc/bcm27xx-eeprom.conf - - EEPROM_CONFIG_HOOK - diff --git a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch b/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch index cf8cddc40..a79fa89b1 100644 --- a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch +++ b/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch @@ -1,6 +1,6 @@ --- a/rpi-eeprom-update 2020-11-05 21:58:02.247836497 +0100 +++ b/rpi-eeprom-update 2020-11-05 21:58:36.911266307 +0100 -@@ -186,8 +186,8 @@ +@@ -212,8 +212,8 @@ || die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}" # For NFS mounts ensure that the files are readable to the TFTP user @@ -11,7 +11,7 @@ fi if [ -n "${VL805_UPDATE_IMAGE}" ]; then -@@ -198,8 +198,8 @@ +@@ -224,8 +224,8 @@ || die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin" # For NFS mounts ensure that the files are readable to the TFTP user From 61b651cd4257b61e44840408f9856185c1bba24c Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 12 Feb 2021 15:01:56 +0100 Subject: [PATCH 132/137] Fix IPv6 for wan in wizard --- .../luasrc/controller/openmptcprouter.lua | 4 +++- .../root/etc/init.d/openmptcprouter | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 453b69479..f9e130e76 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -309,7 +309,9 @@ function wizard_add() if proto == "dhcpv6" then ucic:set("network",intf,"reqaddress","try") - ucic:set("network",intf,"reqprefix","auto") + ucic:set("network",intf,"reqprefix","no") + ucic:set("network",intf,"iface_map","0") + ucic:set("network",intf,"ipv6","1") end ucic:delete("openmptcprouter",intf,"lc") diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index decb1fdcc..73655b167 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -1,5 +1,5 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # Released under GPL 3. See LICENSE for the full terms. START=5 @@ -66,7 +66,7 @@ omr_set_settings() { uci -q set openmptcprouter.$1=interface uci -q set openmptcprouter.$1.multipath="$multipath" config_get disable_ipv6 settings disable_ipv6 "0" - if [ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]; then + if [ "$proto" != "dhcpv6" ] && ([ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]); then uci -q set network.$1.ipv6=0 else uci -q set network.$1.ipv6=1 @@ -78,6 +78,13 @@ omr_set_settings() { [ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') if [ -n "$ifname" ]; then + if [ "$proto" = "dhcpv6" ]; then + # Change interface name for sysctl in case of VLAN (eth0.2 => eth0/2) + ifnamesys=$(echo $ifname | sed 's:\.:/:') + sysctl -qw net.ipv6.conf.${ifnamesys}.disable_ipv6=0 + sysctl -qw net.ipv6.conf.${ifnamesys}.accept_ra=1 + fi + if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then tc qdisc del dev ${ifname} root netem fi From 313324a35d660f26c879a9e459a44ac4e8370bc4 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 12 Feb 2021 15:02:34 +0100 Subject: [PATCH 133/137] Fix text for DHCP static help --- .../htdocs/luci-static/resources/view/network/dhcp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index d51c0b33d..ed2b50866 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -491,7 +491,7 @@ return view.extend({ so.datatype = 'or(ip4addr,"ignore")'; so.rmempty = true; - so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is minutes (mini 2m), hours (eg 1h) or "infinite"')); + so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is in minutes (mini 2m), hours (eg 1h) or "infinite"')); so.placeholder = '12h'; so.rmempty = true; From 0b60a4feecd32b68eb7a0c635f8856b3c3f0c6de Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 12 Feb 2021 15:08:14 +0100 Subject: [PATCH 134/137] Add some DNS over TLS server in unbound config --- .../files/etc/uci-defaults/1940-omr-dns | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index 662442e18..e66213732 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -66,6 +66,144 @@ fi # commit unbound #EOF +if [ -z "$(uci -q unbound.auth_icann)" ]; then + uci -q batch <<-EOF >/dev/null + set unbound.auth_icann=zone + set unbound.auth_icann.fallback='1' + set unbound.auth_icann.url_dir='https://www.internic.net/domain/' + set unbound.auth_icann.zone_type='auth_zone' + add_list unbound.auth_icann.server='lax.xfr.dns.icann.org' + add_list unbound.auth_icann.server='iad.xfr.dns.icann.org' + add_list unbound.auth_icann.zone_name='.' + add_list unbound.auth_icann.zone_name='arpa.' + add_list unbound.auth_icann.zone_name='in-addr.arpa.' + add_list unbound.auth_icann.zone_name='ip6.arpa.' + set unbound.auth_icann.enabled='1' + set unbound.fwd_isp=zone + set unbound.fwd_isp.enabled='0' + set unbound.fwd_isp.fallback='1' + set unbound.fwd_isp.resolv_conf='1' + set unbound.fwd_isp.zone_type='forward_zone' + add_list unbound.fwd_isp.zone_name='isp-bill.example.com.' + add_list unbound.fwd_isp.zone_name='isp-mail.example.net.' + set unbound.fwd_google=zone + set unbound.fwd_google.enabled='0' + set unbound.fwd_google.fallback='1' + set unbound.fwd_google.tls_index='dns.google' + set unbound.fwd_google.tls_upstream='1' + set unbound.fwd_google.zone_type='forward_zone' + add_list unbound.fwd_google.server='8.8.4.4' + add_list unbound.fwd_google.server='8.8.8.8' + add_list unbound.fwd_google.server='2001:4860:4860::8844' + add_list unbound.fwd_google.server='2001:4860:4860::8888' + set unbound.fwd_google.zone_name='.' + set unbound.fwd_cloudflare=zone + set unbound.fwd_cloudflare.enabled='0' + set unbound.fwd_cloudflare.fallback='1' + set unbound.fwd_cloudflare.tls_index='cloudflare-dns.com' + set unbound.fwd_cloudflare.tls_upstream='1' + set unbound.fwd_cloudflare.zone_type='forward_zone' + add_list unbound.fwd_cloudflare.server='1.1.1.1' + add_list unbound.fwd_cloudflare.server='1.0.0.1' + add_list unbound.fwd_cloudflare.server='2606:4700:4700::1111' + add_list unbound.fwd_cloudflare.server='2606:4700:4700::1001' + set unbound.fwd_cloudflare.zone_name='.' + EOF +fi + +if [ -z "$(uci -q get unbound.fwd_adguard_family)" ]; then + uci -q batch <<-EOF >/dev/null + set unbound.fwd_adguard_family=zone + set unbound.fwd_adguard_family.enabled='0' + set unbound.fwd_adguard_family.fallback='1' + set unbound.fwd_adguard_family.tls_index='dns-family.adguard.com' + set unbound.fwd_adguard_family.tls_upstream='1' + set unbound.fwd_adguard_family.zone_type='forward_zone' + add_list unbound.fwd_adguard_family.server='176.103.130.132' + add_list unbound.fwd_adguard_family.server='176.103.130.134' + set unbound.fwd_adguard_family.zone_name='.' + set unbound.fwd_adguard_standard=zone + set unbound.fwd_adguard_standard.enabled='0' + set unbound.fwd_adguard_standard.fallback='1' + set unbound.fwd_adguard_standard.tls_index='dns.adguard.com' + set unbound.fwd_adguard_standard.tls_upstream='1' + set unbound.fwd_adguard_standard.zone_type='forward_zone' + add_list unbound.fwd_adguard_standard.server='176.103.130.130' + add_list unbound.fwd_adguard_standard.server='176.103.130.131' + set unbound.fwd_adguard_standard.zone_name='.' + set unbound.fwd_cloudflare_family=zone + set unbound.fwd_cloudflare_family.enabled='0' + set unbound.fwd_cloudflare_family.fallback='1' + set unbound.fwd_cloudflare_family.tls_index='family.cloudflare-dns.com' + set unbound.fwd_cloudflare_family.tls_upstream='1' + set unbound.fwd_cloudflare_family.zone_type='forward_zone' + add_list unbound.fwd_cloudflare_family.server='1.1.1.3' + add_list unbound.fwd_cloudflare_family.server='1.0.0.3' + set unbound.fwd_cloudflare_family.zone_name='.' + set unbound.fwd_cloudflare_malware=zone + set unbound.fwd_cloudflare_malware.enabled='0' + set unbound.fwd_cloudflare_malware.fallback='1' + set unbound.fwd_cloudflare_malware.tls_index='security.cloudflare-dns.com' + set unbound.fwd_cloudflare_malware.tls_upstream='1' + set unbound.fwd_cloudflare_malware.zone_type='forward_zone' + add_list unbound.fwd_cloudflare_malware.server='1.1.1.2' + add_list unbound.fwd_cloudflare_malware.server='1.0.0.2' + set unbound.fwd_cloudflare_malware.zone_name='.' + set unbound.fwd_odvr=zone + set unbound.fwd_odvr.enabled='0' + set unbound.fwd_odvr.fallback='1' + set unbound.fwd_odvr.tls_index='odvr.nic.cz' + set unbound.fwd_odvr.tls_upstream='1' + set unbound.fwd_odvr.zone_type='forward_zone' + add_list unbound.fwd_odvr.server='193.17.47.1' + add_list unbound.fwd_odvr.server='185.43.135.1' + set unbound.fwd_odvr.zone_name='.' + set unbound.fwd_libredns=zone + set unbound.fwd_libredns.enabled='0' + set unbound.fwd_libredns.fallback='1' + set unbound.fwd_libredns.tls_index='doh.libredns.gr' + set unbound.fwd_libredns.tls_upstream='1' + set unbound.fwd_libredns.zone_type='forward_zone' + add_list unbound.fwd_libredns.server='116.202.176.26' + set unbound.fwd_libredns.zone_name='.' + set unbound.fwd_quad9_recommended=zone + set unbound.fwd_quad9_recommended.enabled='0' + set unbound.fwd_quad9_recommended.fallback='1' + set unbound.fwd_quad9_recommended.tls_index='dns.quad9.net' + set unbound.fwd_quad9_recommended.tls_upstream='1' + set unbound.fwd_quad9_recommended.zone_type='forward_zone' + add_list unbound.fwd_quad9_recommended.server='9.9.9.9' + add_list unbound.fwd_quad9_recommended.server='149.112.112.112' + set unbound.fwd_quad9_recommended.zone_name='.' + set unbound.fwd_quad9_unsecured=zone + set unbound.fwd_quad9_unsecured.enabled='0' + set unbound.fwd_quad9_unsecured.fallback='1' + set unbound.fwd_quad9_unsecured.tls_index='dns10.quad9.net' + set unbound.fwd_quad9_unsecured.tls_upstream='1' + set unbound.fwd_quad9_unsecured.zone_type='forward_zone' + add_list unbound.fwd_quad9_unsecured.server='9.9.9.10' + add_list unbound.fwd_quad9_unsecured.server='149.112.112.10' + set unbound.fwd_quad9_unsecured.zone_name='.' + set unbound.fwd_quad9_ecs=zone + set unbound.fwd_quad9_ecs.enabled='0' + set unbound.fwd_quad9_ecs.fallback='1' + set unbound.fwd_quad9_ecs.tls_index='dns11.quad9.net' + set unbound.fwd_quad9_ecs.tls_upstream='1' + set unbound.fwd_quad9_ecs.zone_type='forward_zone' + add_list unbound.fwd_quad9_ecs.server='9.9.9.11' + add_list unbound.fwd_quad9_ecs.server='149.112.112.11' + set unbound.fwd_quad9_ecs.zone_name='.' + set unbound.fwd_quad9_secured=zone + set unbound.fwd_quad9_secured.enabled='0' + set unbound.fwd_quad9_secured.fallback='1' + set unbound.fwd_quad9_secured.tls_index='dns9.quad9.net' + set unbound.fwd_quad9_secured.tls_upstream='1' + set unbound.fwd_quad9_secured.zone_type='forward_zone' + add_list unbound.fwd_quad9_secured.server='9.9.9.9' + add_list unbound.fwd_quad9_secured.server='149.112.112.9' + set unbound.fwd_quad9_secured.zone_name='.' + EOF +fi rm -f /tmp/luci-indexcache From a939f868474c51a761846e83c48c9adcfda9ab8f Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 12 Feb 2021 15:08:53 +0100 Subject: [PATCH 135/137] Add compilation for Ubiquiti EdgeRouter X --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a837a7293..0fbd63a7c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ jobs: build: strategy: matrix: - OMR_TARGET: [bpi-r2, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64] + OMR_TARGET: [bpi-r2, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64, ubnt-erx] runs-on: ubuntu-latest continue-on-error: true From 94a14ed67ea230d210d4b8380fb49d2c0af9b8ac Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Sat, 13 Feb 2021 17:34:08 +0100 Subject: [PATCH 136/137] Fix ip -6 route in omr-tracker --- omr-tracker/files/bin/omr-tracker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 637c27019..84a159e84 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -377,7 +377,7 @@ while true; do _dns "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes" statusb=$? fi - ip route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 + ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 if $(exit $statusb); then OMR_TRACKER_STATUS_MSG="" OMR_TRACKER_STATUS="OK" From 98e4043959fe86eed7f473a228e1007e8a7fe4ba Mon Sep 17 00:00:00 2001 From: suyuan <175338101@qq.com> Date: Sun, 14 Feb 2021 00:47:40 +0800 Subject: [PATCH 137/137] fix mansgera --- bcm27xx-eeprom/Makefile | 6 +- ...1-rpi-eeprom-update-OpenWrt-defaults.patch | 10 +- ...m-update-change-default-include-path.patch | 9 + .../0004-rpi-eeprom-update-remove-chmod.patch | 4 +- glorytun-udp/init | 8 +- .../luasrc/model/cbi/https-dns-proxy.lua | 18 +- luci-app-iperf/luasrc/controller/iperf.lua | 2 +- luci-app-mptcp/luasrc/model/cbi/mptcp.lua | 4 +- .../root/etc/init.d/omr-bypass | 36 +- .../openmptcprouter/css/wanstatus.css | 16 +- .../luasrc/controller/openmptcprouter.lua | 107 +-- .../luasrc/view/openmptcprouter/settings.htm | 8 +- .../luasrc/view/openmptcprouter/wanstatus.htm | 80 +- .../luasrc/view/openmptcprouter/wizard.htm | 128 +--- .../po/templates/openmptcprouter.pot | 684 ++++++++--------- luci-app-openmptcprouter/root/bin/omr-ip-intf | 12 +- .../root/bin/omr-ip6-intf | 37 - .../root/bin/omr-tracebox-mptcp | 15 +- .../root/etc/hotplug.d/net/99-omr-rename | 24 +- .../root/etc/init.d/openmptcprouter | 89 +-- .../root/etc/uci-defaults/openmptcprouter | 7 - .../root/usr/libexec/rpcd/openmptcprouter | 523 ++++--------- luci-app-sysupgrade/Makefile | 11 - .../luasrc/view/sysupgrade.htm | 123 --- .../po/templates/sysupgrade.pot | 81 -- .../root/etc/init.d/sysupgrade | 20 - .../root/etc/uci-defaults/40_luci-sysupgrade | 20 - .../luci/menu.d/luci-app-sysupgrade.json | 13 - .../root/usr/share/rpcd/acl.d/sysupgrade.json | 34 - .../www/luci-static/resources/sysupgrade.js | 387 ---------- .../view/dashboard/include/10_router.js | 2 +- .../resources/view/network/dhcp.js | 2 +- mptcp/files/usr/bin/multipath | 4 +- .../share/omr/post-tracking.d/post-tracking | 711 ++++-------------- mptcpd/Makefile | 4 +- ndpi-netfilter2/Makefile | 4 +- omr-tracker/files/bin/omr-tracker | 115 --- omr-tracker/files/bin/omr-tracker-gre | 2 +- omr-tracker/files/bin/omr-tracker-server | 174 ++--- omr-tracker/files/bin/omr-tracker-ss | 30 +- omr-tracker/files/bin/omr-tracker-v2ray | 7 +- omr-tracker/files/etc/init.d/omr-tracker | 74 +- openmptcprouter-full/Makefile | 3 +- openmptcprouter/files/bin/omr-test-speed | 14 +- openmptcprouter/files/bin/omr-test-speedv6 | 41 +- openmptcprouter/files/bin/omr-tracebox | 3 - openmptcprouter/files/etc/init.d/mptcpovervpn | 6 +- .../files/etc/init.d/openmptcprouter-vps | 130 +--- .../files/etc/init.d/openvpnbonding | 2 +- .../{zzzzz-omr-update => 000-omr-update} | 0 .../etc/uci-defaults/1930-omr-shadowsocks | 52 +- .../files/etc/uci-defaults/1940-omr-dns | 140 +--- .../files/etc/uci-defaults/1980-omr-firewall | 35 - .../files/etc/uci-defaults/2060-omr-system | 6 +- .../files/etc/uci-defaults/2092-upnpd | 10 - .../files/shadowsocks-libev.config | 2 +- .../files/shadowsocks-libev.init | 32 +- shadowsocks-libev/files/ss-rules | 67 +- shadowsocks-libev/files/ss-rules6 | 48 +- v2ray-core/files/etc/init.d/v2ray | 2 +- v2ray-core/files/usr/bin/v2ray-rules | 46 +- v2ray-core/files/usr/bin/v2ray-rules6 | 42 +- 62 files changed, 1040 insertions(+), 3286 deletions(-) delete mode 100755 luci-app-openmptcprouter/root/bin/omr-ip6-intf delete mode 100644 luci-app-sysupgrade/Makefile delete mode 100644 luci-app-sysupgrade/luasrc/view/sysupgrade.htm delete mode 100644 luci-app-sysupgrade/po/templates/sysupgrade.pot delete mode 100755 luci-app-sysupgrade/root/etc/init.d/sysupgrade delete mode 100755 luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade delete mode 100644 luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json delete mode 100644 luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json delete mode 100644 luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js rename openmptcprouter/files/etc/uci-defaults/{zzzzz-omr-update => 000-omr-update} (100%) delete mode 100755 openmptcprouter/files/etc/uci-defaults/2092-upnpd diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile index dec227d51..8397130ae 100644 --- a/bcm27xx-eeprom/Makefile +++ b/bcm27xx-eeprom/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-eeprom -PKG_VERSION:=2fec47bd7f981c9cb21b0fb3fdd4fe07f23f9e3b -PKG_RELEASE:=4 +PKG_VERSION:=16bb29427f96dc8276a7102c0526154a1084bffd +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)? -PKG_HASH:=f54c26ec399801dee7d3d0cc0e969c28878b6f42c982e166c863edb91d2d2a21 +PKG_HASH:=9bf42edbcd5ce38538750860c3c788af435206aa441b7d78cf88d094631dbb14 PKG_LICENSE:=BSD-3-Clause Custom PKG_LICENSE_FILES:=LICENSE diff --git a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch index 059426306..a9c8faac7 100644 --- a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch +++ b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch @@ -14,24 +14,22 @@ Signed-off-by: Álvaro Fernández Rojas --- a/rpi-eeprom-update +++ b/rpi-eeprom-update -@@ -24,17 +24,17 @@ else +@@ -24,15 +24,15 @@ else fi - # Selects the release sub-directory --FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default} + # May be used to select beta or stable releases instead of the default critical updates. +-FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-critical} +FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-stable} FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}} -FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup} +FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup} ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1} + USE_FLASHROM=${USE_FLASHROM:-0} RECOVERY_BIN=${RECOVERY_BIN:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}/recovery.bin} BOOTFS=${BOOTFS:-/boot} -VCMAILBOX=${VCMAILBOX:-/opt/vc/bin/vcmailbox} +VCMAILBOX=${VCMAILBOX:-/usr/bin/vcmailbox} CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0} - RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}" - - DT_BOOTLOADER_TS=${DT_BOOTLOADER_TS:-/proc/device-tree/chosen/bootloader/build-timestamp} EXIT_SUCCESS=0 EXIT_UPDATE_REQUIRED=1 diff --git a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch index f24a9c3f1..6aee93cf2 100644 --- a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch +++ b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch @@ -24,3 +24,12 @@ Signed-off-by: Álvaro Fernández Rojas fi LOCAL_MODE=0 +@@ -345,7 +345,7 @@ Options: + -u Install the specified VL805 (USB EEPROM) image file. + + Environment: +-Environment variables should be defined in /etc/default/rpi-eeprom-update ++Environment variables should be defined in /etc/bcm27xx-eeprom.conf + + EEPROM_CONFIG_HOOK + diff --git a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch b/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch index a79fa89b1..cf8cddc40 100644 --- a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch +++ b/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch @@ -1,6 +1,6 @@ --- a/rpi-eeprom-update 2020-11-05 21:58:02.247836497 +0100 +++ b/rpi-eeprom-update 2020-11-05 21:58:36.911266307 +0100 -@@ -212,8 +212,8 @@ +@@ -186,8 +186,8 @@ || die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}" # For NFS mounts ensure that the files are readable to the TFTP user @@ -11,7 +11,7 @@ fi if [ -n "${VL805_UPDATE_IMAGE}" ]; then -@@ -224,8 +224,8 @@ +@@ -198,8 +198,8 @@ || die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin" # For NFS mounts ensure that the files are readable to the TFTP user diff --git a/glorytun-udp/init b/glorytun-udp/init index e9f7caf7c..5e50d59df 100755 --- a/glorytun-udp/init +++ b/glorytun-udp/init @@ -56,15 +56,11 @@ start_instance() { _log "starting ${PROG_NAME} ${1} instance $*" - if [ "$mode" = "to" ]; then - bind="bind from addr :: port 5000 to addr $host port $port" - else - bind="bind from addr $host port $port to addr :: port 5000" - fi procd_open_instance procd_set_param command ${PROG} \ - ${bind} \ + ${host:+bind ${mode} addr "$host"} \ + ${port:+port "$port"} \ ${dev:+dev "$dev"} \ keyfile /tmp/${PROG_NAME}-${1}.key \ persist diff --git a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua index d4fee9e00..d914bf09a 100644 --- a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua +++ b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua @@ -36,16 +36,14 @@ function create_helper_text() end function get_provider_name(value) - if value ~= nil then - for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - value = value:gsub('[%p%c%s]', '') - p.url_match = p.resolver_url:gsub('[%p%c%s]', '') - if value:match(p.url_match) then - return p.label - end + for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + value = value:gsub('[%p%c%s]', '') + p.url_match = p.resolver_url:gsub('[%p%c%s]', '') + if value:match(p.url_match) then + return p.label end end return translate("Unknown Provider") diff --git a/luci-app-iperf/luasrc/controller/iperf.lua b/luci-app-iperf/luasrc/controller/iperf.lua index cbc3f1e12..e6cb2ec3a 100644 --- a/luci-app-iperf/luasrc/controller/iperf.lua +++ b/luci-app-iperf/luasrc/controller/iperf.lua @@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) end local port = t[ math.random( #t ) ] if password ~= "" then - iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options}) + iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options}) else iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options}) end diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index 27654e021..5c32389fb 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -18,7 +18,7 @@ mtcpck:value(0, translate("disable")) local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) mtcpck:value(1, translate("enable")) mtcpck:value(0, translate("disable")) -local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh")) +local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager")) mtcppm:value("default", translate("default")) mtcppm:value("fullmesh", translate("fullmesh")) mtcppm:value("ndiffports", translate("ndiffports")) @@ -38,7 +38,7 @@ local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SY mtcpsyn.datatype = "uinteger" mtcpsyn.rmempty = false local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) -local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs") +local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'") for cong in string.gmatch(availablecong, "[^%s]+") do congestion:value(cong, translate(cong)) end diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass index a859b345e..3708a0fce 100755 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ b/luci-app-omr-bypass/root/etc/init.d/omr-bypass @@ -50,8 +50,7 @@ _bypass_domains() { _bypass_domain() { local domain=$1 local intf=$2 - intf=$(echo $intf | sed -e 's/\./_/') - + [ -z "$intf" ] && intf="all" if [ -n "$domain" ]; then domain=$(echo $domain | sed 's:^\.::') @@ -69,7 +68,7 @@ _bypass_domain() { fi fi if [ "$(uci -q get dhcp.@dnsmasq[0].ipset | grep /$domain/)" = "" ]; then - uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intfuci,omr6_dst_bypass_$intf" + uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intf,omr6_dst_bypass_$intf" else dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g') for dnsipset in $dnsmasqipset; do @@ -91,7 +90,6 @@ _bypass_mac() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intf=$(echo $intf | sed -e 's/\./_/') local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" @@ -133,7 +131,6 @@ _bypass_lan_ip() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intf=$(echo $intf | sed -e 's/\./_/') local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" @@ -191,7 +188,6 @@ _bypass_dest_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intf=$(echo $intf | sed -e 's/\./_/') local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" @@ -247,7 +243,6 @@ _bypass_src_port() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intf=$(echo $intf | sed -e 's/\./_/') local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" @@ -301,7 +296,6 @@ _bypass_proto() { config_get intf $1 interface config_get enabled $1 enabled [ "$enabled" = "0" ] && return - intf=$(echo $intf | sed -e 's/\./_/') local intfid="$(uci -q get omr-bypass.$intf.id)" [ -z "$intf" ] && intf="all" @@ -375,25 +369,13 @@ _bypass_proto() { _intf_rule_ss_rules() { rule_name=$1 [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_dst)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_dst | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN - COMMIT - EOF - fi - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_local_out)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_local_out | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat -I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN - COMMIT - EOF - fi - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_pre_src | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat -I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count -I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN COMMIT @@ -407,7 +389,7 @@ _intf_rule_ss_rules() { COMMIT EOF fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *nat -I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count @@ -426,7 +408,7 @@ _intf_rule_v2ray_rules() { #rule_name=$1 #[ "$rule_name" = "ss_rules" ] && rule_name="def" rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *nat -I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count @@ -439,14 +421,14 @@ _intf_rule_v2ray_rules() { EOF fi if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables-save | grep omr-bypass6 | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables --wait=40 -t mangle -L -n | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count COMMIT EOF fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then + if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then ip6tables-restore -w --wait=60 --noflush <<-EOF *nat -I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count @@ -472,7 +454,6 @@ _intf_rule() { #[ "$mode" = "off" ] && return [ -z "$count" ] && return [ -z "$intf" ] && return - intf=$(echo $intf | sed -e 's/\./_/') [ "$(echo $1 | grep _dev)" != "" ] && return [ -z "$RELOAD" ] || [ "$(ipset --list | grep omr_dst_bypass_$intf)" = "" ] && { unset RELOAD @@ -501,11 +482,10 @@ _intf_rule() { ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1 fi } - if [ "$(iptables-save | grep omr-bypass | grep omr_dst_bypass_$intf)" = "" ]; then + if [ "$(iptables --wait=40 -t mangle -L -n | grep omr_dst_bypass_$intf)" = "" ]; then iptables-restore -w --wait=60 --noflush <<-EOF *mangle -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I omr-bypass-local 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count COMMIT EOF fi diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css index 35ad4be96..2e90291e6 100644 --- a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css @@ -71,7 +71,7 @@ ul { -moz-transition: all 0.5s; } .tree ul ul { - padding-left: 5px; + padding-left: 85px; position: relative; } .tree > ul > li:first-child { @@ -152,7 +152,7 @@ right connector from last child*/ top: 50%; left: 0; border-top: 2px solid black; - width: 7px; + width: 85px; height: 100%; } .tree li a { @@ -222,7 +222,7 @@ right connector from last child*/ width: 2px; /*height: 50%;*/ height: 55px; - left: 240px; + left: 200px; /* z-index: -10;*/ } /*Time for some hover effects*/ @@ -243,9 +243,9 @@ Thanks :)*/ .network-node { position: relative; background-color: #f3f3f3; - padding: 8px; - width: 480px; - max-width: 480px; + padding: 12px; + width: 400px; + max-width: 400px; box-sizing: border-box; min-height: 170px; } @@ -282,7 +282,7 @@ Thanks :)*/ .network-node .info { position: relative; float: right; - width: 330px; + width: 250px; text-align: left; font-size: 12px; color: #757575; @@ -319,7 +319,7 @@ Thanks :)*/ width:5px; border-right:2px dotted black; height:70px; - padding-right: 240px; + padding-right: 195px; } #omr { min-height: 190px; diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index f9e130e76..f30be2a41 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -36,15 +36,6 @@ end function wizard_add() local gostatus = true - - -- Force WAN zone firewall members to be a list - local fwwan = sys.exec("uci -q get firewall.@zone[1].network") - luci.sys.call("uci -q delete firewall.@zone[1].network") - for interface in fwwan:gmatch("%S+") do - luci.sys.call("uci -q add_list firewall.@zone[1].network=" .. interface) - end - ucic:save("firewall") - -- Add new server local add_server = luci.http.formvalue("add_server") or "" local add_server_name = luci.http.formvalue("add_server_name") or "" @@ -75,8 +66,7 @@ function wizard_add() ucic:foreach("openmptcprouter", "server", function(s) local servername = s[".name"] nbserver = nbserver + 1 - server_ips = ucic:get_list("openmptcprouter",servername,"ip") - server_ip = server_ips[1] + server_ip = ucic:get("openmptcprouter",servername,"ip") end) if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then ucic:set("shadowsocks-libev","sss0","server",server_ip) @@ -189,7 +179,6 @@ function wizard_add() luci.sys.call("uci -q commit firewall") luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") gostatus = false end @@ -199,9 +188,7 @@ function wizard_add() for intf, _ in pairs(delete_intf) do local defif = ucic:get("network",intf,"ifname") ucic:delete("network",intf) - if ucic:get("network",intf .. "_dev") ~= "" then - ucic:delete("network",intf .. "_dev") - end + ucic:delete("network",intf .. "_dev") ucic:save("network") ucic:commit("network") ucic:delete("sqm",intf) @@ -231,15 +218,12 @@ function wizard_add() local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or "" local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or "" local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or "" - local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or "" local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or "" local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" - local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or "" local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or "" local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or "" - local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or "" local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or "" local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or "" local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or "" @@ -256,13 +240,10 @@ function wizard_add() end ucic:set("network",intf,"type",typeintf) end - if vlan ~= "" then - ifname = ifname .. '.' .. vlan - end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") ucic:set("network",intf,"masterintf",masterintf) - elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then + elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" ) then ucic:set("network",intf,"ifname",ifname) elseif typeintf == "" and device ~= "" and proto == "ncm" then ucic:set("network",intf,"device",device_ncm) @@ -299,20 +280,6 @@ function wizard_add() 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) - else - ucic:set("network",intf,"ip6addr","") - ucic:set("network",intf,"ip6gw","") - end - - if proto == "dhcpv6" then - ucic:set("network",intf,"reqaddress","try") - ucic:set("network",intf,"reqprefix","no") - ucic:set("network",intf,"iface_map","0") - ucic:set("network",intf,"ipv6","1") - end ucic:delete("openmptcprouter",intf,"lc") ucic:save("openmptcprouter") @@ -448,19 +415,7 @@ function wizard_add() local disablednb = 0 local servers = luci.http.formvaluetable("server") for server, _ in pairs(servers) do - local serverips = luci.http.formvaluetable("%s.serverip" % server) or {} - local aserverips = {} - for _, ip in pairs(serverips) do - if ip ~= "" and ip ~= nil then - table.insert(aserverips,ip) - end - end - if disableipv6 == "1" then - if table.getn(aserverips) == 2 then - table.remove(aserverips, 2) - end - end - + local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" local master = luci.http.formvalue("master") or "" -- OpenMPTCProuter VPS @@ -481,14 +436,14 @@ function wizard_add() if openmptcprouter_vps_disabled == "1" then disablednb = disablednb + 1 end - if next(aserverips) ~= nil then + if server_ip ~= "" then 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,"disabled",openmptcprouter_vps_disabled) - ucic:set_list("openmptcprouter",server,"ip",aserverips) + ucic:set("openmptcprouter",server,"ip",server_ip) ucic:set("openmptcprouter",server,"port","65500") ucic:save("openmptcprouter") end @@ -500,9 +455,7 @@ function wizard_add() ucic:set("v2ray","main","enabled","0") ucic:foreach("shadowsocks-libev", "server", function(s) local sectionname = s[".name"] - if sectionname:match("^sss.*") then - ucic:set("shadowsocks-libev",sectionname,"disabled","0") - end + ucic:set("shadowsocks-libev",sectionname,"disabled","0") end) elseif default_proxy == "v2ray" and serversnb > 0 and serversnb > disablednb then --ucic:set("shadowsocks-libev","sss0","disabled","1") @@ -524,13 +477,6 @@ function wizard_add() ucic:save("shadowsocks-libev") ucic:save("v2ray") - ucic:foreach("shadowsocks-libev","server", function(s) - local sectionname = s[".name"] - if sectionname:match("^sss.*") then - ucic:delete("shadowsocks-libev",sectionname,"ip") - ucic:set("shadowsocks-libev",sectionname,"disabled","1") - end - end) local ss_servers_nginx = {} local ss_servers_ha = {} @@ -540,20 +486,14 @@ function wizard_add() for server, _ in pairs(servers) do local master = luci.http.formvalue("master") or "" - local server_ips = luci.http.formvaluetable("%s.serverip" % server) or {} - local server_ip = "" - for _, ip in pairs(server_ips) do - if server_ip == "" and ip ~= "" and ip ~= nil then - server_ip=ip - end - end + local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" -- We have an IP, so set it everywhere - if server_ip ~= "" and server_ip ~= nil and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then + if server_ip ~= "" and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then -- Check if we have more than one IP, in this case use Nginx HA if serversnb > 1 then if master == server then ss_ip=server_ip - --ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -565,17 +505,6 @@ function wizard_add() luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) - local nbip = 0 - for _, ssip in pairs(server_ips) do - ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) - if default_proxy == "shadowsocks" and serversnb > disablednb then - ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") - end - if disableipv6 == "1" and nbip > 0 then - break - end - nbip = nbip + 1 - end end k = k + 1 ucic:set("nginx-ha","ShadowSocks","enable","0") @@ -586,7 +515,7 @@ function wizard_add() ucic:set("openmptcprouter","settings","ha","0") ucic:set("nginx-ha","ShadowSocks","enable","0") ucic:set("nginx-ha","VPN","enable","0") - --ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -598,17 +527,6 @@ function wizard_add() luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) - local nbip = 0 - for _, ssip in pairs(server_ips) do - ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) - if default_proxy == "shadowsocks" and serversnb > disablednb then - ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") - end - nbip = nbip + 1 - if disableipv6 == "1" and nbip > 0 then - break - end - end end end end @@ -936,9 +854,6 @@ function settings_add() -- Enable/disable debug local debug = luci.http.formvalue("debug") or "0" ucic:set("openmptcprouter","settings","debug",debug) - ucic:foreach("shadowsocks-libev", "ss_redir", function (section) - ucic:set("shadowsocks-libev",section[".name"],"verbose",debug) - end) -- Enable/disable vnstat backup local savevnstat = luci.http.formvalue("savevnstat") or "0" diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 7ae4100b4..5ec0b3c2c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -17,9 +17,9 @@ %>
    -

    <%:Update server%>

    +

    <%:Update VPS%>

    -
    <%:Update remotly servers to latest version and reboot them.%> <%:Beta%>
    +
    <%:Update remotly the server to latest version when needed.%> <%:Beta%>
    @@ -40,7 +40,7 @@

    <%:Advanced Settings%>

    - <%:Server settings%> + <%:VPS settings%> <% uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] @@ -255,7 +255,7 @@
    - +
    checked<% end %>>
    diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 83f601bbf..b35f3344f 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -231,25 +231,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); - } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip6) && mArray.openmptcprouter.wan_addr6 != "") - { - var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); - } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") - { - var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr); statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; - } else if (mArray.openmptcprouter.wan_addr6 != "") - { - var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr6); - statusMessageClass = "warning"; - statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr); @@ -259,11 +248,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm var title = '<%:No output%>'; statusMessage += '<%:No output%>' + '
    '; } - if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:No server IP address, No WAN IP address%>' + '
    '; } - if (mArray.openmptcprouter.service_addr !== "" && (mArray.openmptcprouter.wan_addr !== "" || mArray.openmptcprouter.wan_addr6 !== "") && mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += '<%:Can\'t access and use server part%>' + '
    '; } @@ -285,7 +274,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '
    '; - } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
    '; } @@ -403,30 +392,18 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage = ""; } // Populate info - var wanip = mArray.wans[i].wanip; + var wanip = mArray.wans[i].wanip; if (anonymize == "true" && testPrivateIP(wanip) == false) { wanip=replaceLastNChars(wanip,"x",6); } - var wanip6 = mArray.wans[i].wanip6; - if (anonymize == "true") - { - wanip6=replaceLastNChars(wanip6,"x",6); - } - var ipaddr = mArray.wans[i].ipaddr; + var ipaddr = mArray.wans[i].ipaddr; if (anonymize == "true" && testPrivateIP(ipaddr) == false) { ipaddr=replaceLastNChars(ipaddr,"x",6); } - var ip6addr = mArray.wans[i].ip6addr; - if (anonymize == "true") - { - ip6addr=replaceLastNChars(ip6addr,"x",6); - } - var ifname = mArray.wans[i].ifname; - var whois = mArray.wans[i].whois; - var whois6 = mArray.wans[i].whois6; - var signal = mArray.wans[i].signal; + var whois = mArray.wans[i].whois; + var signal = mArray.wans[i].signal; var multipath = mArray.wans[i].multipath; if(multipath == 'master') { @@ -443,13 +420,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { gateway=replaceLastNChars(gateway,"x",6); } - var gateway6 = mArray.wans[i].gateway6; - if (anonymize == "true" && testPrivateIP(gateway6) == false) - { - gateway6=replaceLastNChars(gateway6,"x",10); - } var gw_ping = mArray.wans[i].gw_ping; - var gw_ping6 = mArray.wans[i].gw_ping6; var server_ping = mArray.wans[i].server_ping; var ipv6_discover = mArray.wans[i].ipv6_discover; var multipath_available = mArray.wans[i].multipath_available; @@ -467,9 +438,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if (mArray.wans[i].gateway !== "") { var title = mArray.wans[i].label + " (" + gateway + ")"; - } else if (mArray.wans[i].gateway6 !== "") - { - var title = mArray.wans[i].label + " (" + gateway6 + ")"; } else { var title = mArray.wans[i].label; } @@ -478,30 +446,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } - if(ip6addr !== '' && gateway6 !== '') - { - content += String.format('%s %s
    ','<%:ipv6 address:%>', ip6addr); - } if(wanip !== '') { content += String.format('%s %s
    ','<%:wan address:%>', wanip); } - if(wanip6 !== '') - { - content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); - } - if(ifname !== '' && ifname !== mArray.wans[i].label) - { - content += String.format('%s %s
    ','<%:interface:%>', ifname); - } if(whois !== '') { content += String.format('%s %s
    ','<%:whois:%>', whois); } - if(whois6 !== '') - { - content += String.format('%s %s
    ','<%:whois:%>', whois6); - } if(latency !== '') { content += String.format('%s %s ms
    ','<%:latency:%>', latency); @@ -540,17 +492,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { title += String.format(' %s',networktype); } - if(ipaddr == '' && ip6addr == '') + if(ipaddr == '') { statusMessage += '<%:No IP defined%>' + '
    '; } - if(gateway == '' && gateway6 == '') + if(gateway == '') { statusMessage += '<%:No gateway defined%>' + '
    '; } else if(gw_ping == 'DOWN') - { - statusMessage += '<%:Gateway DOWN%>' + '
    '; - } else if(gw_ping6 == 'DOWN') { statusMessage += '<%:Gateway DOWN%>' + '
    '; } else if(multipath_available == 'ERROR') @@ -566,11 +515,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage += '<%:Wan IP and gateway are identical%>' + '
    '; statusMessageClass = "error"; } - if (stat == 'Offline' && ip6addr != '' && ipaddr == mArray.wans[i].gateway6) - { - statusMessage += '<%:Wan IP and gateway are identical%>' + '
    '; - statusMessageClass = "error"; - } if(multipath == 'master') { if (master > 1) @@ -613,12 +557,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm temp += ''; } - if (mArray.wans.length == 0) - { - temp += '
  • '; - temp += '<%:No WAN with multipath enabled:%>'; - temp += '
  • '; - } for( var i = 0; i < mArray.tunnels.length; i++ ) { // Get link color diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index c599a26d3..da0649831 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -21,20 +21,6 @@ end return true end - function splitstring(inputstr, sep) - if inputstr == nil then - return "" - end - if sep == nil then - sep = "%s" - end - local t={} - for str in string.gmatch(inputstr, "([^"..sep.."]+)") do - table.insert(t, str) - end - return t - end - %> @@ -68,30 +54,17 @@

    <%=servername%>

    -
    - +
    +
    - " data-optional="false"> + " data-optional="false">
    <%:Server IP will be set for proxy and VPN%>
    -
    - -
    - " data-optional="false"> - " data-optional="false"> -
    - <%:Server IP will be set for proxy and VPN%> -
    -
    - <%:A second server's IP can be set for dual IPv4/IPv6 server if WAN IPv6 are set%> -
    -
    -

    -
    +
    " data-optional="false"> @@ -101,7 +74,7 @@
    -
    +
    " data-optional="false"> @@ -115,7 +88,7 @@ if nbserver > 1 then %>
    -
    +
    checked<% end %>/> @@ -129,7 +102,7 @@ end %>
    -
    +
    checked<% end %>/> @@ -174,10 +147,7 @@
    - + checked<% end %> />
    <%:You should disable IPv6 here if server doesn't provide IPv6.%> @@ -541,7 +511,6 @@ <% iffind=0 - uciifname=uci:get("network",ifname,"ifname") - if uciifname:match("/") then - realifname=uciifname - vlan="" - else - realifname=splitstring(uciifname,'.')[1] or "" - vlan=splitstring(uciifname,'.')[2] or "" - end for _, ifacea in ipairs(ifaces) do if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then %> - + <% end end - if iffind == 0 and uciifname ~= nil then + if iffind == 0 and uci:get("network",ifname,"ifname") ~= nil then %> - + <% end %> - -
    <%:Choose physical interface.%> @@ -617,60 +576,6 @@
    - <% - ipv6list = uci:get_list("network",ifname,"ip6addr") - for key, value in pairs(ipv6list) do - %> -
    - -
    - -
    -
    - <%:Set an IP in the same network as the modem%> -
    -
    -
    - <% - end - if table.getn(ipv6list) ~= 0 then - %> -
    - -
    - " data-type="ip6addr"> -
    -
    - <%:Set here IP of the modem%> -
    -
    -
    - <% - else - %> -
    - -
    - -
    -
    - <%:Set an IP in the same network as the modem%> -
    -
    -
    -
    - -
    - " data-type="ip6addr"> -
    -
    - <%:Set here IP of the modem%> -
    -
    -
    - <% - end - %>
    @@ -914,13 +819,6 @@ if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*")) and device_notvirtual(ifacea) then %> - <% - end - end - for _, ifacea in ipairs(net:get_networks()) do - if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then - %> - <% end end @@ -939,4 +837,4 @@
    -<%+footer%> \ No newline at end of file +<%+footer%> diff --git a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot index 684de3447..44d2aae48 100644 --- a/luci-app-openmptcprouter/po/templates/openmptcprouter.pot +++ b/luci-app-openmptcprouter/po/templates/openmptcprouter.pot @@ -1,47 +1,41 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:255 msgid "A Dead Simple VPN is a TCP VPN that can replace Glorytun TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:269 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:271 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:250 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:252 msgid "A Dead Simple VPN key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:77 -msgid "" -"A secondary server IP can be set for dual IPv4/IPv6 server contact if WAN " -"IPv6 are set" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:88 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:72 msgid "API username to retrieve personnalized settings from the server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:732 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:650 msgid "APN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:133 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:117 msgid "Add a new server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:912 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:819 msgid "Add an interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:18 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:41 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:19 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:39 msgid "Advanced Settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:140 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:124 msgid "Advanced settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 msgid "" "All VPN available here can do aggregation over MPTCP or using own internal " "method." @@ -51,269 +45,250 @@ msgstr "" msgid "All router settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:224 msgid "" "An Advanced Encryption Standard (AES) instruction set is integrated in the " "processor." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:758 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:676 msgid "Authentication Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:796 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:812 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:714 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:726 msgid "Backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:21 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:10 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:22 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:8 msgid "Backup on server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:310 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:292 msgid "Balancing" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:20 msgid "Beta" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:307 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:288 msgid "Big time difference between the server and the router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:496 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:474 msgid "Bridge" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:254 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:235 msgid "By default VPN is used for any traffic that is not TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:188 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:169 msgid "" "By default proxy is used for any traffic that is TCP (and UDP for V2Ray)." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:763 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:681 msgid "CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:268 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:252 msgid "Can\\'t access and use server part" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:294 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:275 msgid "Can\\'t contact Server Admin Script" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:284 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:268 msgid "Can\\'t get public IP address from ShadowSocks" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:287 -msgid "Can\\'t get public IP address from V2Ray" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:281 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:265 msgid "Can\\'t ping server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:500 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:478 msgid "" "Choose MacVLAN if you want to create a virtual interface based on a physical " "interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:434 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:520 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:572 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:412 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:498 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:544 msgid "Choose physical interface." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:138 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:122 msgid "Common server settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:135 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:130 msgid "Core temp:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:386 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:531 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:364 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:509 msgid "DHCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:532 -msgid "DHCPv6" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:188 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:183 msgid "DNS issue: can\\'t resolve hostname" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:294 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:276 msgid "Debug" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:190 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:171 msgid "Default Proxy" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:304 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:285 msgid "Default VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:63 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:475 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:51 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:453 msgid "Delete" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:658 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:685 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:706 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:576 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:603 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:624 msgid "Device" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:203 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:201 msgid "Disable TCP Fast Open" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:208 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:206 msgid "Disable TCP Fast Open on Linux and Shadowsocks configuration" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:264 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:246 msgid "Disable default gateway" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:269 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:251 msgid "Disable default gateway, no internet if VPS are down" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:193 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:191 msgid "Disable external check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:238 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:236 msgid "Disable gateway ping" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:243 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:241 msgid "Disable gateway ping status check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:248 -msgid "Disable interfaces auto rename" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:289 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:271 msgid "Disable multipath test using tracebox" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:63 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:61 msgid "" "Disable ports redirection defined in firewall from server to this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:253 -msgid "Disable renaming interfaces" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:121 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:105 msgid "Disable server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:274 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:256 msgid "Disable server ping" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:279 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:261 msgid "Disable server ping status check" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:284 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:266 msgid "Disable tracebox test" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:166 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:794 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:810 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:712 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:724 msgid "Disabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:856 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:770 msgid "Download speed (Kb/s)" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:308 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:290 msgid "Dynamic change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:187 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:163 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:185 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:147 msgid "Enable IPv6" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:846 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:760 msgid "Enable SQM" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:79 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:77 msgid "Enable ShadowSocks Obfuscating" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:213 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:211 msgid "Enable TCP Low Latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:299 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:281 msgid "Enable debug logs" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:167 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:793 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:809 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:711 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:723 msgid "Enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:226 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:207 msgid "Encryption" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:247 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:228 msgid "Encryption method is used for Shadowsocks, V2Ray, Glorytun and OpenVPN." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:176 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:171 msgid "Filesystem is readonly" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:155 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:139 msgid "Force retrieve all keys from server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:150 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:134 msgid "Force retrieve settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:752 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:670 msgid "GPRS only" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:552 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:555 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:727 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:496 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:657 msgid "Gateway DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 msgid "Glorytun TCP is used by default for UDP and ICMP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:257 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:259 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:238 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:240 msgid "Glorytun key" msgstr "" @@ -321,810 +296,763 @@ msgstr "" msgid "Grant UCI access for luci-app-openmptcprouter" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:130 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:128 msgid "How often TCP sends out keepalive messages when keepalive is enabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:181 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:179 msgid "IPv4 IP default TTL" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:135 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:133 msgid "IPv4 TCP FIN timeout" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:175 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:173 msgid "IPv4 TCP Fast Open" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:125 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:123 msgid "IPv4 TCP Keepalive time" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:145 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:143 msgid "IPv4 TCP SYN retries" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:155 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:153 msgid "IPv4 TCP SYN retries1" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:165 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:163 msgid "IPv4 TCP SYN retries2" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:442 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:578 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:420 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:550 msgid "IPv4 address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:594 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:566 msgid "IPv4 gateway" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:448 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:588 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:426 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:560 msgid "IPv4 netmask" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:176 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:157 msgid "IPv6 Prefix" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:608 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:635 -msgid "IPv6 address" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:622 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:645 -msgid "IPv6 gateway" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:600 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:767 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:536 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:697 msgid "IPv6 route received" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:161 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:145 msgid "IPv6 settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:209 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:204 msgid "IPv6 tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:347 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:328 msgid "IPv6:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:461 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:439 msgid "Interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:211 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:221 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:298 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:192 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:202 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:243 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:255 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:267 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:279 msgid "Key is retrieved from server API by default." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:98 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:82 msgid "" "Key to configure and retrieve others keys from Server and to set server " "settings from OpenMPTCProuter." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:359 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:337 msgid "LAN interfaces settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:750 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:668 msgid "LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:370 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:481 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:348 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:459 msgid "Label" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:376 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:486 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:354 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:464 msgid "Label for the interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:22 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:20 msgid "Last available backup on server:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:124 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:324 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:119 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:305 msgid "Latest available version" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:130 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:330 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:125 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:311 msgid "Load:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:286 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:267 msgid "MLVPN can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:281 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:283 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:262 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:264 msgid "MLVPN password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:303 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:284 msgid "MPTCP is not enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:341 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:322 msgid "MPTCP may not be enabled on the server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:836 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:750 msgid "MPTCP over VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:495 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:473 msgid "MacVLAN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:795 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:811 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:713 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:725 msgid "Master" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:304 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:286 msgid "Master interface selection" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:326 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:308 msgid "Maximum scaling CPU frequency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:320 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:302 msgid "Minimum scaling CPU frequency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:747 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:665 msgid "Modem default" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:781 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:699 msgid "Modem init timeout" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:533 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:510 msgid "ModemManager" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:180 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:175 msgid "More than one default VPN is enabled" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:790 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:806 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:708 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:720 msgid "Multipath TCP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:583 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:589 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:750 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:756 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:519 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:525 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:680 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:686 msgid "Multipath current state is" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:578 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:745 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:514 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:675 msgid "Multipath master already defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:558 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:730 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:499 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:660 msgid "Multipath seems to be blocked on the connection" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:534 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:511 msgid "NCM" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:761 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:679 msgid "NONE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:595 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:762 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:531 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:692 msgid "Network interface duplicated" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:862 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:864 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:792 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:794 msgid "Network overview" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:122 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:120 msgid "Networks settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:545 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:720 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:489 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:650 msgid "No IP defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:212 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:207 msgid "No IPv6 access" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:562 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:734 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:503 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:664 msgid "No Server ping response after 1 second" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:290 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:271 msgid "No WAN IP address detected in less than 1 second" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:619 -msgid "No WAN with multipath enabled:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:26 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:24 msgid "No available backup on server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:309 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:291 msgid "No change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:782 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:712 msgid "No data" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:549 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:724 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:493 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:654 msgid "No gateway defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:259 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:260 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:243 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:244 msgid "No output" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:264 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:248 msgid "No server IP address, No WAN IP address" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:277 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:261 msgid "No server defined" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:232 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:213 msgid "None" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:494 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:472 msgid "Normal" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:150 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:148 msgid "" "Number of times initial SYNs for an active TCP connection attempt will be " "retransmitted." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:89 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:87 msgid "Obfuscating plugin" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:108 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:106 msgid "Obfuscating type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:84 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:82 msgid "Obfuscating will be enabled on both side" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:307 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:289 msgid "On wizard change" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:200 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 msgid "Only ShadowSocks is supported with server multiple IPs for now." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:800 -msgid "" -"Only one interface must be set as \"Master\", this should be the most stable " -"interface." -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:112 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:96 msgid "Only one server can be master, else all servers are set as backup." msgstr "" +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:14 #: luci-app-openmptcprouter/root/usr/share/luci/menu.d/luci-app-openmptcprouter.json:3 msgid "OpenMPTCProuter" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 msgid "OpenVPN can't be used in multi VPS configuration." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:218 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:216 msgid "Optimize for latency instead of bandwidth" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:387 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:537 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:365 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:514 msgid "Other" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:225 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:223 msgid "Other settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:762 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:680 msgid "PAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:764 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:682 msgid "PAP/CHAP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:775 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:693 msgid "PAP/CHAP password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:769 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:687 msgid "PAP/CHAP username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:738 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:656 msgid "PIN code" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:535 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:512 msgid "PPPoE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:399 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:505 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:546 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:377 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:483 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:523 msgid "Physical interface" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:748 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:666 msgid "Prefer LTE" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:749 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:667 msgid "Prefer UMTS" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:71 -msgid "Primary server IP" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:381 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:526 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:359 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:504 msgid "Protocol" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:199 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:194 msgid "Proxy is DISABLED" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:187 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:168 msgid "Proxy settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:352 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:333 msgid "Proxy traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:536 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:513 msgid "QMI" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:52 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:50 msgid "Redirects all ports from server to this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:32 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:30 msgid "Restore backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:148 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:132 msgid "Retrieve settings from server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:352 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:921 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:334 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:828 msgid "Save & Apply" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:233 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:231 msgid "Save vnstats statistics on disk" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:228 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:226 msgid "Save vnstats stats" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:332 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:314 msgid "Scaling governor" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:72 -msgid "Secondary server IP" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:915 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:822 msgid "Select the device you want to base the interface on." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:33 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm:31 msgid "Send backup" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:69 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:57 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:59 msgid "Server IP" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:74 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:61 msgid "Server IP will be set for proxy and VPN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:93 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:95 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:77 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:79 msgid "Server key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:43 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:53 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:41 msgid "Server settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:83 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:85 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:67 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:69 msgid "Server username" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:744 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:662 msgid "Service Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:583 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:613 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:640 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:555 msgid "Set an IP in the same network as the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:599 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:627 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:650 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:571 msgid "Set here IP of the modem" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:107 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:91 msgid "Set server as master" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:199 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:180 msgid "" "Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and " "UDP when V2Ray is enabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:351 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:329 msgid "" "Set the default VPN used for ICMP (and UDP if proxy used is shadowsocks), " "for all traffic if proxy is disabled." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:866 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:780 msgid "" "Set value between 80-95% of max download speed link. 0 to disable SQM/QoS." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:882 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:796 msgid "" "Set value between 80-95% of max upload speed link. 0 to disable SQM/QoS." msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:14 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:15 msgid "Settings Wizard" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:158 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:153 msgid "ShadowSocks is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:211 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:192 msgid "ShadowSocks is used for TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:206 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:208 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:187 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:189 msgid "ShadowSocks key" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:23 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:24 msgid "Show all settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:385 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:530 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:363 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:508 msgid "Static address" msgstr "" -#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:16 +#: luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua:17 msgid "Status" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:317 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:299 msgid "Systems settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:140 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:138 msgid "" "The length of time an orphaned (no longer referenced by any application) " "connection will remain in the FIN_WAIT_2 state before it is aborted at the " "local end." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:245 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:226 msgid "" "There is no Advanced Encryption Standard (AES) instruction set integrated in " "the processor, you should use chacha20." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:160 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:158 msgid "" "This value influences the time, after which TCP decides, that something is " "wrong due to unacknowledged RTO retransmissions, and reports this suspicion " "to the network layer." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:170 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:168 msgid "" "This value influences the timeout of an alive TCP connection, when RTO " "retransmissions remain unacknowledged." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:362 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:343 msgid "Total traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:491 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:469 msgid "Type" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:298 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:279 msgid "UBOND can replace Glorytun with connections with same latency" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:293 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:295 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:274 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:276 msgid "UBOND password" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:751 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:669 msgid "UMTS/GPRS" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:29 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:27 msgid "Update" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 -msgid "Update remotly servers to latest version and reboot them." +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:18 +msgid "Update VPS" msgstr "" #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:20 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:24 +msgid "Update remotly the server to latest version when needed." +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:22 msgid "Update server" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:872 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:786 msgid "Upload speed (Kb/s)" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:141 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:336 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:136 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:317 msgid "Uptime:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:861 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:877 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:775 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:791 msgid "Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:170 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:165 msgid "V2Ray is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:221 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:202 msgid "V2Ray is used for TCP and UDP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:218 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:199 msgid "V2Ray user" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:216 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:197 msgid "V2Ray user id" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:568 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:569 -msgid "VLAN" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:184 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:179 msgid "VPN is not running" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:253 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:234 msgid "VPN settings" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:357 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:338 msgid "VPN traffic:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:203 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:198 msgid "VPN tunnel DOWN" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:317 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:41 +msgid "VPS settings" +msgstr "" + +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:298 msgid "Version" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:566 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:571 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:738 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:668 msgid "Wan IP and gateway are identical" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:198 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:196 msgid "" "When enable check are done on external sites to get each WAN IP and the IP " "used to go outside." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:258 -msgid "When proxy shadowsocks is used, use it for UDP if VPN down" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:51 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:39 msgid "Wizard" msgstr "" +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:75 #: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:80 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:85 msgid "You" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:841 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:755 msgid "You can enable MPTCP over VPN if your provider filter Multipath TCP." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:391 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:369 msgid "You can use DHCP if you have multiple real ethernet ports." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:541 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:518 msgid "" "You can use DHCP if you have multiple real ethernet ports. Select other if " "you want to use another protocol available in Network Interfaces page." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:181 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:162 msgid "You can use a public IPv6 prefix only if you set only one server." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:462 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:440 msgid "You must disable DHCP on your modems and set IP in different networks." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:171 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:152 msgid "You should disable IPv6 here if server doesn't provide IPv6." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:851 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:765 msgid "You should disable SQM for LTE or any interfaces with variable speed." msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:58 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm:56 msgid "You shouldn't do that and you should redirect only needed ports" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:83 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:78 msgid "Your IP was not leased by this router" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:149 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:144 msgid "address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:753 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:671 msgid "auto" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:161 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:156 msgid "empty key" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:495 -msgid "interface:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:479 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:700 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:439 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:630 msgid "ip address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:483 -msgid "ipv6 address:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:507 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:712 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:451 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:642 msgid "latency:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:511 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:716 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:455 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:646 msgid "mtu:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:607 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:769 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:543 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:699 msgid "multipath:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:515 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:459 msgid "operator:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:236 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm:217 msgid "other" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:519 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:463 msgid "phone number:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:150 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:145 msgid "range:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:523 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:467 msgid "state:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:610 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:772 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:546 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:702 msgid "traffic control:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:487 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:704 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:443 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:634 msgid "wan address:" msgstr "" -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:491 -msgid "wan ipv6 address:" -msgstr "" - -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:499 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:503 -#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:708 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:447 +#: luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm:638 msgid "whois:" msgstr "" diff --git a/luci-app-openmptcprouter/root/bin/omr-ip-intf b/luci-app-openmptcprouter/root/bin/omr-ip-intf index 16434c5a4..4c87b4256 100755 --- a/luci-app-openmptcprouter/root/bin/omr-ip-intf +++ b/luci-app-openmptcprouter/root/bin/omr-ip-intf @@ -28,10 +28,8 @@ get_ip_from_website() { } [ -z "$intf" ] && return -if [ -n "$(ip -4 a show dev $intf)" ]; then - ip="" - config_load openmptcprouter - config_foreach get_ip_from_server server - [ -z "$ip" ] && get_ip_from_website - echo $ip -fi \ No newline at end of file +ip="" +config_load openmptcprouter +config_foreach get_ip_from_server server +[ -z "$ip" ] && get_ip_from_website +echo $ip \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/bin/omr-ip6-intf b/luci-app-openmptcprouter/root/bin/omr-ip6-intf deleted file mode 100755 index c096503ea..000000000 --- a/luci-app-openmptcprouter/root/bin/omr-ip6-intf +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - -intf=$1 - -get_ip_from_server() { - serverip=$(uci -q get openmptcprouter.$1.ip) - serverport=$(uci -q get openmptcprouter.$1.port) - getip="$(curl -s -k -6 -m 2 --interface $intf https://$serverip:$serverport/clienthost)" - [ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host') - if [ -n "$(echo "$getip" | grep :)" ]; then - ip=$getip - break - fi -} - -get_ip_from_website() { - check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" - [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" - checkip=$(echo $check_ipv6_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short AAAA | tr -d "\n") - ipset add ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1 - getip="$(curl -s -6 -m 2 --interface $intf $check_ipv6_website)" - ipset del ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1 - if [ -n "$(echo "$getip" | grep :)" ]; then - ip=$getip - break - fi -} - -[ -z "$intf" ] && return -if [ -n "$(ip -6 a show dev $intf)" ]; then - ip="" - config_load openmptcprouter - config_foreach get_ip_from_server server - [ -z "$ip" ] && get_ip_from_website - echo $ip -fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp b/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp index 932364d19..0c28829e1 100755 --- a/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp +++ b/luci-app-openmptcprouter/root/bin/omr-tracebox-mptcp @@ -1,16 +1,7 @@ #!/bin/sh INTERFACE=$2 -SERVER=$1 -if [ -n "$(resolveip -4 $SERVER)" ]; then - if [ -z "$INTERFACE" ]; then - tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER - else - tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER - fi +if [ -z "$INTERFACE" ]; then + tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $1 else - if [ -z "$INTERFACE" ]; then - tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER - else - tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER - fi + tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $1 fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename index 4ff952d0e..02d204117 100644 --- a/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename +++ b/luci-app-openmptcprouter/root/etc/hotplug.d/net/99-omr-rename @@ -20,26 +20,21 @@ _set_intf_name() { fi [ -n "$modalias" ] && { if [ -f /sys/class/net/${INTERFACE}/device/uevent ]; then - mac="" - if [ -f /sys/class/net/${INTERFACE}/address ]; then - mac="$(cat /sys/class/net/${INTERFACE}/address | tr -d '\n')" - fi chk_modalias=$MODALIAS [ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" if [ -n "$chk_modalias" ]; then - chk_modalias="${chk_modalias}-${mac}" - logger -t "OMR-Rename" "modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" + logger -t "OMR-Rename" "dir: $i - modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE" if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" - existif="0" + existif=0 ip link set ${INTERFACE} down 2>&1 >/dev/null [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null - existif="1" + existif=1 } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null fi fi elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then @@ -50,22 +45,21 @@ _set_intf_name() { fi } [ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && { - logger -t "OMR-Rename" "device: $device - devpath: $DEVPATH - ifname: $ifname - INTERFACE: $INTERFACE" logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}" ip link set ${INTERFACE} down 2>&1 >/dev/null - existif="0" + existif=0 [ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && { ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null - existif="1" + existif=1 } ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null ip link set ${ifname} up 2>&1 >/dev/null - [ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null + [ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null } } -if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "1" ]; then +if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then config_load network config_foreach _set_intf_name interface -# config_foreach _set_intf_name interface + config_foreach _set_intf_name interface fi \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index 73655b167..2348fa8b0 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -1,5 +1,5 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright (C) 2018 Ycarus (Yannick Chabanois) # Released under GPL 3. See LICENSE for the full terms. START=5 @@ -16,42 +16,6 @@ omr_intf_check() { } omr_intf_set() { - local device - local ifname - config_get ifname "$1" ifname - config_get device "$1" device - config_get type "$1" type - - [ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') - - if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then - devicepath=$(readlink -f /sys/class/net/${ifname}) - if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then - mac="" - if [ -f /sys/class/net/${ifname}/address ]; then - mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')" - fi - uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac" - uci -q set network.$1.product="$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" - elif [ -n "$devicepath" ] && ([ "$(echo ${devicepath} | grep virtual)" != "" ] || [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" = "" ] || [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" != "" ] || [ "$(cat /sys/class/net/${ifname}tmp/device/uevent)" != "" ]); then - uci -q delete network.$1.device - uci -q delete network.$1.modalias - uci -q delete network.$1.product - fi - elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then - mac="" - if [ -f /sys/class/net/${ifname}/address ]; then - mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')" - fi - uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac" - uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" - else - uci -q delete network.$1.modalias - uci -q delete network.$1.product - fi -} - -omr_set_settings() { local device local ifname local multipath @@ -61,30 +25,12 @@ omr_set_settings() { config_get proto "$1" proto config_get type "$1" type config_get addlatency "$1" addlatency - [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return - - uci -q set openmptcprouter.$1=interface - uci -q set openmptcprouter.$1.multipath="$multipath" - config_get disable_ipv6 settings disable_ipv6 "0" - if [ "$proto" != "dhcpv6" ] && ([ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]); then - uci -q set network.$1.ipv6=0 - else - uci -q set network.$1.ipv6=1 - fi - [ -z "$addlatency" ] && addlatency=0 devicename=$(echo "$device" | cut -d'/' -f3) [ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') if [ -n "$ifname" ]; then - if [ "$proto" = "dhcpv6" ]; then - # Change interface name for sysctl in case of VLAN (eth0.2 => eth0/2) - ifnamesys=$(echo $ifname | sed 's:\.:/:') - sysctl -qw net.ipv6.conf.${ifnamesys}.disable_ipv6=0 - sysctl -qw net.ipv6.conf.${ifnamesys}.accept_ra=1 - fi - if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then tc qdisc del dev ${ifname} root netem fi @@ -97,6 +43,31 @@ omr_set_settings() { fi fi + if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then + devicepath=$(readlink -f /sys/class/net/${ifname}) + if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then + uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" + uci -q set network.$1.product="$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" + elif [ -n "$devicepath" ] && ([ "$(echo ${devicepath} | grep virtual)" != "" ] || [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" = "" ] || [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" != "" ] || [ "$(cat /sys/class/net/${ifname}tmp/device/uevent)" != "" ]); then + uci -q delete network.$1.device + uci -q delete network.$1.modalias + uci -q delete network.$1.product + fi + elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then + uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')" + uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')" + fi + + [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return + + uci -q set openmptcprouter.$1=interface + uci -q set openmptcprouter.$1.multipath="$multipath" + config_get disable_ipv6 settings disable_ipv6 "0" + if [ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]; then + uci -q set network.$1.ipv6=0 + else + uci -q set network.$1.ipv6=1 + fi } start_service() { @@ -105,7 +76,7 @@ start_service() { config_load openmptcprouter config_foreach omr_intf_check interface config_load network - config_foreach omr_set_settings interface + config_foreach omr_intf_set interface uci -q commit network uci -q commit openmptcprouter @@ -141,13 +112,7 @@ start_service() { EOF /etc/init.d/rpcd restart 2>&1 >/dev/null fi -} -stop_service() { - config_load network - config_foreach omr_intf_set interface - uci -q commit network - uci -q commit openmptcprouter } reload_service() { diff --git a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter index b267d6f21..24cbccb20 100755 --- a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter @@ -114,13 +114,6 @@ if [ "$(uci -q get openmptcprouter.settings.menu)" = "" ]; then EOF fi -if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" = "" ]; then - uci -q batch <<-EOF >/dev/null - set openmptcprouter.settings.disableintfrename='1' - commit openmptcprouter - EOF -fi - sed -i 's/net.ipv4.tcp_retries2=3$/net.ipv4.tcp_retries2=15/' /etc/sysctl.d/zzz_openmptcprouter.conf exit 0 diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index bc36f9649..5df98b004 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -116,14 +116,14 @@ function add_interface(add_interface_ifname) ucic:save("sqm") ucic:commit("sqm") - sys.exec("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif) - sys.exec("uci -q commit vnstat") + luci.sys.call("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif) + luci.sys.call("uci -q commit vnstat") -- Dirty way to add new interface to firewall... - sys.exec("uci -q add_list firewall.@zone[1].network=wan" .. i) - sys.exec("uci -q commit firewall") + luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i) + luci.sys.call("uci -q commit firewall") - sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") end function remove_interface(intf) @@ -140,11 +140,11 @@ function remove_interface(intf) ucic:save("qos") ucic:commit("qos") if defif ~= nil and defif ~= "" then - sys.exec("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) + luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) end - sys.exec("uci -q commit vnstat") - sys.exec("uci -q del_list firewall.@zone[1].network=" .. intf) - sys.exec("uci -q commit firewall") + luci.sys.call("uci -q commit vnstat") + luci.sys.call("uci -q del_list firewall.@zone[1].network=" .. intf) + luci.sys.call("uci -q commit firewall") end function set_interface(intf,proto,ipaddr,netmask,gateway,sqmenabled,downloadspeed,uploadspeed) @@ -321,30 +321,24 @@ function server_settings(server,server_ip,openmptcprouter_vps_key) ucic:set("openmptcprouter",server,"ip",server_ip) ucic:set("openmptcprouter",server,"port","65500") ucic:save("openmptcprouter") - if ucic:get("openmptcprouter",server,"master") == "1" then - ucic:set("shadowsocks-libev","sss0","server",server_ip) - ucic:set("glorytun","vpn","host",server_ip) - ucic:set("dsvpn","vpn","host",server_ip) - ucic:set("mlvpn","general","host",server_ip) - sys.exec("uci -q del openvpn.omr.remote") - sys.exec("uci -q add_list openvpn.omr.remote=" .. server_ip) - ucic:set("qos","serverin","srchost",server_ip) - ucic:set("qos","serverout","dsthost",server_ip) - ucic:set("v2ray","omrout","s_vmess_address",server_ip) - ucic:set("v2ray","omrout","s_vless_address",server_ip) - ucic:save("qos") - ucic:commit("qos") - ucic:save("mlvpn") - ucic:commit("mlvpn") - ucic:save("dsvpn") - ucic:commit("dsvpn") - ucic:save("v2ray") - ucic:commit("v2ray") - ucic:save("glorytun") - ucic:commit("glorytun") - ucic:save("shadowsocks-libev") - ucic:commit("shadowsocks-libev") - end + ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("dsvpn","vpn","host",server_ip) + ucic:set("mlvpn","general","host",server_ip) + luci.sys.call("uci -q del openvpn.omr.remote") + luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("qos","serverin","srchost",server_ip) + ucic:set("qos","serverout","dsthost",server_ip) + ucic:save("qos") + ucic:commit("qos") + ucic:save("mlvpn") + ucic:commit("mlvpn") + ucic:save("dsvpn") + ucic:commit("dsvpn") + ucic:save("glorytun") + ucic:commit("glorytun") + ucic:save("shadowsocks-libev") + ucic:commit("shadowsocks-libev") end function set_shadowsocks(shadowsocks_key) @@ -410,22 +404,18 @@ end function restart_all() -- Restart all - sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") - sys.exec("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/omr-tracker stop >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") - sys.exec("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") + luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") + os.execute("sleep 2") + luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") + --luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-tracker restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") end function redirectports(server,redirect_ports) @@ -435,26 +425,26 @@ end function tcpkeepalivetime(tcp_keepalive_time) -- Set tcp_keepalive_time - sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time) - sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time) + luci.sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time) end function tcpfintimeout(tcp_fin_timeout) -- Set tcp_fin_timeout - sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout) - sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout) + luci.sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout) end function tcpsynretries(tcp_syn_retries) -- Set tcp_syn_retries - sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries) - sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries) + luci.sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries) end function tcpfastopen(tcp_fastopen) -- Set tcp_fastopen - sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen) - sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen) + luci.sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen) end function disableipv6(disable_ipv6) @@ -462,7 +452,7 @@ function disableipv6(disable_ipv6) ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) ucic:save("openmptcprouter") ucic:commit("openmptcprouter") - sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") end function externalcheck(externalcheck) @@ -473,7 +463,7 @@ end function savevnstat(savevnstat) -- Enable/disable save vnstat - sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat) + luci.sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat) ucic:commit("vnstat") end @@ -532,27 +522,20 @@ end function update_vps() -- Update VPS - local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") - ucic:foreach("openmptcprouter", "server", function(section) - local servername = section[".name"] - local serverip = section["ip"] or "" - local adminport = section["port"] or "65500" - local token = section["token"] or "" + ucic:foreach("openmptcprouter", "server", function(s) + local serverip = ucic:get("openmptcprouter",s[".name"],"ip") + local adminport = ucic:get("openmptcprouter",s[".name"],"port") or "65500" + local token = ucic:get("openmptcprouter",s[".name"],"token") or "" if token ~= "" then - local updatevps = sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update") + sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update") + luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") + luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/status")) + return end end) - local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") -end - -function get_rootfs() - local rootfs = {} - rootfs['format'] = luci.util.trim(sys.exec("mount | awk 'NR==1{print $5}'")) - return rootfs end function get_ip(interface) - local ut = require "luci.util" local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) local ip = "" if dump and dump['ipv4-address'] then @@ -570,42 +553,6 @@ function get_ip(interface) end end end - if ip == "" then - local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - if dump and dump['l3_device'] then - local ifname = dump['l3_device'] - ip = ut.trim(sys.exec("ip -4 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname)) - end - end - return ip -end - -function get_ip6(interface) - local ut = require "luci.util" - local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - local ip = "" - if dump and dump['ipv6-address'] then - local _, ipv6address - for _, ipv6address in ipairs(dump['ipv6-address']) do - ip = dump['ipv6-address'][_].address - end - end - if ip == "" then - local dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {}) - if dump and dump['ipv6-address'] then - local _, ipv6address - for _, ipv6address in ipairs(dump['ipv6-address']) do - ip = dump['ipv6-address'][_].address - end - end - end - if ip == "" then - local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - if dump and dump['l3_device'] then - local ifname = dump['l3_device'] - ip = ut.trim(sys.exec("ip -6 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname)) - end - end return ip end @@ -668,56 +615,6 @@ function get_gateway(interface) return gateway end -function get_gateway6(interface) - local gateway = "" - local dump = nil - - dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - - if dump and dump.route then - local _, route - for _, route in ipairs(dump.route) do - if dump.route[_].target == "::" then - gateway = dump.route[_].nexthop - end - end - end - if gateway == "" then - if dump and dump.inactive and dump.inactive.route then - local _, route - for _, route in ipairs(dump.inactive.route) do - if dump.inactive.route[_].target == "::" then - gateway = dump.inactive.route[_].nexthop - end - end - end - end - - if gateway == "" then - dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {}) - - if dump and dump.route then - local _, route - for _, route in ipairs(dump.route) do - if dump.route[_].target == "::" then - gateway = dump.route[_].nexthop - end - end - end - if gateway == "" then - if dump and dump.inactive and dump.inactive.route then - local _, route - for _, route in ipairs(dump.inactive.route) do - if dump.inactive.route[_].target == "::" then - gateway = dump.inactive.route[_].nexthop - end - end - end - end - end - return gateway -end - -- This function come from OverTheBox by OVH with many changes -- Copyright 2015 OVH -- Simon Lelievre (simon.lelievre@corp.ovh.com) @@ -782,25 +679,16 @@ function interfaces_status() if mArray.openmptcprouter["dns"] == true then -- wanaddr --mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or "" - if mArray.openmptcprouter["service_addr"] ~= "" then - mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) - mArray.openmptcprouter["service_addr_ip6"] = ut.trim(sys.exec("resolveip -6 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) - end if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then - if mArray.openmptcprouter["service_addr_ip"] ~= "" and mArray.openmptcprouter["service_addr_ip"] ~= nil then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website)) - if mArray.openmptcprouter["wan_addr"] == "" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -4 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) - end + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website)) + if mArray.openmptcprouter["wan_addr"] == "" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) end - if mArray.openmptcprouter["ipv6"] == "enabled" or ( mArray.openmptcprouter["service_addr_ip6"] ~= "" and mArray.openmptcprouter["service_addr_ip6"] ~= nil) then + if mArray.openmptcprouter["ipv6"] == "enabled" then mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" if mArray.openmptcprouter["wan_addr6"] == "" then mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website)) - if mArray.openmptcprouter["wan_addr6"] == "" then - mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'")) - end end end mArray.openmptcprouter["external_check"] = true @@ -822,6 +710,9 @@ function interfaces_status() end end end + if mArray.openmptcprouter["service_addr"] ~= "" then + mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1")) + end end if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then @@ -837,105 +728,92 @@ function interfaces_status() mArray.openmptcprouter["vps_hostname"] = "Server" -- Get VPS info ucic:foreach("openmptcprouter", "server", function(s) - local serverips = uci:get("openmptcprouter",s[".name"],"ip") or { "" } + local serverip = uci:get("openmptcprouter",s[".name"],"ip") or "" local master = uci:get("openmptcprouter",s[".name"],"master") or "1" - for key, value in pairs(serverips) do - serverip = value - if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) and mArray.openmptcprouter["vps_admin"] == false then - mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" - mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" - mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" - timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2" - if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then - mArray.openmptcprouter["vps_admin_error"] = true - end - local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" - local token = uci:get("openmptcprouter",s[".name"],"token") or "" - if token ~= "" then - local vpsinfo_json = "" - if mArray.openmptcprouter["service_addr_ip"] ~= "" then - vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') - end - if mArray.openmptcprouter["service_addr_ip6"] ~= "" then - vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status') - end - if vpsinfo_json ~= "" and vpsinfo_json ~= nil then - local status, vpsinfo = pcall(function() - return json.decode(vpsinfo_json) - end) - if status and vpsinfo.vps ~= nil then - mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or "" - mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or "" - mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or "" - mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or "" - mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or "" - if vpsinfo.vps.kernel ~= nil then - mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or "" + if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip) then + mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" + mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" + mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" + timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2" + if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then + mArray.openmptcprouter["vps_admin_error"] = true + end + local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" + local token = uci:get("openmptcprouter",s[".name"],"token") or "" + if token ~= "" then + local vpsinfo_json = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') + if vpsinfo_json ~= "" and vpsinfo_json ~= nil then + local status, vpsinfo = pcall(function() + return json.decode(vpsinfo_json) + end) + if status and vpsinfo.vps ~= nil then + mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or "" + mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or "" + mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or "" + mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or "" + mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or "" + if vpsinfo.vps.kernel ~= nil then + mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or "" + end + if vpsinfo.vps.omr_version ~= nil then + mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or "" + end + if vpsinfo.vps.time ~= "" then + if math.abs(os.time() - vpsinfo.vps.time) > 10 then + mArray.openmptcprouter["vps_time_accurate"] = false + else + mArray.openmptcprouter["vps_time_accurate"] = true end - if vpsinfo.vps.omr_version ~= nil then - mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or "" - end - if vpsinfo.vps.time ~= "" then - if math.abs(os.time() - vpsinfo.vps.time) > 10 then - mArray.openmptcprouter["vps_time_accurate"] = false - else - mArray.openmptcprouter["vps_time_accurate"] = true - end - end - mArray.openmptcprouter["vps_admin"] = true - mArray.openmptcprouter["vps_status"] = "UP" - mArray.openmptcprouter["vps_admin_error_msg"] = "" - else - uci:set("openmptcprouter",s[".name"],"admin_error","1") - mArray.openmptcprouter["vps_admin_error"] = true - uci:delete("openmptcprouter",s[".name"],"token") - uci:save("openmptcprouter",s[".name"]) - uci:commit("openmptcprouter",s[".name"]) - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error" end - if status and vpsinfo.vpn ~= nil then - mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0" - mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0" - mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"] - else - mArray.openmptcprouter["vpn_traffic_rx"] = "0" - mArray.openmptcprouter["vpn_traffic_tx"] = "0" - mArray.openmptcprouter["vpn_traffic"] = "0" - end - if status and vpsinfo.shadowsocks ~= nil then - mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0" - else - mArray.openmptcprouter["ss_traffic"] = "0" - end - if status and vpsinfo.v2ray ~= nil then - mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0" - mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0" - mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"] - else - mArray.openmptcprouter["v2ray_traffic_rx"] = "0" - mArray.openmptcprouter["v2ray_traffic_tx"] = "0" - mArray.openmptcprouter["v2ray_traffic"] = "0" - end - mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"] - mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"] + mArray.openmptcprouter["vps_admin"] = true + mArray.openmptcprouter["vps_status"] = "UP" + mArray.openmptcprouter["vps_admin_error_msg"] = "" else + uci:set("openmptcprouter",s[".name"],"admin_error","1") + mArray.openmptcprouter["vps_admin_error"] = true + uci:delete("openmptcprouter",s[".name"],"token") + uci:save("openmptcprouter",s[".name"]) + uci:commit("openmptcprouter",s[".name"]) mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No result" + mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error" end + if status and vpsinfo.vpn ~= nil then + mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0" + mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0" + mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"] + else + mArray.openmptcprouter["vpn_traffic_rx"] = "0" + mArray.openmptcprouter["vpn_traffic_tx"] = "0" + mArray.openmptcprouter["vpn_traffic"] = "0" + end + if status and vpsinfo.shadowsocks ~= nil then + mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0" + else + mArray.openmptcprouter["ss_traffic"] = "0" + end + if status and vpsinfo.v2ray ~= nil then + mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0" + mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0" + mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"] + else + mArray.openmptcprouter["v2ray_traffic_rx"] = "0" + mArray.openmptcprouter["v2ray_traffic_tx"] = "0" + mArray.openmptcprouter["v2ray_traffic"] = "0" + end + mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"] + mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"] else mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" + mArray.openmptcprouter["vps_admin_error_msg"] = "No result" end - if mArray.openmptcprouter["vps_admin"] == false then - if mArray.openmptcprouter["service_addr_ip"] ~= "" then - local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') - elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then - local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/') - end - if vpstest == "" then - mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" - end + else + mArray.openmptcprouter["vps_admin"] = false + mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" + end + if mArray.openmptcprouter["vps_admin"] == false then + local vpstest = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') + if vpstest == "" then + mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" end end end @@ -971,7 +849,7 @@ function interfaces_status() else mArray.openmptcprouter["tun_state"] = "DOWN" end - if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then + if mArray.openmptcprouter["ipv6"] == "enabled" then local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway") local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'")) if tunnel_ping6_test == "" then @@ -987,8 +865,6 @@ function interfaces_status() end elseif uci:get("openmptcprouter","settings","vpn") == "none" then mArray.openmptcprouter["tun_service"] = true - mArray.openmptcprouter["tun_state"] = "NONE" - mArray.openmptcprouter["tun6_state"] = "NONE" end mArray.openmptcprouter["multi_vpn"] = false @@ -1110,12 +986,9 @@ function interfaces_status() local interface = section[".name"] local net = ntm:get_network(interface) local ipaddr = net:ipaddr() or "" - local ip6addr = net:ip6addr() or "" local gateway = section["gateway"] or "" - local gateway6 = section["ip6gw"] or "" local multipath = section["multipath"] local enabled = section["auto"] - local proto = section["proto"] or "" --if not ipaddr or not gateway then return end -- Don't show if0 in the overview @@ -1131,7 +1004,7 @@ function interfaces_status() duplicateif = false if ifname ~= "" and ifname ~= nil then - if allintf[ifname] and not section["ifname"]:match("^@.*") then + if allintf[ifname] then connectivity = "ERROR" duplicateif = true else @@ -1145,19 +1018,13 @@ function interfaces_status() if enabled == "0" then return end local connectivity = "OK" - if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then + if ipaddr == "" and ifname ~= nil and ifname ~= "" then ipaddr = ut.trim(sys.exec("ip -4 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) end - if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then + if ipaddr == "" and ifname ~= nil and ifname ~= "" then ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) end - if ip6addr == "" and ifname ~= nil and ifname ~= "" then - ip6addr = ut.trim(sys.exec("ip -6 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) - end - if ip6addr == "" and ifname ~= nil and ifname ~= "" then - ip6addr = ut.trim(sys.exec("ip -6 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) - end - if ipaddr == "" and ip6addr == "" then + if ipaddr == "" then connectivity = "ERROR" end @@ -1194,18 +1061,14 @@ function interfaces_status() -- Detect WAN gateway status local gw_ping = "UP" - local gw_ping6 = "UP" - if ifname ~= nil and not (ifname:match("^tun.*") or interface:match("^ovpn.*")) then - if proto ~= "dhcpv6" then - gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) - end - gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then + gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) end - if gateway == "" and proto ~= "dhcpv6" then + if gateway == "" then gateway = get_gateway(interface) end - if gateway == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then + if gateway == "" and ifname ~= nil and ifname ~= "" then if fs.access("/sys/class/net/" .. ifname) then gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) if gateway == "" then @@ -1213,50 +1076,18 @@ function interfaces_status() end end end - if gateway6 == "" then - gateway6 = get_gateway6(interface) - end - if gateway6 == "" and ifname ~= nil and ifname ~= "" then - if fs.access("/sys/class/net/" .. ifname) then - gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) - if gateway6 == "" then - gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep default | awk '{print $3}' | tr -d '\n'")) - end - end - end local signal = "" local operator = "" local phonenumber = "" local donglestate = "" local networktype = "" - if gateway ~= "" or gateway6 ~= "" then + if gateway ~= "" then if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then - if gateway ~= "" then - local gw_ping_test = "" - if ifname ~= "" and ifname ~= nil then - gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway .. " | grep '100% packet loss'")) - else - gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) - end - if gw_ping_test ~= "" then - gw_ping = "DOWN" - if connectivity == "OK" then - connectivity = "WARNING" - end - end - end - if gateway6 ~= "" then - local gw_ping6_test = "" - if ifname ~= "" and ifname ~= nil then - gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway6 .. " | grep '100% packet loss'")) - else - gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'")) - end - if gw_ping6_test ~= "" then - gw_ping6 = "DOWN" - if connectivity == "OK" then - connectivity = "WARNING" - end + local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) + if gw_ping_test ~= "" then + gw_ping = "DOWN" + if connectivity == "OK" then + connectivity = "WARNING" end end end @@ -1270,13 +1101,13 @@ function interfaces_status() networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'")) end end - elseif gateway == "" and gateway6 == "" then + elseif gateway == "" then gw_ping = "DOWN" connectivity = "ERROR" end if ifname ~= "" and ifname ~= nil then - --local proto = section['proto'] + local proto = section['proto'] if proto == "qmi" then local device = section['device'] intfdata = ut.trim(sys.exec("omr-qmi " .. device .. " all")) @@ -1306,7 +1137,7 @@ function interfaces_status() local latency = "" local server_ping = "" --if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" then - if ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and (ipaddr ~= "" or ip6addr ~= "") and connectivity ~= "ERROR" then + if ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" and connectivity ~= "ERROR" then local serverip = mArray.openmptcprouter["service_addr"] if serverip == "127.0.0.1" then serverip = mArray.openmptcprouter["wan_addr"] @@ -1329,7 +1160,7 @@ function interfaces_status() local multipath_available = "" local multipath_available_state = "" - if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and (gw_ping == "UP" or gw_ping6 == "UP") then + if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and gateway ~= "" and gw_ping == "UP" then -- Test if multipath can work on the connection local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or "" if multipath_available_state == "" then @@ -1366,9 +1197,7 @@ function interfaces_status() -- end local mtu = "" local whois = "" - local whois6 = "" local publicIP = "" - local publicIP6 = "" if connectivity ~= "ERROR" then if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then @@ -1376,39 +1205,24 @@ function interfaces_status() if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5)))) end - publicIP6 = uci:get("openmptcprouter",interface:sub(5),"publicip6") or "" - if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then - publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. get_device(interface:sub(5)))) - end else publicIP = uci:get("openmptcprouter",interface,"publicip") or "" if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname)) end - publicIP6 = uci:get("openmptcprouter",interface,"publicip6") or "" - if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then - publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. ifname)) - end end if publicIP ~= "" then whois = uci:get("openmptcprouter",interface,"asn") or "" if whois == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then - whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) - --whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) - end - end - if publicIP6 ~= "" then - whois6 = uci:get("openmptcprouter",interface,"asn") or "" - if whois6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then - whois6 = ut.trim(sys.exec("whois " .. publicIP6 .. " | grep -i 'netname' | awk '{print $2}'")) - --whois6 = ut.trim(sys.exec("wget -6 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP6 .. "' | jsonfilter -q -e '@.as_description'")) + --whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) + whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) end end if ifname ~= "" and ifname ~= nil then if fs.access("/sys/class/net/" .. ifname) then mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'")) if mtu == "" and interface ~= nil then - mtu = uci:get("openmptcprouter",interface,"mtu") or "" + mtu = uci:get("openmptcprouter",interface,"mtu") or "" end end end @@ -1425,22 +1239,17 @@ function interfaces_status() --link = net:adminlink() or "", ifname = ifname, ipaddr = ipaddr, - ip6addr = ip6addr, gateway = gateway, - gateway6 = gateway6, multipath = section["multipath"], status = connectivity, wanip = publicIP, - wanip6 = publicIP6, latency = latency, mtu = mtu, whois = whois or "unknown", - whois6 = whois6 or "unknown", qos = section["trafficcontrol"], download = section["download"], upload = section["upload"], gw_ping = gw_ping, - gw_ping6 = gw_ping6, server_ping = server_ping, ipv6_discover = ipv6_discover, multipath_available = multipath_available, @@ -1451,7 +1260,6 @@ function interfaces_status() phonenumber = phonenumber, donglestate = donglestate, networktype = networktype, - proto = proto, rx = rx, tx = tx, } @@ -1532,11 +1340,6 @@ function _ipv6_discover(interface) end local methods = { - getrootfs = { - call = function() - return get_rootfs() - end - }, status = { call = function() return interfaces_status() diff --git a/luci-app-sysupgrade/Makefile b/luci-app-sysupgrade/Makefile deleted file mode 100644 index 3b5ccc6dc..000000000 --- a/luci-app-sysupgrade/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# See /LICENSE for more information. -# This is free software, licensed under the GNU General Public License v2. - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for sysupgrades -LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +rpcd +rpcd-mod-rpcsys +cgi-io - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm b/luci-app-sysupgrade/luasrc/view/sysupgrade.htm deleted file mode 100644 index 7cb1efa9d..000000000 --- a/luci-app-sysupgrade/luasrc/view/sysupgrade.htm +++ /dev/null @@ -1,123 +0,0 @@ -<% --- all lua code provided by https://github.com/jow-/ --- thank you very much! - - function apply_acls(filename, session) - local json = require "luci.jsonc" - local util = require "luci.util" - local fs = require "nixio.fs" - - local grants = { } - - local acl = json.parse(fs.readfile(filename)) - if type(acl) ~= "table" then - return - end - - local group, perms - for group, perms in pairs(acl) do - local perm, scopes - for perm, scopes in pairs(perms) do - if type(scopes) == "table" then - local scope, objects - for scope, objects in pairs(scopes) do - if type(objects) == "table" then - if not grants[scope] then - grants[scope] = { } - end - - if next(objects) == 1 then - local _, object - for _, object in ipairs(objects) do - if not grants[scope][object] then - grants[scope][object] = { } - end - table.insert(grants[scope][object], perm) - end - else - local object, funcs - for object, funcs in pairs(objects) do - if type(funcs) == "table" then - local _, func - for _, func in ipairs(funcs) do - if not grants[scope][object] then - grants[scope][object] = { } - end - table.insert(grants[scope][object], func) - end - end - end - end - end - end - end - end - end - - local _, scope, object, func - for scope, _ in pairs(grants) do - local objects = { } - for object, _ in pairs(_) do - for _, func in ipairs(_) do - table.insert(objects, { object, func }) - end - end - - util.ubus("session", "grant", { - ubus_rpc_session = session, - scope = scope, objects = objects - }) - end - end - - apply_acls("/usr/share/rpcd/acl.d/sysupgrade.json", luci.dispatcher.context.authsession) -%> -<%+header%> -

    <%:Sysupgrade%>

    -
    - <%:Easily search and install new releases and package upgrades.%> -
    - - -

    - -

    -
    -
    -
    - - - -
    -
    - -
    -
    -
    -
    -
    - - -<%+footer%> diff --git a/luci-app-sysupgrade/po/templates/sysupgrade.pot b/luci-app-sysupgrade/po/templates/sysupgrade.pot deleted file mode 100644 index 0c4a913f0..000000000 --- a/luci-app-sysupgrade/po/templates/sysupgrade.pot +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 -msgid "Check \"Keep settings\" to retain the current configuration." -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 -msgid "Downloading firmware to web browser memory" -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 -msgid "Easily search and install new releases and package upgrades." -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 -msgid "Edit installed packages" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 -msgid "Flashing firmware. Don't unpower device" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 -msgid "Installed version:" -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 -msgid "Keep settings:" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 -msgid "No upgrades available" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 -msgid "Rebooting device - please wait!" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 -msgid "Request firmware" -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 -msgid "Search for upgrades" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 -msgid "Searching for upgrades" -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 -msgid "Server:" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 -msgid "Success! Please reload web interface" -msgstr "" - -#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 -#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 -msgid "Sysupgrade" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 -msgid "Upload of firmware failed, please retry by reloading web interface" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 -msgid "Uploading firmware to device" -msgstr "" - -#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 -msgid "" -"Web interface could not reconnect to your device. Please reload web " -"interface or check device manually" -msgstr "" - -#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 -msgid "sysupgrade via rpcd and luci" -msgstr "" diff --git a/luci-app-sysupgrade/root/etc/init.d/sysupgrade b/luci-app-sysupgrade/root/etc/init.d/sysupgrade deleted file mode 100755 index 86eccd349..000000000 --- a/luci-app-sysupgrade/root/etc/init.d/sysupgrade +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2020 Ycarus (Yannick Chabanois) -# Released under GPL 3. See LICENSE for the full terms. - -{ - START=90 - STOP=10 - USE_PROCD=1 -} - -start_service() -{ - if [ -f /etc/backup/installed_packages.txt ]; then - if [ "$(opkg -V0 update)" = "" ]; then - grep "\toverlay" /etc/backup/installed_packages.txt | cut -f1 | xargs -r opkg -V0 install - rm /etc/backup/installed_packages.txt - fi - fi -} - diff --git a/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade deleted file mode 100755 index a5ef66fe8..000000000 --- a/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -/etc/init.d/uhttpd restart -/etc/init.d/rpcd reload - -[ -e /etc/config/sysupgrade ] && return 0 - -touch /etc/config/sysupgrade - -uci -q batch < - ubus_call("uci", "get", option, option["option"]) -} - -ubus_counter = 0; -ubus_closed = 0; - -function ubus_call(command, argument, params, variable) { - var request_data = {}; - request_data.jsonrpc = "2.0"; - request_data.id = ubus_counter; - request_data.method = "call"; - request_data.params = [data.ubus_rpc_session, command, argument, params] - var request_json = JSON.stringify(request_data) - ubus_counter++; - var request = new XMLHttpRequest(); - request.open("POST", ubus_url, true); - request.setRequestHeader("Content-type", "application/json"); - request.onload = function(event) { - if (request.status === 200) { - var response = JSON.parse(request.responseText) - if (!("error" in response) && "result" in response) { - if (response.result.length === 2) { - if (command === "uci") { - data[variable] = response.result[1].value - } else { - data[variable] = response.result[1][variable] - } - } - } else { - set_status("danger", "Ubus call failed:
    Request: " + request_json + "
    Response: " + JSON.stringify(response)) - } - ubus_closed++; - } - } - request.send(request_json); -} - -function set_status(type, message, loading, show_log) { - $("#status_box").className = "alert-message " + type; - var loading_image = ''; - if (loading) { - loading_image = 'Loading '; - } - if (data.buildlog_url && show_log) { - message += '

    Build log

    ' - } - $("#status_box").innerHTML = loading_image + message; - show("#status_box") -} - -function upgrade_check() { - var current_version = data.release.version.toLowerCase(); - var current_branch = current_version.split('.').slice(0, 2).join('.') - var candidates = [] - hide("#status_box"); - hide("#server_div"); - set_status("info", _("Searching for upgrades"), true); - fetch(data.url + "/api/versions") - .then(response => response.json()) - .then(response => { - var branches = response["branches"] - for (i in branches) { - // handle snapshots in a special way - as always - if (current_version == "snapshot" && branches[i]["latest"] == "snapshot") { - candidates.unshift(branches[i]) - break - } - - if (current_version == branches[i]["latest"]) { - break - } - if (current_branch != branches[i]["name"]) { - branches[i]["warn_branch_jump"] = true - } - candidates.unshift(branches[i]) - if (current_branch == branches[i]["name"]) { - // don't offer branches older than the current - break - } - } - - if (candidates.length > 0) { - var info_output = "

    New release " + candidates[0].latest + " available

    " - info_output += _('Installed version:') + " " + data.release.version - - // tell server the currently installed version - request_dict.current_version = request_dict.version; - // tell server what version to install - request_dict.version = candidates[0].latest; - // tell server to diff the requested packages with the default packages - // this allows to not automatically re-install default packages which - // where dropped in later releases - request_dict.diff_packages = true; - - set_status("success", info_output) - - if (data.advanced_mode == 1) { - show("#edit_button"); - } - var upgrade_button = $("#upgrade_button") - upgrade_button.value = _("Request firmware"); - upgrade_button.style.display = "block"; - upgrade_button.disabled = false; - upgrade_button.onclick = upgrade_request; - - } else { - set_status("success", _("No upgrades available")) - - } - }); - -} - -function upgrade_request() { - // Request firmware using the following parameters - // distro, version, target, board_name, packages - $("#upgrade_button").disabled = true; - hide("#edit_packages"); - hide("#edit_button"); - hide("#keep_container"); - - // add board info to let server determine profile - request_dict.target = data.release.target - request_dict.profile = data.board_name - request_dict.rootfs = data.format - - if (data.edit_packages == true) { - request_dict.packages = $("#edit_packages").value.split("\n") - } else { - request_dict.packages = Object.keys(data.packages); - } - server_request() -} - -function upgrade_request_callback(response) { - var sysupgrade_file = ""; - console.log(response) - for (i in response.images) { - if (response.images[i].type == "sysupgrade") { - sysupgrade_file = response.images[i].name; - } - } - if (sysupgrade_file != "") { - data.sysupgrade_url = data.url + '/release/' + response.bin_dir + '/' + sysupgrade_file - var info_output = '

    Firmware created

    Created file: ' + sysupgrade_file + '

    ' - set_status("success", info_output, false, true); - - show("#keep_container"); - var upgrade_button = $("#upgrade_button") - upgrade_button.disabled = false; - upgrade_button.style.display = "block"; - upgrade_button.value = "Flash firmware"; - upgrade_button.onclick = download_image; - } else { - set_status("danger", "Firmware build successfull but device not sysupgrade compatible!") - } -} - -function flash_image() { - // Flash image via rpc-sys upgrade_start - set_status("warning", _("Flashing firmware. Don't unpower device"), true) - ubus_call("rpc-sys", "upgrade_start", { - "keep": $("#keep").checked - }, 'message'); - ping_max = 3600; // in seconds - setTimeout(ping_ubus, 10000) -} - -function ping_ubus() { - // Tries to connect to ubus. If the connection fails the device is likely still rebooting. - // If more time than ping_max passes update may failed - if (ping_max > 0) { - ping_max--; - var request = new XMLHttpRequest(); - request.open("GET", ubus_url, true); - request.addEventListener('error', function(event) { - set_status("warning", _("Rebooting device - please wait!"), true); - setTimeout(ping_ubus, 5000) - }); - request.addEventListener('load', function(event) { - set_status("success", _("Success! Please reload web interface")); - $("#upgrade_button").value = "Reload page"; - show("#upgrade_button"); - $("#upgrade_button").disabled = false; - $("#upgrade_button").onclick = function() { - location.reload(); - } - }); - request.send(); - } else { - set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually")) - } -} - -function upload_image(blob) { - // Uploads received blob data to the server using cgi-io - set_status("info", _("Uploading firmware to device"), true); - var request = new XMLHttpRequest(); - var form_data = new FormData(); - - form_data.append("sessionid", data.ubus_rpc_session) - form_data.append("filename", "/tmp/firmware.bin") - form_data.append("filemode", 755) // insecure? - form_data.append("filedata", blob) - - request.addEventListener('load', function(event) { - request_json = JSON.parse(request.responseText) - flash_image(); - }); - - request.addEventListener('error', function(event) { - set_status("danger", _("Upload of firmware failed, please retry by reloading web interface")) - }); - - request.open('POST', origin + '/cgi-bin/cgi-upload'); - request.send(form_data); -} - - -function download_image() { - // Download image from server once the url was received by upgrade_request - hide("#keep_container"); - hide("#upgrade_button"); - var download_request = new XMLHttpRequest(); - download_request.open("GET", data.sysupgrade_url); - download_request.responseType = "arraybuffer"; - - download_request.onload = function() { - if (this.status === 200) { - var blob = new Blob([download_request.response], { - type: "application/octet-stream" - }); - upload_image(blob) - } - }; - set_status("info", _("Downloading firmware to web browser memory"), true); - download_request.send(); -} - -function server_request() { - fetch(data.url + "/api/build", { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(request_dict) - }) - .then(response => { - switch (response.status) { - case 200: - response.json() - .then(response => { - upgrade_request_callback(response) - }); - break; - case 202: - set_status("info", "Processing request", true); - setTimeout(function() { - server_request() - }, 5000) - break; - case 400: // bad request - case 422: // bad package - case 500: // build failed - console.log('error (' + response.status + ')'); - response.json() - .then(response => { - if (response.buildlog) { - data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt'; - } - set_status("danger", response.message); - }); - break; - } - }); -} - -request_dict = {} -document.onload = setup() diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js index 759818be1..5b57f6126 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js @@ -368,7 +368,7 @@ return baseclass.extend({ release: { title: _('Firmware Version'), - value: boardinfo.release.description ? boardinfo.release.description : null + value: boardinfo.release.description } }; diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index ed2b50866..d51c0b33d 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -491,7 +491,7 @@ return view.extend({ so.datatype = 'or(ip4addr,"ignore")'; so.rmempty = true; - so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is in minutes (mini 2m), hours (eg 1h) or "infinite"')); + so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is minutes (mini 2m), hours (eg 1h) or "infinite"')); so.placeholder = '12h'; so.rmempty = true; diff --git a/mptcp/files/usr/bin/multipath b/mptcp/files/usr/bin/multipath index f25706218..567ab99ee 100755 --- a/mptcp/files/usr/bin/multipath +++ b/mptcp/files/usr/bin/multipath @@ -65,8 +65,8 @@ TYPE="$2" #FLAG_PATH=`find /sys/devices/ -path "*/net/$DEVICE/flags"` [ -d "/sys/class/net/$DEVICE/" ] || { - #echo "Device '$DEVICE' can't found!" - #echo "Use the hardware name like in ifconfig" + echo "Device '$DEVICE' can't found!" + echo "Use the hardware name like in ifconfig" exit 1 } diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 27031e506..0acb30236 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -1,5 +1,5 @@ -SETROUTE=false +SETROUTE=false set_route() { local multipath_config_route interface_gw interface_if INTERFACE=$1 @@ -33,111 +33,36 @@ set_route() { fi } -set_route6() { - local multipath_config_route interface_gw interface_if - INTERFACE=$1 - PREVINTERFACE=$2 - SETDEFAULT=$3 - [ -z "$SETDEFAULT" ] && SETDEFAULT="yes" - multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")" - interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) - interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") - if [ "$multipath_config_route" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - interface_gw="$(uci -q get network.$INTERFACE.gateway)" - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep ':')" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if" - [ "$SETDEFAULT" = "yes" ] && ip -6 route replace default scope global nexthop via $interface_gw dev $interface_if - ip -6 route replace default via $interface_gw dev $interface_if table 991337 && SETROUTE=true - fi - fi -} - set_server_default_route() { local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY" - if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then - ip r delete $serverip >/dev/null 2>&1 - fi - ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1 + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY" + if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then + ip r delete $serverip >/dev/null 2>&1 fi - } - config_list_foreach $server ip server_route -} - -set_server_default_route6() { - local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6" - if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then - ip -6 r delete $serverip >/dev/null 2>&1 - fi - ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1 - fi - } - config_list_foreach $server ip server_route + ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1 + fi } delete_server_default_route() { local server=$1 - delete_route() { - local serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" - ip route del $serverip metric 1 >/dev/null 2>&1 - fi - } - config_list_foreach $server ip delete_route -} - -delete_server_default_route6() { - local server=$1 - delete_route() { - local serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" - ip -6 route del $serverip metric 1 >/dev/null 2>&1 - fi - } - config_list_foreach $server ip delete_route + local serverip + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route" + ip route del $serverip metric 1 >/dev/null 2>&1 + fi } set_routes_intf() { @@ -164,7 +89,7 @@ set_routes_intf() { interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") fi #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -z "$(echo $interface_gw | grep :)" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then if [ "$multipath_config_route" = "master" ]; then weight=10 else @@ -189,55 +114,6 @@ set_routes_intf() { fi } -set_routes_intf6() { - local multipath_config_route - local INTERFACE=$1 - multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')" - interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) - interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - #multipath_current_config=$(multipath $interface_if | grep 'deactivated') - interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") - if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_if" != "" ] && [ "$interface_up" = "true" ]; then - interface_gw="$(uci -q get network.$INTERFACE.gateway)" - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip -6 route show $serverip | grep $interface_if)" = "" ]; then - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then - if [ "$multipath_config_route" = "master" ]; then - weight=10 - else - weight=1 - fi - if [ "$multipath_config_route" = "backup" ]; then - nbintfb6=$((nbintfb6+1)) - if [ -z "$routesintfbackup6" ]; then - routesintfbackup6="nexthop via $interface_gw dev $interface_if weight $weight" - else - routesintfbackup6="$routesintfbackup6 nexthop via $interface_gw dev $interface_if weight $weight" - fi - else - nbintf6=$((nbintf6+1)) - if [ -z "$routesintf6" ]; then - routesintf6="nexthop via $interface_gw dev $interface_if weight $weight" - else - routesintf6="$routesintf6 nexthop via $interface_gw dev $interface_if weight $weight" - fi - fi - fi - fi -} - set_route_balancing() { local multipath_config_route interface_gw interface_if INTERFACE=$1 @@ -281,207 +157,84 @@ set_route_balancing() { fi } -set_route_balancing6() { - local multipath_config_route interface_gw interface_if - INTERFACE=$1 - multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath) - [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')" - interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) - interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") - if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - interface_gw="$(uci -q get network.$INTERFACE.gateway)" - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ -z "$interface_gw" ]; then - interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n") - fi - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then - if [ "$(uci -q get network.$INTERFACE.weight)" != "" ]; then - weight=$(uci -q get network.$INTERFACE.weight) - elif [ "$(uci -q get openmtpcprouter.$INTERFACE.weight)" != "" ]; then - weight=$(uci -q get openmtpcprouter.$INTERFACE.weight) - elif [ "$multipath_config_route" = "master" ]; then - weight=2 - else - weight=1 - fi - if [ "$multipath_config_route" = "backup" ]; then - nbintfb6=$((nbintfb6+1)) - routesbalancingbackup6="$routesbalancingbackup6 nexthop via $interface_gw dev $interface_if weight $weight" - else - nbintf6=$((nbintf6+1)) - routesbalancing6="$routesbalancing6 nexthop via $interface_gw dev $interface_if weight $weight" - fi - fi - fi -} - set_server_all_routes() { local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then - routesintf="" - routesintfbackup="" - nbintf=0 - nbintfb=0 - config_load network - config_foreach set_routes_intf interface - uintf="$(echo $routesintf | awk '{print $5}')" - uintfb="$(echo $routesintfbackup | awk '{print $5}')" - if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then - while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do - ip r del $serverip - done - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" - ip route replace $serverip scope global $routesintf - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" - fi - if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" - ip route replace $serverip scope global metric 999 $routesintfbackup - fi + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then + routesintf="" + routesintfbackup="" + nbintf=0 + nbintfb=0 + config_load network + config_foreach set_routes_intf interface + uintf="$(echo $routesintf | awk '{print $5}')" + uintfb="$(echo $routesintfbackup | awk '{print $5}')" + if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then + while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do + ip r del $serverip + done + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" + ip route replace $serverip scope global $routesintf + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" fi - } - config_list_foreach $server ip server_route -} - -set_server_all_routes6() { - local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off') - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then - routesintf="" - routesintfbackup="" - nbintf6=0 - nbintfb6=0 - config_load network - config_foreach set_routes_intf interface - uintf="$(echo $routesintf | awk '{print $5}')" - uintfb="$(echo $routesintfbackup | awk '{print $5}')" - if [ -n "$routesintf" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then - while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do - ip -6 r del $serverip - done - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf" - ip -6 route replace $serverip scope global $routesintf - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" - fi - if [ -n "$routesintfbackup" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb6" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb6 $OMR_TRACKER_DEVICE" - ip -6 route replace $serverip scope global metric 999 $routesintfbackup - fi + if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE" + ip route replace $serverip scope global metric 999 $routesintfbackup fi - } - config_list_foreach $server ip server_route + fi } set_server_route() { local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - local metric=$2 - [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - #multipath_current_config=$(multipath $interface_if | grep "deactivated") - interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") - #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" - ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric - fi - } - config_list_foreach $server ip server_route + local serverip multipath_config_route + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + config_get disabled $server disabled + [ "$disabled" = "1" ] && return + local metric=$2 + [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) + [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" + interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) + [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') + #multipath_current_config=$(multipath $interface_if | grep "deactivated") + interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") + #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then + [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" + ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric + fi if [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric fi } -set_server_route6() { - local server=$1 - server_route() { - local serverip multipath_config_route - serverip=$1 - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - config_get disabled $server disabled - [ "$disabled" = "1" ] && return - local metric=$2 - [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath) - [ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off") - [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")" - interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname) - [ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') - interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') - #multipath_current_config=$(multipath $interface_if | grep "deactivated") - interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up") - #if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" - ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric - fi - } - config_list_foreach $server ip server_route - if [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then - ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric - fi -} - del_server_route() { local server=$1 - remove_route() { - local serverip="$1" - [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" - [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" - local metric - metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 - ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 - } - config_list_foreach $server ip remove_route + local serverip + config_get serverip $server ip + [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" + [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" + local metric + metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) + ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 + ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 else @@ -489,25 +242,6 @@ del_server_route() { fi } -del_server_route6() { - local server=$1 - remove_route() { - local serverip="$1" - [ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')" - [ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" - local metric - metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) - ip -6 route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1 - ip -6 route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 - } - config_list_foreach $server ip remove_route - if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then - ip -6 route del default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 - else - ip -6 route del default dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 - fi -} - disable_pihole() { local server=$1 if [ -n "$(uci -q get dhcp.@dnsmasq[0].server | grep '#53' | grep '10.2')" ]; then @@ -554,7 +288,6 @@ if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then fi default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3}') -default_gw6=$(ip -6 route show default | grep -v "metric" | awk '/default/ {print $3}') #current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway") interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') @@ -587,9 +320,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1 fi - if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1 - fi if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]; then VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)" VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n") @@ -601,22 +331,18 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then fi config_load openmptcprouter config_foreach del_server_route server - config_foreach del_server_route6 server #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then config_foreach set_server_all_routes server - config_foreach set_server_all_routes6 server fi fi - if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ] || [ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then + if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE - config_foreach set_route6 interface $OMR_TRACKER_INTERFACE elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE "no" - config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no" fi mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)" [ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)" @@ -624,9 +350,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then OMR_SYSNAME="$(uci -q get system.@system[0].hostname)" if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)" - mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)" - mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to) else echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to) @@ -644,7 +370,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then config_load network config_foreach set_route interface $OMR_TRACKER_INTERFACE - config_foreach set_route6 interface $OMR_TRACKER_INTERFACE fi if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi2.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then _log "Tunnel down use ShadowSocks for UDP" @@ -675,7 +400,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then #if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then config_foreach set_server_default_route server - config_foreach set_server_default_route6 server fi fi dns_flush @@ -723,7 +447,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") - elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]; then + elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ]; then if [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ]; then local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) #local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 8.8.8.8) @@ -766,9 +490,9 @@ if [ "$OMR_TRACKER_PREV_STATUS" != "" ] && [ "$OMR_TRACKER_PREV_STATUS" != "$OMR OMR_SYSNAME="$(uci -q get system.@system[0].hostname)" if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)" - mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)" - mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` + mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"` echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to) else echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up\n\nDetected that connection $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up again." | sendmail $(uci -q get mail.default.to) @@ -801,20 +525,6 @@ if [ "$multipath_config" = "master" ]; then config_foreach set_server_default_route server fi fi - if ([ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$default_gw6" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then - omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") - if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then - _log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE" - ip -6 route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE - fi - config_load openmptcprouter - #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then - # config_foreach set_server_all_routes server - if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then - config_foreach set_server_default_route server - config_foreach set_server_default_route6 server - fi - fi #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") @@ -822,42 +532,25 @@ if [ "$multipath_config" = "master" ]; then routesbalancing="" routesbalancingbackup="" nbintf=0 - nbintf6=0 config_load network config_foreach set_route_balancing interface - config_foreach set_route_balancing6 interface [ -n "$routesbalancing" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { _log "Set ip route replace default scope global $routesbalancing" - ip route replace default scope global metric 0 $routesbalancing - } - } - [ -n "$routesbalancing6" ] && { - ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && { - _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6" - ip -6 route replace default scope global metric 1 $routesbalancing6 + ip route replace default scope global $routesbalancing } } [ -n "$routesbalancingbackup" ] && { - ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && { + ([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && { _log "Set backup ip route replace default scope global $routesbalancingbackup" ip route replace default scope global metric 999 $routesbalancingbackup } } - [ -n "$routesbalancingbackup6" ] && { - ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && { - _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6" - ip -6 route replace default scope global metric 999 $routesbalancingbackup6 - } - } fi fi if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE " ]; then ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337 fi - if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE " ]; then - ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE table 991337 - fi if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 fi @@ -872,21 +565,6 @@ if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then config_foreach set_server_route server fi - if [ "$(ip r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then - ip r replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1 - fi -fi -if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then - config_load openmptcprouter - #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then - if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then - config_foreach set_server_all_routes6 server - elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then - config_foreach set_server_route6 server - fi - if [ "$(ip -6 r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then - ip -6 r replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1 - fi fi if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then @@ -897,55 +575,27 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then if [ "$(uci -q show | grep mptcpr)" = "" ]; then touch /etc/config/openmptcprouter fi - glorytunudppath() { - gtudp_port="$(uci -q get glorytun-udp.vpn.port)" - gtudp_dev="$(uci -q get glorytun-udp.vpn.dev)" - addpath() { - serverip=$1 - #gtudpst="up" - #[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" - if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] && [ -n "$(resolveip -4 $serverip)" ]; then - if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - fi - else - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - fi - fi + gtudpst="up" + [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup" + if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then + if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 auto tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 fixed tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1 fi - if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ] && [ -n "$(resolveip -6 $serverip)" ]; then - if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1 - fi - else - if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - else - glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1 - fi - fi + else + if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate auto tx 12500000 rx 12500000 > /dev/null 2>&1 + else + glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate fixed tx 12500000 rx 12500000 > /dev/null 2>&1 fi -# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then -# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 - # fi - [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && { - [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$(resolveip -4 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1 - [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$(resolveip -6 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1 - } - } - config_list_foreach $1 ip addpath - } - config_load openmptcprouter - config_foreach glorytunudppath server + fi + fi +# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then +# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1 +# fi + [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1 fi [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && { [ "$multipath_status" = "$multipath_config" ] || { @@ -962,7 +612,6 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..." if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" - local ip6addr="$(omr-ip6-intf $OMR_TRACKER_DEVICE)" else uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up" @@ -992,10 +641,10 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( # fi #fi if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then - #local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" - #[ -z "$asn" ] && { - local asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" - #} + local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" + [ -z "$asn" ] && { + asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" + } fi [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && { uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface @@ -1009,107 +658,39 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.latest_versions.lc=$(date +"%s") } fi + local serverip=$(uci -q get shadowsocks-libev.sss0.server) + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { + omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" + [ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + } [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr" [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" [ -n "$asn" ] && { uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn" } - local omrtracebox - traceboxmtutest() { - omr_tracebox_mtu() { - local serverip=$1 - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { - omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then + if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then + mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 } - if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then - if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then - mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } || { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } - fi - fi - } - config_list_foreach $1 ip omr_tracebox_mtu - } - config_load openmptcprouter - config_foreach traceboxmtutest server - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") - } - [ -n "$ip6addr" ] && { - if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then - local asn="$(whois $ip6addr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" - fi - [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface - } - if [ "$(uci -q get openmptcprouter.latest_versions.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.latest_versions.lc))) -gt 3600 ]; then - local latestversions="$(curl -6 -s -m 3 https://www.openmptcprouter.com/version/version.json)" - [ -n "$latestversions" ] && { - uci -q set openmptcprouter.latest_versions=latest_versions - uci -q set openmptcprouter.latest_versions.omr=$(echo $latestversions | jsonfilter -q -e '@.omr') - uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps') - uci -q set openmptcprouter.latest_versions.lc=$(date +"%s") - } - fi - [ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip6="$ip6addr" - [ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" - [ -n "$asn" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn" - } - local omrtracebox - traceboxmtutest() { - omr_tracebox_mtu() { - local serverip=$1 - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && { - omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)" - [ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox" + else + [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } + } || { + local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) + [ -n "$mtu" ] && { + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu + ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 + } } - if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then - if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then - mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then - [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } || { - local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1) - [ -n "$mtu" ] && { - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu - ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 - } - } - fi - fi - } - config_list_foreach $1 ip omr_tracebox_mtu - } - config_load openmptcprouter - config_foreach traceboxmtutest server + fi + fi uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up' uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") } @@ -1246,7 +827,7 @@ if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then sleep 5 fi -if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then +if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ]; then _log "Can't find omr-tracker-v2ray, restart omr-tracker..." /etc/init.d/omr-tracker restart fi @@ -1262,7 +843,7 @@ if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get uci -q commit openmptcprouter fi -if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then +if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ]; then _log "Can't find omr-tracker-ss, restart omr-tracker..." /etc/init.d/omr-tracker restart fi diff --git a/mptcpd/Makefile b/mptcpd/Makefile index a23a4a41b..34242071d 100644 --- a/mptcpd/Makefile +++ b/mptcpd/Makefile @@ -8,10 +8,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mptcpd -PKG_VERSION:=0.5.1 +PKG_VERSION:=0.4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/intel/mptcpd/releases/download/v$(PKG_VERSION) -PKG_HASH:=0ee4418880f20a1a2eff5c54c26185a75092cb44cbabe0fa3f25a2c5886459e7 +PKG_HASH:=459c45ba86ea574f1ad7a062a9914474ca650229b97375017bd46d0732f985ba PKG_RELEASE:=1 PKG_MAINTAINER:=Ycarus (Yannick Chabanois) diff --git a/ndpi-netfilter2/Makefile b/ndpi-netfilter2/Makefile index b74ed75c1..9f04c4e87 100644 --- a/ndpi-netfilter2/Makefile +++ b/ndpi-netfilter2/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ndpi-netfilter2 -PKG_RELEASE:=3 -PKG_REV:=25a5c2e1d619aa2d819b18bed8276b3bd7eb4c5b +PKG_RELEASE:=2 +PKG_REV:=0a03249da911f4033fd2a0d38a97cdba72eee2b6 PKG_VERSION:=3.2-$(PKG_REV) PKG_SOURCE_PROTO:=git diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 84a159e84..2e7b3d96a 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -5,7 +5,6 @@ [ -n "$1" ] || exit . /lib/functions.sh -. /usr/lib/unbound/iptools.sh # retrieve args OMR_TRACKER_INTERFACE="$1" @@ -14,20 +13,16 @@ shift # export vars export OMR_TRACKER_INTERFACE export OMR_TRACKER_HOST -export OMR_TRACKER_HOST6 export OMR_TRACKER_TIMEOUT export OMR_TRACKER_STATUS export OMR_TRACKER_STATUS_MSG export OMR_TRACKER_PREV_STATUS export OMR_TRACKER_DEVICE export OMR_TRACKER_DEVICE_IP -export OMR_TRACKER_DEVICE_IP6 export OMR_TRACKER_DEVICE_GATEWAY -export OMR_TRACKER_DEVICE_GATEWAY6 dscp=56 # set DSCP CS7 (56) in outgoing packets initial_hosts="$OMR_TRACKER_HOSTS" -initial_hosts6="$OMR_TRACKER_HOSTS6" initial_timeout="$OMR_TRACKER_TIMEOUT" wait_test=${OMR_TRACKER_WAIT_TEST:-0} @@ -64,15 +59,10 @@ _update_rto() { _restart() { OMR_TRACKER_HOST="${OMR_TRACKER_HOSTS%% *}" - OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}" [ "$OMR_TRACKER_HOST" = "$OMR_TRACKER_HOSTS" ] || { OMR_TRACKER_HOSTS="${OMR_TRACKER_HOSTS#* } $OMR_TRACKER_HOST" _init_rto } - [ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || { - OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6" - _init_rto - } } _post_tracking() { @@ -180,14 +170,12 @@ OMR_TRACKER_PREV_STATUS="" while true; do # setup tracker variables OMR_TRACKER_DEVICE_IP= - OMR_TRACKER_DEVICE_IP6= OMR_TRACKER_STATUS="ERROR" OMR_TRACKER_STATUS_MSG="" OMR_TRACKER_LATENCY= #OMR_TRACKER_TIMEOUT=$((rto / 1000 + (rto % 1000 ? 1 : 0))) OMR_TRACKER_LIST_HOSTS="" OMR_TRACKER_DEVICE_GATEWAY= - OMR_TRACKER_DEVICE_GATEWAY6= serverip_ping=false if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then @@ -197,10 +185,6 @@ while true; do if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1) fi - #OMR_TRACKER_DEVICE_IP6=$(ip -6 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}') - #if [ -z "$OMR_TRACKER_DEVICE_IP6" ]; then - OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | grep -v 'inet6 f' | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1) - #fi #OMR_TRACKER_DEVICE_IP=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n") #if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then # OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep -v default | awk '/proto static/ {print $1}' | tr -d "\n") @@ -235,15 +219,6 @@ while true; do if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n") fi - if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then - OMR_TRACKER_DEVICE_GATEWAY6=$(uci -q get "network.$OMR_TRACKER_INTERFACE.ip6gw") - fi - if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then - OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.${OMR_TRACKER_INTERFACE} status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${OMR_TRACKER_DEVICE_IP6}\"].nexthop" | tr -d "\n") - fi - if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then - OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n") - fi # execute specific tracker if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then @@ -329,89 +304,6 @@ while true; do sleep "$OMR_TRACKER_INTERVAL_TRIES" done fi - if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then - # setup loop variable - tries="$OMR_TRACKER_TRIES" - # loop until tries attempts have been reached - while [ "$tries" -gt 0 ]; do - #if [ -n "$OMR_TRACKER_DEVICE_ROUTE" ]; then - # _ping "$OMR_TRACKER_DEVICE_ROUTE" "$OMR_TRACKER_DEVICE" "no" - # status=$? - #else - _ping "$OMR_TRACKER_DEVICE_GATEWAY6" "$OMR_TRACKER_DEVICE" "no" - status=$? - #fi - if $(exit $status) && [ "$OMR_TRACKER_TYPE" = "none" ]; then - OMR_TRACKER_STATUS_MSG="" - OMR_TRACKER_STATUS="OK" - break - elif [ "$OMR_TRACKER_TYPE" != "none" ]; then - if ! $(exit $status); then - OMR_TRACKER_STATUS_MSG="gateway6 down" - fi - serverip_ping=false - if [ "$OMR_TRACKER_TYPE" = "ping" ]; then - config_load openmptcprouter - config_foreach _ping_server server $OMR_TRACKER_DEVICE - fi - if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST6" ]; then - OMR_TRACKER_HOST6=$(resolveip -6 -t 5 $OMR_TRACKER_HOST6 | head -n 1 | tr -d "\n") - if [ -n "$OMR_TRACKER_HOST6" ]; then - if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then - # Check if route is not used - while ! ip -6 route add $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6 > /dev/null 2>&1 - do - logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6. waiting..." - sleep 2 - ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 - _restart - done - fi - if [ "$OMR_TRACKER_TYPE" = "ping" ]; then - _ping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE" "yes" - statusb=$? - elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then - _httping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes" - statusb=$? - elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then - _dns "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes" - statusb=$? - fi - ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1 - if $(exit $statusb); then - OMR_TRACKER_STATUS_MSG="" - OMR_TRACKER_STATUS="OK" - break - else - if [ "$OMR_TRACKER_LIST_HOSTS6" = "" ]; then - OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST6" - else - OMR_TRACKER_LIST_HOSTS6="$OMR_TRACKER_LIST_HOSTS6,$OMR_TRACKER_HOST6" - fi - fi - else - OMR_TRACKER_STATUS_MSG="" - OMR_TRACKER_STATUS="OK" - break - fi - else - OMR_TRACKER_STATUS_MSG="" - OMR_TRACKER_STATUS="OK" - break - fi - elif ! $(exit $status); then - OMR_TRACKER_STATUS_MSG="gateway down" - fi - tries=$((tries - 1)) - #_restart - OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}" - [ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || { - OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6" - } - #OMR_TRACKER_TIMEOUT=$((OMR_TRACKER_TIMEOUT * 2)) - sleep "$OMR_TRACKER_INTERVAL_TRIES" - done - fi else OMR_TRACKER_STATUS_MSG="link down" fi @@ -424,13 +316,6 @@ while true; do OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS)" fi fi - if [ "$OMR_TRACKER_LIST_HOSTS6" != "" ]; then - if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then - OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)" - else - OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)" - fi - fi #[ "$OMR_TRACKER_HOSTS" = "$initial_hosts" ] || [ "$OMR_TRACKER_STATUS" = "OK" ] && _post_tracking #[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart diff --git a/omr-tracker/files/bin/omr-tracker-gre b/omr-tracker/files/bin/omr-tracker-gre index 89041bbc4..b169d21d8 100755 --- a/omr-tracker/files/bin/omr-tracker-gre +++ b/omr-tracker/files/bin/omr-tracker-gre @@ -14,7 +14,7 @@ _ping_server() { -w "$OMR_TRACKER_TIMEOUT" \ -c 1 \ -q \ - "${host}" 2>/dev/null + "${host}" ) && echo "$ret" | grep -sq " 0% packet loss" && { server_ping=true } diff --git a/omr-tracker/files/bin/omr-tracker-server b/omr-tracker/files/bin/omr-tracker-server index 8c0e7c577..e7c759b16 100755 --- a/omr-tracker/files/bin/omr-tracker-server +++ b/omr-tracker/files/bin/omr-tracker-server @@ -37,140 +37,86 @@ _check_server() { done } -_disable_redir() { - local redir=$1 - config_get server $redir server - if [ "$server" = "sss${count}" ]; then - config_set $redir disabled "1" - fi -} - -_enable_redir() { - local redir=$1 - config_get server $redir server - if [ "$server" = "sss${count}" ]; then - config_set $redir disabled "0" - fi -} - _check_master() { local name=$1 - local count=0 - local countips=0 config_get master $1 master config_get ip $1 ip config_get port $1 port "65500" config_get disabled $1 disabled [ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { - set_ip() { - local ip=$1 - #_ping_server $ip - _check_server $ip $port - if [ "$server_ping" = true ]; then - if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then - logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back" - #logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss${count}.server=$ip - commit shadowsocks-libev - EOF - if [ "$count" -eq "0" ]; then - uci -q batch <<-EOF >/dev/null - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn - EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null - fi - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - fi - config_load shadowsocks-libev - config_foreach _enable_redir ss_redir - count=$((count+1)) - else - config_load shadowsocks-libev - config_foreach _disable_redir ss_redir - fi - countips=$((countips+1)) + #_ping_server $ip + _check_server $ip $port + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { + logger -t "OMR-Tracker-Server" "Master server up, set it back" + logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n') - $ip" + uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.sss0.server=$ip + commit shadowsocks-libev + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null } - config_list_foreach $1 ip set_ip break } } _check_backup() { local name=$1 - local count=0 - local countips=0 config_get backup $1 backup config_get ip $1 ip config_get port $1 port config_get disabled $1 disabled [ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { - set_ip() { - #_ping_server $ip - _check_server $ip $port - #[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break - if [ "$server_ping" = true ]; then - if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then - logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" - uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss${count}.server=$ip - commit shadowsocks-libev - EOF - if [ "$count" -eq "0" ]; then - uci -q batch <<-EOF >/dev/null - set v2ray.omrout.s_vmess_address=$ip - set v2ray.omrout.s_vless_address=$ip - commit v2ray - set glorytun.vpn.host=$ip - commit glorytun - set dsvpn.vpn.host=$ip - commit dsvpn - set mlvpn.general.host=$ip - commit mlvpn - del openvpn.omr.remote - add_list openvpn.omr.remote=$ip - commit openvpn - EOF - /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null - /etc/init.d/v2ray restart >/dev/null 2>/dev/null - /etc/init.d/glorytun restart >/dev/null 2>/dev/null - /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null - /etc/init.d/mlvpn restart >/dev/null 2>/dev/null - /etc/init.d/openvpn restart >/dev/null 2>/dev/null - /etc/init.d/dsvpn restart >/dev/null 2>/dev/null - fi - /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null - sleep $waittest - fi - config_load shadowsocks-libev - config_foreach _enable_redir ss_redir - count=$((count+1)) - else - config_load shadowsocks-libev - config_foreach _disable_redir ss_redir - fi - countips=$((countips+1)) + #_ping_server $ip + _check_server $ip $port + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break + [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { + logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)" + uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.sss0.server=$ip + commit shadowsocks-libev + set v2ray.omrout.s_vmess_address=$ip + set v2ray.omrout.s_vless_address=$ip + commit v2ray + set glorytun.vpn.host=$ip + commit glorytun + set dsvpn.vpn.host=$ip + commit dsvpn + set mlvpn.general.host=$ip + commit mlvpn + del openvpn.omr.remote + add_list openvpn.omr.remote=$ip + commit openvpn + EOF + /etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null + /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null + /etc/init.d/v2ray restart >/dev/null 2>/dev/null + /etc/init.d/glorytun restart >/dev/null 2>/dev/null + /etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null + /etc/init.d/mlvpn restart >/dev/null 2>/dev/null + /etc/init.d/openvpn restart >/dev/null 2>/dev/null + /etc/init.d/dsvpn restart >/dev/null 2>/dev/null + sleep $waittest + break } - config_list_foreach $1 ip set_ip - uci -q commit shadowsocks-libev - [ "$server_ping" = true ] && break } } diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index 58a17ed5b..525c4a979 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -27,12 +27,7 @@ _get_ip() { [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" - public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" - uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}" - [ -n "$public_ipv4" ] && { - uci -q set upnpd.config.external_ip="${public_ipv4}" - uci -q commit upnpd - } + uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" if [ "$(uci -q get openmptcprouter.omr.shadowsocks)" != "down" ]; then uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" else @@ -54,7 +49,6 @@ retry=${OMR_TRACKER_TRIES:-4} proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111} hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1} wait_test=${OMR_TRACKER_WAIT_TEST:-0} -server=${OMR_TRACKER_SERVER:-sss0} nodns=0 @@ -71,12 +65,12 @@ while true; do } if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then nocontact="" - [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_${server})" = "" ] && { - _log "Shadowsocks ${server} is up (can contact via http ${host})" - uci -q set openmptcprouter.omr.ss_${server}="up" + [ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "" ] && { + _log "Shadowsocks is up (can contact via http ${host})" + uci -q set openmptcprouter.omr.shadowsocks="up" uci -q commit openmptcprouter.omr } - if [ -z "$(iptables-save | grep :ssr)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then + if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then _log "Reload Shadowsocks rules" /etc/init.d/shadowsocks-libev rules_up 2> /dev/null _get_ip @@ -87,17 +81,17 @@ while true; do last=$((last + 1 )) [ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host" [ "${last}" -ge "${retry}" ] && { - if [ -n "$(iptables -w -t nat -L -n | grep ssr)" ]; then - _log "Shadowsocks ${server} is down (can't contact via http ${nocontact})" - uci -q set openmptcprouter.omr.ss_${server}="down" + if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then + _log "Shadowsocks is down (can't contact via http ${nocontact})" + uci -q set openmptcprouter.omr.shadowsocks="down" uci -q commit openmptcprouter.omr - [ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null + /etc/init.d/shadowsocks-libev rules_down 2> /dev/null _get_ip server_ping=false - serverip="$(uci -q get shadowsocks-libev.${server}.server)" - _ping_server $serverip + server="$(uci -q get shadowsocks-libev.sss0.server)" + _ping_server $server if [ "$server_ping" = false ]; then - _log "Server $server ($serverip) seems down, no answer to ping" + _log "Server ($server) seems down, no answer to ping" fi sleep $wait_test fi diff --git a/omr-tracker/files/bin/omr-tracker-v2ray b/omr-tracker/files/bin/omr-tracker-v2ray index e8e0dcffe..32ef73c6b 100755 --- a/omr-tracker/files/bin/omr-tracker-v2ray +++ b/omr-tracker/files/bin/omr-tracker-v2ray @@ -27,12 +27,7 @@ _get_ip() { [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" - public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" - uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}" - [ -n "${public_ipv4}" ] && { - uci -q set upnpd.config.external_ip="${public_ipv4}" - uci -q commit upnpd - } + uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)" if [ "$(uci -q get openmptcprouter.omr.v2ray)" != "down" ]; then uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" else diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index 467817e91..3612c57ee 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -11,15 +11,12 @@ USE_PROCD=1 } -. /usr/lib/unbound/iptools.sh - _validate_section() { - local tmp_hosts=$hosts tmp_hosts6=$hosts6 tmp_timeout=$timeout tmp_tries=$tries + local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled tmp_wait_test=$wait_test uci_validate_section omr-tracker "$1" "$2" \ 'hosts:list(host)' \ - 'hosts6:list(host6)' \ 'timeout:uinteger' \ 'tries:uinteger' \ 'interval:uinteger' \ @@ -30,7 +27,6 @@ _validate_section() { 'options:string' [ -z "$hosts" ] && hosts=$tmp_hosts - [ -z "$hosts6" ] && hosts6=$tmp_hosts6 [ -z "$timeout" ] && timeout=$tmp_timeout [ -z "$tries" ] && tries=$tmp_tries [ -z "$interval" ] && interval=$tmp_interval @@ -46,7 +42,7 @@ _launch_tracker() { loopback|lan*|if0*) return;; esac - local hosts hosts6 timeout tries interval interval_tries options type enabled wait_test + local hosts timeout tries interval interval_tries options type enabled wait_test _validate_section "defaults" "defaults" _validate_section "interface" "$1" @@ -69,7 +65,6 @@ _launch_tracker() { # shellcheck disable=SC2086 procd_set_param command /bin/omr-tracker "$1" $options procd_append_param env "OMR_TRACKER_HOSTS=$hosts" - procd_append_param env "OMR_TRACKER_HOSTS6=$hosts6" procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout" procd_append_param env "OMR_TRACKER_TRIES=$tries" procd_append_param env "OMR_TRACKER_INTERVAL=$interval" @@ -132,46 +127,48 @@ _launch_gre_tracker() { _initialize_shadowsocks_tracker() { local redir_tcp server tracker_server - server=$1 - - [ -n "$(echo $server | grep sss)" ] || return - - #redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp) - #config_get tracker_server ss_rules server + config_get redir_tcp ss_rules redir_tcp + config_get tracker_server "tracker" server + if [ "$redir_tcp" != "all" ]; then + config_get server $redir_tcp server + elif [ "$tracker_server" != "" ]; then + server=$tracker_server + else + server="sss0" + fi config_get ss_disabled $server disabled 0 - [ "$ss_disabled" = "0" ] && ss_enable="1" - [ -z "$(uci -q get shadowsocks-libev.tracker_${server})" ] && [ "$ss_disabled" != "1" ] && { + [ -z "$tracker_server" ] && { logger -t "omr-tracker" "Create ShadowSock tracker ss_local..." uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.tracker_${server}=ss_local - set shadowsocks-libev.tracker_${server}.server=$server - set shadowsocks-libev.tracker_${server}.local_address="127.0.0.1" - set shadowsocks-libev.tracker_${server}.local_port=1111 - set shadowsocks-libev.tracker_${server}.mode=tcp_and_udp - set shadowsocks-libev.tracker_${server}.timeout=600 - set shadowsocks-libev.tracker_${server}.fast_open=1 - set shadowsocks-libev.tracker_${server}.syslog=0 - set shadowsocks-libev.tracker_${server}.reuse_port=1 - set shadowsocks-libev.tracker_${server}.mptcp=1 - set shadowsocks-libev.tracker_${server}.verbose=0 + set shadowsocks-libev.tracker=ss_local + set shadowsocks-libev.tracker.server=$server + set shadowsocks-libev.tracker.local_address="127.0.0.1" + set shadowsocks-libev.tracker.local_port=1111 + set shadowsocks-libev.tracker.mode=tcp_and_udp + set shadowsocks-libev.tracker.timeout=600 + set shadowsocks-libev.tracker.fast_open=1 + set shadowsocks-libev.tracker.syslog=0 + set shadowsocks-libev.tracker.reuse_port=1 + set shadowsocks-libev.tracker.mptcp=1 + set shadowsocks-libev.tracker.verbose=0 + commit shadowsocks-libev + EOF + /etc/init.d/shadowsocks-libev restart + } + [ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { + logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." + uci -q batch <<-EOF >/dev/null + set shadowsocks-libev.tracker.server=$server commit shadowsocks-libev EOF /etc/init.d/shadowsocks-libev restart } -# [ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || { -# logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..." -# uci -q batch <<-EOF >/dev/null -# set shadowsocks-libev.tracker.server=$server -# commit shadowsocks-libev -# EOF -# /etc/init.d/shadowsocks-libev restart -# } } _launch_shadowsocks_tracker() { local hosts timeout tries interval local_port enabled server wait_test - [ "$(echo $1 | grep tracker)" != "" ] || return + [ "$1" = "tracker" ] || return _validate_section "proxy" "proxy" @@ -192,7 +189,6 @@ _launch_shadowsocks_tracker() { procd_append_param env "OMR_TRACKER_INTERVAL=$interval" procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port" procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test" - procd_append_param env "OMR_TRACKER_SERVER=$server" procd_set_param limits nofile="51200 51200" procd_set_param respawn 0 10 0 procd_set_param stderr 1 @@ -231,15 +227,15 @@ _gre_tunnel() { } start_service() { - local ss_enable=0 + local ss_disabled logger -t "omr-tracker" "Launching..." config_load shadowsocks-libev - config_foreach _initialize_shadowsocks_tracker server + _initialize_shadowsocks_tracker config_load network config_foreach _launch_tracker interface - if [ "$ss_enable" = "1" ]; then + if [ "$ss_disabled" != "1" ]; then config_load shadowsocks-libev config_foreach _launch_shadowsocks_tracker ss_local #elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index f5b008643..defb4d7b4 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -50,7 +50,6 @@ MY_DEPENDS := \ speedtestc \ iftop \ htop \ - nano \ tcpdump \ ethtool \ iputils-ping \ @@ -81,7 +80,7 @@ MY_DEPENDS := \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ - hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding luci-app-sysupgrade + hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status # luci-proto-bonding luci-app-statistics luci-proto-gre # softethervpn5-client softethervpn5-server luci-app-nginx-ha diff --git a/openmptcprouter/files/bin/omr-test-speed b/openmptcprouter/files/bin/omr-test-speed index fa95ff2cc..b01279773 100755 --- a/openmptcprouter/files/bin/omr-test-speed +++ b/openmptcprouter/files/bin/omr-test-speed @@ -27,16 +27,8 @@ if [ -z "$INTERFACE" ]; then curl -4 $HOST >/dev/null || echo else domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') - if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then - for ip in $hostip; do - ipset add ss_rules_dst_bypass_all $ip - done - fi + hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n") + ipset add ss_rules_dst_bypass_all $hostip curl -4 --interface $INTERFACE $HOST >/dev/null || echo - if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then - for ip in $hostip; do - ipset del ss_rules_dst_bypass_all $ip - done - fi + ipset del ss_rules_dst_bypass_all $hostip fi diff --git a/openmptcprouter/files/bin/omr-test-speedv6 b/openmptcprouter/files/bin/omr-test-speedv6 index 0d5444041..ae7634d7c 100755 --- a/openmptcprouter/files/bin/omr-test-speedv6 +++ b/openmptcprouter/files/bin/omr-test-speedv6 @@ -1,42 +1,15 @@ #!/bin/sh # vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : + INTERFACE="$1" +HOST="proof.ovh.net" -echo "Select best test server..." -HOSTLST="http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin http://ipv6.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin" -bestping="999" -for pinghost in $HOSTLST; do - domain=$(echo $pinghost | awk -F/ '{print $3}') - if [ -z "$INTERFACE" ]; then - ping=$(ping -6 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1) - else - ping=$(ping -6 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1) - fi - echo "host: $domain - ping: $ping" - if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then - bestping=$ping - HOST=$pinghost - fi -done - -[ -z "$HOST" ] && HOST="http://proof.ovh.net/files/10Gio.dat" - -echo "Best server is $HOST, running test:" trap : HUP INT TERM if [ -z "$INTERFACE" ]; then - curl -6 $HOST >/dev/null || echo + curl -6 http://$HOST/files/10Gio.dat >/dev/null || echo else - domain=$(echo $HOST | awk -F/ '{print $3}') - hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ') - if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then - for ip in $hostip; do - ipset add ss_rules6_dst_bypass_all $ip - done - fi - curl -6 --interface $INTERFACE $HOST >/dev/null || echo - if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then - for ip in $hostip; do - ipset del ss_rules6_dst_bypass_all $ip - done - fi + hostip=$(dig +short AAAA $HOST | tr -d "\n") + ipset add ss_rules6_dst_bypass_all $hostip + curl -6 --interface $INTERFACE http://$HOST/files/10Gio.dat >/dev/null || echo + ipset del ss_rules6_dst_bypass_all $hostip fi diff --git a/openmptcprouter/files/bin/omr-tracebox b/openmptcprouter/files/bin/omr-tracebox index 2352b53ea..2342d3b8c 100755 --- a/openmptcprouter/files/bin/omr-tracebox +++ b/openmptcprouter/files/bin/omr-tracebox @@ -2,12 +2,9 @@ INTERFACE="$1" multipathip=$(dig +short A multipath-tcp.org | tr -d "\n") ipset add ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 -multipathip6=$(dig +short AAAA multipath-tcp.org | tr -d "\n") -ipset add ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1 if [ -z "$INTERFACE" ]; then tracebox -v -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org else tracebox -v -i $INTERFACE -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org fi ipset del ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 -ipset del ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1 diff --git a/openmptcprouter/files/etc/init.d/mptcpovervpn b/openmptcprouter/files/etc/init.d/mptcpovervpn index a2f7d97e4..870148e5b 100755 --- a/openmptcprouter/files/etc/init.d/mptcpovervpn +++ b/openmptcprouter/files/etc/init.d/mptcpovervpn @@ -9,7 +9,7 @@ } _getremoteip() { - [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}') + [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip) } mptcp_over_vpn() { @@ -139,8 +139,8 @@ start_service() elif [ "$(uci -q get glorytun.vpn.host)" = "10.255.250.1" ] && [ "$nbintf" != "$nbintfvpn" ]; then uci -q batch <<-EOF >/dev/null delete shadowsocks-libev.sss0.disabled - set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')" - set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')" + set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip)" + set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip)" commit glorytun commit glorytun-udp EOF diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index e299b4a90..0ec6b55de 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -8,8 +8,6 @@ USE_PROCD=1 EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall get_openvpn_key" -. /usr/lib/unbound/iptools.sh - _parse_result() { result=$("echo $1 | jsonfilter -q -e '@.result'") echo $result @@ -17,35 +15,23 @@ _parse_result() { _login() { local username password auth - #server="$(uci -q get openmptcprouter.${servername}.ip)" - #[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" + server="$(uci -q get openmptcprouter.${servername}.ip)" + [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" username="$(uci -q get openmptcprouter.${servername}.username)" password="$(uci -q get openmptcprouter.${servername}.password)" serverport="$(uci -q get openmptcprouter.${servername}.port)" - #[ -z "$server" ] && server="$(uci -q get openmptcprouter.${servername}.ip)" if [ -z "$token" ]; then - login_on_server() { - server=$1 - #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` - else - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` - fi - [ -z "$auth" ] && return - token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" - uci -q set openmptcprouter.${servername}.token="$token" - [ -n "$token" ] && break - } - config_load openmptcprouter - config_list_foreach ${servername} ip login_on_server + #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` + [ -z "$auth" ] && return + token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" + uci -q set openmptcprouter.${servername}.token="$token" fi } _ping_server() { - server="$1" + server="$(uci -q get openmptcprouter.${servername}.ip)" + [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" ret=$(ping -c 3 -w 3 -Q 184 $server 2>&1) && echo "$ret" | grep -sq "bytes from" && return false } @@ -55,13 +41,7 @@ _get_json() { route=$1 [ -z "$token" ] && _login [ -n "$token" ] && { - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route` - else - result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://[$server]:$serverport/$route` - fi + result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route` echo $result } || { echo '' @@ -74,13 +54,7 @@ _set_json() { settings="$2" [ -z "$token" ] && _login [ -n "$token" ] && { - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route` - else - result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://[$server]:$serverport/$route` - fi + result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route` echo $result } || { echo '' @@ -363,11 +337,10 @@ _get_vps_config() { fi fi fi - vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')" + vpsip="$(uci -q get openmptcprouter.${servername}.ip)" if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then config_foreach _set_ss_server server "server" $vpsip uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.sss0.server="$vpsip" commit shadowsocks-libev EOF if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" = "0" ]; then @@ -476,7 +449,6 @@ _get_gre_tunnel() { set network.omrip${i}gre.defaultroute='0' set network.omrip${i}gre.multipath='off' set network.omrip${i}gre.peerdns='0' - set network.omrip${i}gre.ttl='255' set network.omrip${i}gre.ip4table='vpn' set network.omrip${i}gre.peeraddr="$publicaddr" set network.omrip${i}gre.ipaddr="$vpnip_local" @@ -804,9 +776,6 @@ _vps_firewall_redirect_port() { config_get src_ip $1 src_ip config_get v2ray $1 v2ray "0" config_get dmz $1 dmz "0" - if [ -z "$src_dport" ] && [ -n "$dest_port" ]; then - src_dport=$dest_port - fi if [ "$dmz" = "1" ] && [ "$src_dport" != "2-64999" ]; then uci -q batch <<-EOF >/dev/null set firewall.${section}.src_dport='2-64999' @@ -974,15 +943,6 @@ _vps_firewall_close_port() { } _set_vps_firewall() { - fw3 -q print | grep 'vpn.* -d' | - while IFS=$"\n" read -r c; do - eval $(echo $c | sed 's/iptables/iptables -w/' | sed 's/-A/-D/') 2>&1 >/dev/null - newrule=$(echo $c | sed 's/iptables/iptables -w/' | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') - eval $(echo $newrule | sed 's/-A/-D/') || true - eval $newrule - done - #' - fwservername=$1 [ -z "$servername" ] && servername=$fwservername [ -z "$fwservername" ] && fwservername=$servername @@ -1017,6 +977,13 @@ _set_vps_firewall() { } set_vps_firewall() { + fw3 -q print | grep 'vpn.* -d' | + while IFS=$"\n" read -r c; do + eval $(echo $c | sed 's/-A/-D/') 2>&1 >/dev/null + newrule=$(echo $c | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//') + eval $(echo $newrule | sed 's/-A/-C/') || eval $newrule + done + #' config_load openmptcprouter config_foreach _set_vps_firewall server } @@ -1040,9 +1007,7 @@ _set_ss_server() { elif [ "$value" = "false" ]; then value=0 fi - if [ "$(echo $1 | grep omr)" != "" ] || [ "$(echo $1 | grep sss)" ]; then - uci -q set shadowsocks-libev.$1.$option=$value - fi + [ "$(echo $1 | grep omr)" != "" ] && uci -q set shadowsocks-libev.$1.$option=$value } _set_config_from_vps() { @@ -1053,7 +1018,7 @@ _set_config_from_vps() { logger -t "OMR-VPS" "Get config from server ${servername}..." noerror=1 # get VPS ip - vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')" + vpsip="$(uci -q get openmptcprouter.${servername}.ip)" vps_lastchange="$(echo "$vps_config" | jsonfilter -q -e '@.vps.lastchange')" lastchange="$(uci -q get openmptcprouter.${servername}.lastchange)" [ -z "$lastchange" ] && lastchange=0 @@ -1103,7 +1068,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=0 commit shadowsocks-libev set v2ray.main.enabled=0 - commit v2ray + commit shadowsocks-libev set openmptcprouter.settings.shadowsocks_disable=0 commit openmptcprouter EOF @@ -1112,7 +1077,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=1 commit shadowsocks-libev set v2ray.main.enabled=1 - commit v2ray + commit shadowsocks-libev set openmptcprouter.settings.shadowsocks_disable=1 commit openmptcprouter EOF @@ -1121,7 +1086,7 @@ _set_config_from_vps() { set shadowsocks-libev.sss0.disabled=1 commit shadowsocks-libev set v2ray.main.enabled=0 - commit v2ray + commit shadowsocks-libev set openmptcprouter.settings.shadowsocks_disable=1 commit openmptcprouter EOF @@ -1488,7 +1453,7 @@ _backup_send() { EOF return } - sysupgrade -k -b /tmp/backup.tar.gz + sysupgrade -b /tmp/backup.tar.gz backup_data="$(cat /tmp/backup.tar.gz | base64 | tr -d '\n')" backup_sha256sum="$(sha256sum /tmp/backup.tar.gz | awk '{print $1}')" [ -n "$backup_data" ] && { @@ -1600,36 +1565,20 @@ _config_service() { _login [ -z "$token" ] && { reason="" - test_ping() { - _ping_server $1 - status=$? - if $(exit $status); then - reason="can ping server ${servername} on $1" - else - reason="can't ping server ${servername} on $1" - fi - } - config_list_foreach "${servername}" ip test_ping + _ping_server + status=$? + if $(exit $status); then + reason="can ping server ${servername}" + else + reason="can't ping server ${servername}" + fi port="$(uci -q get openmptcprouter.${servername}.port)" - api_test() { - server="$1" - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then - reason="$reason, no server API answer on $1" - else - reason="$reason, server API answer on $1" - fi - else - if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then - reason="$reason, no server API answer on $1" - else - reason="$reason, server API answer on $1" - fi - fi - } - config_list_foreach "${servername}" ip api_test + server="$(uci -q get openmptcprouter.${servername}.ip)" + if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then + reason="$reason, no server API answer" + else + reason="$reason, server API answer" + fi if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then reason="$reason, custom username" fi @@ -1757,9 +1706,6 @@ start_service() { uci -q batch <<-EOF >/dev/null commit openmptcprouter EOF - if [ "$(ps w | grep sysupgrade)" = "" ]; then - /etc/init.d/sysupgrade restart - fi } service_triggers() { diff --git a/openmptcprouter/files/etc/init.d/openvpnbonding b/openmptcprouter/files/etc/init.d/openvpnbonding index 87dfdf483..d36eeb584 100755 --- a/openmptcprouter/files/etc/init.d/openvpnbonding +++ b/openmptcprouter/files/etc/init.d/openvpnbonding @@ -9,7 +9,7 @@ } _getremoteip() { - [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}') + [ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip) } _openvpnbonding() { diff --git a/openmptcprouter/files/etc/uci-defaults/zzzzz-omr-update b/openmptcprouter/files/etc/uci-defaults/000-omr-update similarity index 100% rename from openmptcprouter/files/etc/uci-defaults/zzzzz-omr-update rename to openmptcprouter/files/etc/uci-defaults/000-omr-update diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 5880c13b0..69da0ea91 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -1,13 +1,6 @@ #!/bin/sh # Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project -if [ "$(uci -q get shadowsocks-libev.hi)" != ""; then - uci -q batch <<-EOF >/dev/null - rename shadowsocks-libev.hi=hi1 - commit shadowsocks-libev - EOF -fi - if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then NBCPU=$(grep -c '^processor' /proc/cpuinfo | tr -d "\n") if [ "$NBCPU" -gt 2 ]; then @@ -33,16 +26,24 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then fi fi - if [ "$(uci -q get shadowsocks-libev.hi1.timeout)" != "1000" ]; then - for c in $(seq 1 $NBCPU); do + if [ "$(uci -q get shadowsocks-libev.hi.timeout)" != "1000" ]; then + uci -q batch <<-EOF > /dev/null + set shadowsocks-libev.hi.timeout=1000 + commit shadowsocks-libev + EOF + for c in $(seq 2 $NBCPU); do uci -q batch <<-EOF > /dev/null set shadowsocks-libev.hi$c.timeout=1000 commit shadowsocks-libev EOF done fi - if [ "$(uci -q get shadowsocks-libev.hi1.mode)" != "tcp" ]; then - for c in $(seq 1 $NBCPU); do + if [ "$(uci -q get shadowsocks-libev.hi.mode)" != "tcp" ]; then + uci -q batch <<-EOF > /dev/null + set shadowsocks-libev.hi.mode=tcp_and_udp + commit shadowsocks-libev + EOF + for c in $(seq 2 $NBCPU); do uci -q batch <<-EOF > /dev/null set shadowsocks-libev.hi$c.mode=tcp_and_udp commit shadowsocks-libev @@ -50,16 +51,12 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then done fi fi - if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then - port=1100 - for c in $(seq 1 2 $NBCPU); do + port=1101 + for c in $(seq 3 2 $NBCPU); do uci -q batch <<-EOF >/dev/null set shadowsocks-libev.hi$c.local_port=$port - set shadowsocks-libev.hi$c.server=sss0 set shadowsocks-libev.hi$((c+1)).local_port=$port - set shadowsocks-libev.hi$((c+1)).local_address="::" - set shadowsocks-libev.hi$((c+1)).server=sss1 commit shadowsocks-libev EOF port=$((port+1)) @@ -70,12 +67,12 @@ if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then EOF fi -if [ "$(uci -q get shadowsocks-libev.hi1.obfs)" = "1" ]; then +if [ "$(uci -q get shadowsocks-libev.hi.obfs)" = "1" ]; then uci -q batch <<-EOF > /dev/null set shadowsocks-libev.sss0.obfs=1 - set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi1.obfs_plugin)" - set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi1.obfs_host)" - set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi1.obfs_type)" + set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi.obfs_plugin)" + set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi.obfs_host)" + set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi.obfs_type)" commit shadowsocks-libev EOF fi @@ -88,23 +85,12 @@ if [ "$(uci -q get shadowsocks-libev.ss_rules.server)" = "" ]; then fi -if [ "$(uci -q get ucitrack.@shadowsocks-libev[-1].affects | grep openmptcprouter-vps)" = "" ]; then +if [ "$(uci -q get ucitrack.@shadowsocks-libev[*1].affects | grep openmptcprouter-vps)" = "" ]; then uci -q batch <<-EOF >/dev/null add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps" commit ucitrack EOF fi -if [ "$(uci -q get shadowsocks-libev.sss1)" = "" ]; then - uci -q batch <<-EOF > /dev/null - set shadowsocks-libev.sss1=server - set shadowsocks-libev.sss1.server_port='65101' - set shadowsocks-libev.sss1.method='chacha20-ietf-poly1305' - set shadowsocks-libev.sss1.obfs='0' - set shadowsocks-libev.sss1.disabled='1' - commit shadowsocks-libev - EOF -fi - rm -f /tmp/luci-indexcache exit 0 diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index e66213732..73508e900 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -40,7 +40,7 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then EOF fi -if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then +if [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then # uci -q batch <<-EOF >/dev/null # delete https-dns-proxy.@https-dns-proxy[-1] # delete https-dns-proxy.@https-dns-proxy[-1] @@ -66,144 +66,6 @@ fi # commit unbound #EOF -if [ -z "$(uci -q unbound.auth_icann)" ]; then - uci -q batch <<-EOF >/dev/null - set unbound.auth_icann=zone - set unbound.auth_icann.fallback='1' - set unbound.auth_icann.url_dir='https://www.internic.net/domain/' - set unbound.auth_icann.zone_type='auth_zone' - add_list unbound.auth_icann.server='lax.xfr.dns.icann.org' - add_list unbound.auth_icann.server='iad.xfr.dns.icann.org' - add_list unbound.auth_icann.zone_name='.' - add_list unbound.auth_icann.zone_name='arpa.' - add_list unbound.auth_icann.zone_name='in-addr.arpa.' - add_list unbound.auth_icann.zone_name='ip6.arpa.' - set unbound.auth_icann.enabled='1' - set unbound.fwd_isp=zone - set unbound.fwd_isp.enabled='0' - set unbound.fwd_isp.fallback='1' - set unbound.fwd_isp.resolv_conf='1' - set unbound.fwd_isp.zone_type='forward_zone' - add_list unbound.fwd_isp.zone_name='isp-bill.example.com.' - add_list unbound.fwd_isp.zone_name='isp-mail.example.net.' - set unbound.fwd_google=zone - set unbound.fwd_google.enabled='0' - set unbound.fwd_google.fallback='1' - set unbound.fwd_google.tls_index='dns.google' - set unbound.fwd_google.tls_upstream='1' - set unbound.fwd_google.zone_type='forward_zone' - add_list unbound.fwd_google.server='8.8.4.4' - add_list unbound.fwd_google.server='8.8.8.8' - add_list unbound.fwd_google.server='2001:4860:4860::8844' - add_list unbound.fwd_google.server='2001:4860:4860::8888' - set unbound.fwd_google.zone_name='.' - set unbound.fwd_cloudflare=zone - set unbound.fwd_cloudflare.enabled='0' - set unbound.fwd_cloudflare.fallback='1' - set unbound.fwd_cloudflare.tls_index='cloudflare-dns.com' - set unbound.fwd_cloudflare.tls_upstream='1' - set unbound.fwd_cloudflare.zone_type='forward_zone' - add_list unbound.fwd_cloudflare.server='1.1.1.1' - add_list unbound.fwd_cloudflare.server='1.0.0.1' - add_list unbound.fwd_cloudflare.server='2606:4700:4700::1111' - add_list unbound.fwd_cloudflare.server='2606:4700:4700::1001' - set unbound.fwd_cloudflare.zone_name='.' - EOF -fi - -if [ -z "$(uci -q get unbound.fwd_adguard_family)" ]; then - uci -q batch <<-EOF >/dev/null - set unbound.fwd_adguard_family=zone - set unbound.fwd_adguard_family.enabled='0' - set unbound.fwd_adguard_family.fallback='1' - set unbound.fwd_adguard_family.tls_index='dns-family.adguard.com' - set unbound.fwd_adguard_family.tls_upstream='1' - set unbound.fwd_adguard_family.zone_type='forward_zone' - add_list unbound.fwd_adguard_family.server='176.103.130.132' - add_list unbound.fwd_adguard_family.server='176.103.130.134' - set unbound.fwd_adguard_family.zone_name='.' - set unbound.fwd_adguard_standard=zone - set unbound.fwd_adguard_standard.enabled='0' - set unbound.fwd_adguard_standard.fallback='1' - set unbound.fwd_adguard_standard.tls_index='dns.adguard.com' - set unbound.fwd_adguard_standard.tls_upstream='1' - set unbound.fwd_adguard_standard.zone_type='forward_zone' - add_list unbound.fwd_adguard_standard.server='176.103.130.130' - add_list unbound.fwd_adguard_standard.server='176.103.130.131' - set unbound.fwd_adguard_standard.zone_name='.' - set unbound.fwd_cloudflare_family=zone - set unbound.fwd_cloudflare_family.enabled='0' - set unbound.fwd_cloudflare_family.fallback='1' - set unbound.fwd_cloudflare_family.tls_index='family.cloudflare-dns.com' - set unbound.fwd_cloudflare_family.tls_upstream='1' - set unbound.fwd_cloudflare_family.zone_type='forward_zone' - add_list unbound.fwd_cloudflare_family.server='1.1.1.3' - add_list unbound.fwd_cloudflare_family.server='1.0.0.3' - set unbound.fwd_cloudflare_family.zone_name='.' - set unbound.fwd_cloudflare_malware=zone - set unbound.fwd_cloudflare_malware.enabled='0' - set unbound.fwd_cloudflare_malware.fallback='1' - set unbound.fwd_cloudflare_malware.tls_index='security.cloudflare-dns.com' - set unbound.fwd_cloudflare_malware.tls_upstream='1' - set unbound.fwd_cloudflare_malware.zone_type='forward_zone' - add_list unbound.fwd_cloudflare_malware.server='1.1.1.2' - add_list unbound.fwd_cloudflare_malware.server='1.0.0.2' - set unbound.fwd_cloudflare_malware.zone_name='.' - set unbound.fwd_odvr=zone - set unbound.fwd_odvr.enabled='0' - set unbound.fwd_odvr.fallback='1' - set unbound.fwd_odvr.tls_index='odvr.nic.cz' - set unbound.fwd_odvr.tls_upstream='1' - set unbound.fwd_odvr.zone_type='forward_zone' - add_list unbound.fwd_odvr.server='193.17.47.1' - add_list unbound.fwd_odvr.server='185.43.135.1' - set unbound.fwd_odvr.zone_name='.' - set unbound.fwd_libredns=zone - set unbound.fwd_libredns.enabled='0' - set unbound.fwd_libredns.fallback='1' - set unbound.fwd_libredns.tls_index='doh.libredns.gr' - set unbound.fwd_libredns.tls_upstream='1' - set unbound.fwd_libredns.zone_type='forward_zone' - add_list unbound.fwd_libredns.server='116.202.176.26' - set unbound.fwd_libredns.zone_name='.' - set unbound.fwd_quad9_recommended=zone - set unbound.fwd_quad9_recommended.enabled='0' - set unbound.fwd_quad9_recommended.fallback='1' - set unbound.fwd_quad9_recommended.tls_index='dns.quad9.net' - set unbound.fwd_quad9_recommended.tls_upstream='1' - set unbound.fwd_quad9_recommended.zone_type='forward_zone' - add_list unbound.fwd_quad9_recommended.server='9.9.9.9' - add_list unbound.fwd_quad9_recommended.server='149.112.112.112' - set unbound.fwd_quad9_recommended.zone_name='.' - set unbound.fwd_quad9_unsecured=zone - set unbound.fwd_quad9_unsecured.enabled='0' - set unbound.fwd_quad9_unsecured.fallback='1' - set unbound.fwd_quad9_unsecured.tls_index='dns10.quad9.net' - set unbound.fwd_quad9_unsecured.tls_upstream='1' - set unbound.fwd_quad9_unsecured.zone_type='forward_zone' - add_list unbound.fwd_quad9_unsecured.server='9.9.9.10' - add_list unbound.fwd_quad9_unsecured.server='149.112.112.10' - set unbound.fwd_quad9_unsecured.zone_name='.' - set unbound.fwd_quad9_ecs=zone - set unbound.fwd_quad9_ecs.enabled='0' - set unbound.fwd_quad9_ecs.fallback='1' - set unbound.fwd_quad9_ecs.tls_index='dns11.quad9.net' - set unbound.fwd_quad9_ecs.tls_upstream='1' - set unbound.fwd_quad9_ecs.zone_type='forward_zone' - add_list unbound.fwd_quad9_ecs.server='9.9.9.11' - add_list unbound.fwd_quad9_ecs.server='149.112.112.11' - set unbound.fwd_quad9_ecs.zone_name='.' - set unbound.fwd_quad9_secured=zone - set unbound.fwd_quad9_secured.enabled='0' - set unbound.fwd_quad9_secured.fallback='1' - set unbound.fwd_quad9_secured.tls_index='dns9.quad9.net' - set unbound.fwd_quad9_secured.tls_upstream='1' - set unbound.fwd_quad9_secured.zone_type='forward_zone' - add_list unbound.fwd_quad9_secured.server='9.9.9.9' - add_list unbound.fwd_quad9_secured.server='149.112.112.9' - set unbound.fwd_quad9_secured.zone_name='.' - EOF -fi rm -f /tmp/luci-indexcache diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index db2fcf39e..e6f918796 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -151,41 +151,6 @@ if [ "$(uci -q get firewall.blockquicproxy)" = "" ]; then EOF fi -if [ "$(uci -q get firewall.allowicmpipv6)" = "" ]; then - uci -q batch <<-EOF >/dev/null - set firewall.allowicmpipv6=rule - set firewall.allowicmpipv6.proto='icmp' - set firewall.allowicmpipv6.target='ACCEPT' - set firewall.allowicmpipv6.src='wan' - set firewall.allowicmpipv6.name='Allow IPv6 ICMP' - set firewall.allowicmpipv6.family='ipv6' - set firewall.allowicmpipv6.icmp_type='neighbour-advertisement neighbour-solicitation router-advertisement router-solicitation' - commit firewall - EOF -fi - -if [ "$(uci -q get firewall.allowdhcpv6546)" = "" ]; then - uci -q batch <<-EOF >/dev/null - set firewall.allowdhcpv6546=rule - set firewall.allowdhcpv6546.target='ACCEPT' - set firewall.allowdhcpv6546.src='wan' - set firewall.allowdhcpv6546.proto='udp' - set firewall.allowdhcpv6546.dest_port='547' - set firewall.allowdhcpv6546.name='Allow DHCPv6 (546-to-547)' - set firewall.allowdhcpv6546.family='ipv6' - set firewall.allowdhcpv6546.src_port='546' - set firewall.allowdhcpv6547=rule - set firewall.allowdhcpv6547.target='ACCEPT' - set firewall.allowdhcpv6547.src='wan' - set firewall.allowdhcpv6547.proto='udp' - set firewall.allowdhcpv6547.dest_port='546' - set firewall.allowdhcpv6547.name='Allow DHCPv6 (547-to-546)' - set firewall.allowdhcpv6547.family='ipv6' - set firewall.allowdhcpv6547.src_port='547' - commit firewall - EOF -fi - # Fix firewall config from some old config allintf=$(uci -q get firewall.@zone[1].network) uci -q del firewall.@zone[1].network diff --git a/openmptcprouter/files/etc/uci-defaults/2060-omr-system b/openmptcprouter/files/etc/uci-defaults/2060-omr-system index 787763c26..70beaade9 100755 --- a/openmptcprouter/files/etc/uci-defaults/2060-omr-system +++ b/openmptcprouter/files/etc/uci-defaults/2060-omr-system @@ -8,6 +8,8 @@ uci -q batch <<-EOF >/dev/null commit rpcd set luci.apply.timeout='20' commit luci + set fstab.@global[0].check_fs='1' + commit fstab EOF if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then @@ -18,10 +20,6 @@ if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then fi /sbin/block detect > /etc/config/fstab -uci -q batch <<-EOF >/dev/null - set fstab.@global[0].check_fs='1' - commit fstab -EOF [ -n "$(ubus call system board | jsonfilter -e '@.board_name' | grep raspberry)" ] && [ "$(uci -q get openmptcprouter.settings.scaling_governor)" != "performance" ] && { # force CPU speed for RPI diff --git a/openmptcprouter/files/etc/uci-defaults/2092-upnpd b/openmptcprouter/files/etc/uci-defaults/2092-upnpd deleted file mode 100755 index a89804ab6..000000000 --- a/openmptcprouter/files/etc/uci-defaults/2092-upnpd +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -if [ "$(uci -q get upnpd.config.external_ifac)" != "omrvpn" ]; then - uci -q batch <<-EOF >/dev/null - set upnpd.config.external_iface=omrvpn - commit upnpd - EOF -fi - -exit 0 diff --git a/shadowsocks-libev/files/shadowsocks-libev.config b/shadowsocks-libev/files/shadowsocks-libev.config index 719a9cc85..2bf7def6b 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.config +++ b/shadowsocks-libev/files/shadowsocks-libev.config @@ -1,4 +1,4 @@ -config ss_redir hi1 +config ss_redir hi option server 'sss0' option local_address '::' option local_port '1100' diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index fa1b1602d..41e48aa4a 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -1,7 +1,6 @@ #!/bin/sh /etc/rc.common # # Copyright (C) 2017-2019 Yousong Zhou -# Copyright (C) 2019-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. @@ -147,8 +146,7 @@ ss_rules_cb() { ss_redir_ports() { port=$(uci -q get shadowsocks-libev.$1.local_port) server=$(uci -q get shadowsocks-libev.$1.server) - disabled=$(uci -q get shadowsocks-libev.$1.disabled) - if [ "$disabled" != "1" ] && ([ "$server" = "$2" ] || [ "$2" = "" ]); then + if [ "$server" = "$2" ] || [ "$2" = "" ]; then if [ "$port" -lt "$min_ss_redir_ports" ]; then min_ss_redir_ports=$port fi @@ -227,26 +225,6 @@ ss_rules() { src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)" - [ -z "$dst_ips_bypass4" ] && [ -z "$dst_ips_bypass6" ] && { - dst_ips_bypass4="$dst_ips_bypass" - dst_ips_bypass6="$dst_ips_bypass" - } - [ -z "$dst_ips_forward4" ] && [ -z "$dst_ips_forward6" ] && { - dst_ips_forward4="$dst_ips_forward" - dst_ips_forward6="$dst_ips_forward" - } - [ -z "$src_ips_bypass4" ] && [ -z "$src_ips_bypass6" ] && { - src_ips_bypass4="$src_ips_bypass" - src_ips_bypass6="$src_ips_bypass" - } - [ -z "$src_ips_forward4" ] && [ -z "$src_ips_forward6" ] && { - src_ips_forward4="$src_ips_forward" - src_ips_forward6="$src_ips_forward" - } - [ -z "$src_ips_checkdst4" ] && [ -z "$src_ips_checkdst6" ] && { - src_ips_checkdst4="$src_ips_checkdst" - src_ips_checkdst6="$src_ips_checkdst" - } [ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst" ss_rules_call @@ -308,7 +286,6 @@ start_service() { # Add rule to match traffic marked by firewall for bypass ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1 rules_up - [ -f /etc/firewall.gre-tunnel ] && sh /etc/firewall.gre-tunnel > /dev/null 2>&1 } stop_service() { @@ -316,12 +293,8 @@ stop_service() { rm -rf "$ss_confdir" } -reload_service() { - restart "$@" -} - rules_exist() { - [ -n "$(iptables-save | grep 'A ssr')" ] && return 0 + [ -n "$(iptables -t nat -L -n | grep ssr)" ] && return 0 return 1 } @@ -348,7 +321,6 @@ rules_up() { config_foreach ss_rules_restart "$cfgtype" "$cfgtype" done config_foreach ss_rules ss_rules - [ -z "$(iptables-save | grep :ssr)" ] && logger -t "Shadowsocks" "Rules not applied" [ -f /etc/init.d/omr-bypass ] && { logger -t "Shadowsocks" "Reload omr-bypass rules" /etc/init.d/omr-bypass reload_rules diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index 2f4583e47..732d9d620 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) +# Copyright (C) 2018 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # @@ -125,28 +125,28 @@ ss_rules_flush() { iptables-save --counters | grep -v ssr_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ssr_${rule}"); do + for setname in $(ipset -n list | grep "ss_rules_"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules_ipset_init() { ipset --exist restore <<-EOF - create ssr_${rule}_src_bypass hash:net hashsize 64 - create ssr_${rule}_src_forward hash:net hashsize 64 - create ssr_${rule}_src_checkdst hash:net hashsize 64 + create ss_rules_src_bypass hash:net hashsize 64 + create ss_rules_src_forward hash:net hashsize 64 + create ss_rules_src_checkdst hash:net hashsize 64 create ss_rules_dst_bypass_all hash:net hashsize 64 - create ssr_${rule}_dst_bypass hash:net hashsize 64 - create ssr_${rule}_dst_bypass_ hash:net hashsize 64 - create ssr_${rule}_dst_forward hash:net hashsize 64 + create ss_rules_dst_bypass hash:net hashsize 64 + create ss_rules_dst_bypass_ hash:net hashsize 64 + create ss_rules_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(ss_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(ss_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") - $(ss_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") - $(ss_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") - $(ss_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(ss_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") + $(ss_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") + $(ss_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") + $(ss_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -187,19 +187,18 @@ ss_rules_iptchains_init_tcp() { forward) local_target=ssr_${rule}_forward ;; bypass|*) return 0;; esac - if [ "$(iptables-save | grep ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then - iptables-restore -w --noflush <<-EOF - *nat - :ssr_${rule}_local_out - - -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN - -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN - -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" - COMMIT - EOF - fi + + iptables-restore -w --noflush <<-EOF + *nat + :ssr_${rule}_local_out - + -I OUTPUT 1 -p tcp -j ssr_${rule}_local_out + -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN + -A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN + -A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN + -A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" + COMMIT + EOF } ss_rules_iptchains_init_udp() { @@ -251,19 +250,19 @@ ss_rules_iptchains_init_() { :ssr_${rule}_dst - :ssr_${rule}_forward - $(ss_rules_iptchains_mkprerules "$proto") - -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN -A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src - -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN - -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j ssr_${rule}_forward - -A ssr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j ssr_${rule}_dst + -A ssr_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN + -A ssr_${rule}_src -m set --match-set ss_rules_src_forward src -j ssr_${rule}_forward + -A ssr_${rule}_src -m set --match-set ss_rules_src_checkdst src -j ssr_${rule}_dst -A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j ssr_${rule}_forward + -A ssr_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j ssr_${rule}_forward $recentrst_addset_rules -A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index 3225573a1..1c25b43bf 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) +# Copyright (C) 2018 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # @@ -108,28 +108,28 @@ ss_rules6_flush() { ip6tables-save --counters | grep -v ssr6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ssr6_${rule}"); do + for setname in $(ipset -n list | grep "ss_rules6_"); do ipset destroy "$setname" 2>/dev/null || true done } ss_rules6_ipset_init() { ipset --exist restore <<-EOF - create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 - create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 - create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 + create ss_rules6_src_bypass hash:net family inet6 hashsize 64 + create ss_rules6_src_forward hash:net family inet6 hashsize 64 + create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 + create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 + create ss_rules6_dst_forward hash:net family inet6 hashsize 64 + create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 + $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(ss_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") - $(ss_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") - $(ss_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") - $(ss_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(ss_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") + $(ss_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") + $(ss_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") + $(ss_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -174,9 +174,9 @@ ss_rules6_iptchains_init_tcp() { *nat :ssr6_${rule}_local_out - -I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out - -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass dst -j RETURN -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN -A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -232,19 +232,19 @@ ss_rules6_iptchains_init_() { :ssr6_${rule}_dst - :ssr6_${rule}_forward - $(ss_rules6_iptchains_mkprerules "$proto") - -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN -A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src - -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN - -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j ssr6_${rule}_forward - -A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j ssr6_${rule}_dst + -A ssr6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN + -A ssr6_${rule}_src -m set --match-set ss_rules6_src_forward src -j ssr6_${rule}_forward + -A ssr6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j ssr6_${rule}_dst -A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j ssr6_${rule}_forward + -A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j ssr6_${rule}_forward $recentrst_addset_rules -A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/etc/init.d/v2ray b/v2ray-core/files/etc/init.d/v2ray index d7d25942d..34acc668b 100755 --- a/v2ray-core/files/etc/init.d/v2ray +++ b/v2ray-core/files/etc/init.d/v2ray @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # # Copyright 2019-2020 Xingwang Liao -# Copyright 2020-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter # Licensed to the public under the MIT License. # diff --git a/v2ray-core/files/usr/bin/v2ray-rules b/v2ray-core/files/usr/bin/v2ray-rules index 98978f12e..2d6642274 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules +++ b/v2ray-core/files/usr/bin/v2ray-rules @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # The design idea was derived from ss-rules by Jian Chang # @@ -125,28 +125,28 @@ v2r_rules_flush() { iptables-save --counters | grep -v v2r_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip route flush table 100 || true - for setname in $(ipset -n list | grep "ssr_${rule}"); do + for setname in $(ipset -n list | grep "ss_rules_"); do ipset destroy "$setname" 2>/dev/null || true done } v2r_rules_ipset_init() { ipset --exist restore <<-EOF - create ssr_${rule}_src_bypass hash:net hashsize 64 - create ssr_${rule}_src_forward hash:net hashsize 64 - create ssr_${rule}_src_checkdst hash:net hashsize 64 + create ss_rules_src_bypass hash:net hashsize 64 + create ss_rules_src_forward hash:net hashsize 64 + create ss_rules_src_checkdst hash:net hashsize 64 create ss_rules_dst_bypass_all hash:net hashsize 64 - create ssr_${rule}_dst_bypass hash:net hashsize 64 - create ssr_${rule}_dst_bypass_ hash:net hashsize 64 - create ssr_${rule}_dst_forward hash:net hashsize 64 + create ss_rules_dst_bypass hash:net hashsize 64 + create ss_rules_dst_bypass_ hash:net hashsize 64 + create ss_rules_dst_forward hash:net hashsize 64 create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600 - $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2r_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all") - $(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") - $(v2r_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass") - $(v2r_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward") - $(v2r_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst") - $(v2r_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") + $(v2r_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass") + $(v2r_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward") + $(v2r_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst") + $(v2r_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')") EOF } @@ -192,9 +192,9 @@ v2r_rules_iptchains_init_tcp() { *nat :v2r_${rule}_local_out - -I OUTPUT 1 -p tcp -j v2r_${rule}_local_out - -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN + -A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN -A v2r_${rule}_local_out -m mark --mark 0x539 -j RETURN -A v2r_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default" COMMIT @@ -250,19 +250,19 @@ v2r_rules_iptchains_init_() { :v2r_${rule}_dst - :v2r_${rule}_forward - $(v2r_rules_iptchains_mkprerules "$proto") - -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539 -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -m mark --mark 0x539 -j RETURN -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN - -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN + -A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN -A v2r_${rule}_pre_src -p $proto $o_ipt_extra -j v2r_${rule}_src - -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN - -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j v2r_${rule}_forward - -A v2r_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j v2r_${rule}_dst + -A v2r_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN + -A v2r_${rule}_src -m set --match-set ss_rules_src_forward src -j v2r_${rule}_forward + -A v2r_${rule}_src -m set --match-set ss_rules_src_checkdst src -j v2r_${rule}_dst -A v2r_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j v2r_${rule}_forward + -A v2r_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j v2r_${rule}_forward $recentrst_addset_rules -A v2r_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules diff --git a/v2ray-core/files/usr/bin/v2ray-rules6 b/v2ray-core/files/usr/bin/v2ray-rules6 index 5e1714110..14f51e5dd 100755 --- a/v2ray-core/files/usr/bin/v2ray-rules6 +++ b/v2ray-core/files/usr/bin/v2ray-rules6 @@ -1,7 +1,7 @@ #!/bin/sh -e # # Copyright (C) 2017 Yousong Zhou -# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) # # The design idea was derived from ss-rules by Jian Chang # @@ -108,28 +108,28 @@ v2ray_rules6_flush() { ip6tables-save --counters | grep -v v2r6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done ip -f inet6 route flush table 100 || true - for setname in $(ipset -n list | grep "ssr6_${rule}"); do + for setname in $(ipset -n list | grep "ss_rules6_"); do ipset destroy "$setname" 2>/dev/null || true done } v2ray_rules6_ipset_init() { ipset --exist restore <<-EOF - create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64 - create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64 - create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64 + create ss_rules6_src_bypass hash:net family inet6 hashsize 64 + create ss_rules6_src_forward hash:net family inet6 hashsize 64 + create ss_rules6_src_checkdst hash:net family inet6 hashsize 64 + create ss_rules6_dst_bypass hash:net family inet6 hashsize 64 create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64 - create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64 + create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64 + create ss_rules6_dst_forward hash:net family inet6 hashsize 64 create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600 - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") + $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers") $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass") - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward") - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst") - $(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") + $(v2ray_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass") + $(v2ray_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward") + $(v2ray_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst") + $(v2ray_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')") EOF } @@ -240,20 +240,20 @@ v2ray_rules6_iptchains_init_() { :v2r6_${rule}_forward - $(v2ray_rules6_iptchains_mkprerules "udp") $(v2ray_rules6_iptchains_mkprerules "tcp") - -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539 -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN - -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN + -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN -A v2r6_${rule}_pre_src -p tcp $o_ipt_extra -j v2r6_${rule}_src -A v2r6_${rule}_pre_src -p udp $o_ipt_extra -j v2r6_${rule}_src - -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN - -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j v2r6_${rule}_forward - -A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j v2r6_${rule}_dst + -A v2r6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN + -A v2r6_${rule}_src -m set --match-set ss_rules6_src_forward src -j v2r6_${rule}_forward + -A v2r6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j v2r6_${rule}_dst -A v2r6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default" - -A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j v2r6_${rule}_forward + -A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j v2r6_${rule}_forward $recentrst_addset_rules -A v2r6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default" $forward_rules