From 3b0f43fbf3e5c341ddfddfab081f8ff96fbd78de Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 29 Jan 2021 17:28:57 +0100 Subject: [PATCH 1/6] 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 2/6] 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 3/6] 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 4/6] 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 5/6] 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 6/6] 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(); }