From d6c486408662a597300c7498f9e7efb197edce10 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 22 Dec 2020 14:12:01 +0100 Subject: [PATCH 1/8] 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 2/8] 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 3/8] 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 4/8] 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 5/8] 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 6/8] 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 7/8] 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 8/8] 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