From 48e81ff30e4dea58271a51b7ca5455f87d007574 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Thu, 2 Aug 2018 09:39:43 +0200 Subject: [PATCH] Add SQM support --- .../luasrc/controller/openmptcprouter.lua | 28 +++++++++++++--- .../luasrc/view/openmptcprouter/wizard.htm | 26 +++++++++++++++ openmptcprouter-full/Makefile | 2 +- openmptcprouter/Makefile | 2 +- .../files/etc/uci-defaults/2040-omr-sqm | 33 +++++++++++++++++++ 5 files changed, 84 insertions(+), 7 deletions(-) create mode 100755 openmptcprouter/files/etc/uci-defaults/2040-omr-sqm diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index ffc6d6614..6083efda8 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -75,7 +75,19 @@ function wizard_add() ucic:set("network",intf,"ipaddr",ipaddr) ucic:set("network",intf,"netmask",netmask) ucic:set("network",intf,"gateway",gateway) + + local downloadspeed = luci.http.formvalue("cbid.sqm.%s.download" % intf) or "" + local uploadspeed = luci.http.formvalue("cbid.sqm.%s.upload" % intf) or "" + if downloadspeed ~= "" and uploadspeed ~= "" then + ucic:set("sqm",intf,"download",downloadspeed) + ucic:set("sqm",intf,"upload",uploadspeed) + ucic:set("sqm",intf,"enabled","1") + else + ucic:set("sqm",intf,"enabled","0") + end end + ucic:save("sqm") + ucic:commit("sqm") ucic:save("network") ucic:commit("network") @@ -172,7 +184,7 @@ function wizard_add() local shadowsocks_key = luci.http.formvalue("shadowsocks_key") if shadowsocks_key ~= "" then ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key) - ucic:set("shadowsocks-libev","sss0","method","aes-256-cfb") + ucic:set("shadowsocks-libev","sss0","method","chacha20") ucic:set("shadowsocks-libev","sss0","server_port","65101") ucic:set("shadowsocks-libev","sss0","disabled",0) ucic:save("shadowsocks-libev") @@ -581,11 +593,15 @@ function interfaces_status() local connectivity if ifname ~= "" and ifname ~= nil then - local multipath_state = ut.trim(sys.exec("multipath " .. ifname .. " | grep deactivated")) - if multipath_state == "" then - connectivity = 'OK' + if fs.access("/sys/class/net/" .. ifname) then + local multipath_state = ut.trim(sys.exec("multipath " .. ifname .. " | grep deactivated")) + if multipath_state == "" then + connectivity = 'OK' + else + connectivity = 'ERROR' + end else - connectivity = 'ERROR' + connectivity = 'ERROR' end end @@ -639,6 +655,8 @@ function interfaces_status() multipath_available = 'ERROR' if mArray.openmptcprouter["socks_service"] == true and connectivity == "OK" then connectivity = 'ERROR' + elseif connectivity == "OK" then + connectivity = 'WARNING' end end else diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index 6c350168f..aad0250ff 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -156,6 +156,32 @@ + <% + if nixio.fs.access("/etc/init.d/sqm") then + %> +
+ +
+ " data-type="uinteger"> +
+
+ <%:Set value between 80-95% of max download speed link. Used for SQM. Empty to disable.%> +
+
+
+
+ +
+ " data-type="uinteger"> +
+
+ <%:Set value between 80-95% of max upload speed link. Used for SQM. Empty to disable.%> +
+
+
+ <% + end + %> <% end diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index af2193b0b..162c615a6 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -33,7 +33,7 @@ MY_DEPENDS := \ ca-bundle ca-certificates libustream-openssl \ luci-mod-admin-full luci-app-firewall luci-app-glorytun luci-app-shadowsocks-libev luci-app-unbound luci-theme-openmptcprouter luci-base \ luci-app-nginx-ha luci-app-omr-tracker \ - luci-app-qos \ + luci-app-sqm \ luci-app-vnstat omr-quota luci-app-omr-quota \ luci-app-mptcp luci-app-openmptcprouter luci-app-omr-bypass \ omr-6in4 ip6tables-mod-nat luci-proto-ipv6 6to4 6in4 6rd iputils-traceroute6 \ diff --git a/openmptcprouter/Makefile b/openmptcprouter/Makefile index 13dd412a7..b109dd690 100644 --- a/openmptcprouter/Makefile +++ b/openmptcprouter/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=openmptcprouter -PKG_VERSION:=0.92 +PKG_VERSION:=0.94 PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk diff --git a/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm b/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm new file mode 100755 index 000000000..17779cfe7 --- /dev/null +++ b/openmptcprouter/files/etc/uci-defaults/2040-omr-sqm @@ -0,0 +1,33 @@ +#!/bin/sh + +if [ "$(uci -q get sqm.wan1)" = "" ]; then + uci -q batch <<-EOF >/dev/null + delete sqm.eth1 + set sqm.wan1=queue + set sqm.wan1.qdisc="fq_codel" + set sqm.wan1.script="simple.qos" + set sqm.wan1.qdisc_advanced='0' + set sqm.wan1.linklayer='none' + set sqm.wan1.enabled='0' + set sqm.wan1.interface='wan1' + set sqm.wan1.download='' + set sqm.wan1.upload='' + set sqm.wan1.debug_logging='0' + set sqm.wan1.verbosity='5' + set sqm.wan2=queue + set sqm.wan2.qdisc="fq_codel" + set sqm.wan2.script="simple.qos" + set sqm.wan2.qdisc_advanced='0' + set sqm.wan2.linklayer='none' + set sqm.wan2.enabled='0' + set sqm.wan2.interface='wan2' + set sqm.wan2.download='' + set sqm.wan2.upload='' + set sqm.wan2.debug_logging='0' + set sqm.wan2.verbosity='5' + commit sqm + EOF +fi +rm -f /tmp/luci-indexcache + +exit 0