From d05161e2a3a0869df651489d1f71751418ba27f7 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Tue, 29 Jun 2021 22:32:29 +0800 Subject: [PATCH] luci-app-turboacc: add the new offloading controller (#7223) The new LuCI controller rewritten by Tianling, based on the previous version of luci-app-flowoffload written by Lean and modified by ntlf9t. This app merged flow offloading and shortcut-fe support into a single package, and you can switch to each of them easily without conflicts or rebooting. Also adapted the Qualcomm QCA NSS ECM driver (controlling is not supported yet). For DNS caching, the new promgrams dnsforwarder and dnsproxy were supported, the latter one supports more advanced procotols like DoT, DoH, and QUIC. It is useful for users whose ISP hijacked their DNS requests. Re-licensed under GPL-3.0-only. Signed-off-by: Tianling Shen --- package/lean/dnsforwarder/Makefile | 46 ++- .../files/etc/init.d/dnsforwarder | 50 +-- .../files/usr/share/dnsforwarder/gfwlist.sh | 0 package/lean/dnsproxy/Makefile | 74 ++++ package/lean/luci-app-flowoffload/Makefile | 16 - .../luasrc/controller/flowoffload.lua | 38 -- .../luasrc/model/cbi/flowoffload.lua | 39 -- .../luasrc/view/flow/status.htm | 24 -- .../po/zh-cn/flowoffload.po | 44 --- .../root/etc/config/flowoffload | 8 - .../root/etc/init.d/flowoffload | 201 ----------- .../root/etc/uci-defaults/luci-flowoffload | 13 - package/lean/luci-app-sfe/Makefile | 17 - .../luci-app-sfe/luasrc/controller/sfe.lua | 36 -- .../luci-app-sfe/luasrc/model/cbi/sfe.lua | 47 --- .../luci-app-sfe/luasrc/view/sfe/status.htm | 24 -- package/lean/luci-app-sfe/po/zh-cn/sfe.po | 56 --- package/lean/luci-app-sfe/root/etc/config/sfe | 9 - package/lean/luci-app-sfe/root/etc/init.d/sfe | 209 ----------- .../root/etc/uci-defaults/luci-sfe | 14 - .../root/usr/share/dnscache-watchdog.sh | 9 - package/lean/luci-app-turboacc/Makefile | 55 +++ .../luasrc/controller/turboacc.lua | 39 ++ .../luasrc/model/cbi/turboacc.lua | 79 ++++ .../luasrc/view/turboacc/status.htm | 25 ++ .../luci-app-turboacc/po/zh-cn/turboacc.po | 99 +++++ .../root/etc/config/turboacc | 12 + .../root/etc/init.d/turboacc | 339 ++++++++++++++++++ .../root/etc/uci-defaults/turboacc | 10 + .../root/usr/share/dnscache/dnscache-while.sh | 38 ++ 30 files changed, 827 insertions(+), 843 deletions(-) mode change 100644 => 100755 package/lean/dnsforwarder/files/etc/init.d/dnsforwarder mode change 100644 => 100755 package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh create mode 100644 package/lean/dnsproxy/Makefile delete mode 100644 package/lean/luci-app-flowoffload/Makefile delete mode 100644 package/lean/luci-app-flowoffload/luasrc/controller/flowoffload.lua delete mode 100644 package/lean/luci-app-flowoffload/luasrc/model/cbi/flowoffload.lua delete mode 100644 package/lean/luci-app-flowoffload/luasrc/view/flow/status.htm delete mode 100644 package/lean/luci-app-flowoffload/po/zh-cn/flowoffload.po delete mode 100644 package/lean/luci-app-flowoffload/root/etc/config/flowoffload delete mode 100755 package/lean/luci-app-flowoffload/root/etc/init.d/flowoffload delete mode 100755 package/lean/luci-app-flowoffload/root/etc/uci-defaults/luci-flowoffload delete mode 100644 package/lean/luci-app-sfe/Makefile delete mode 100644 package/lean/luci-app-sfe/luasrc/controller/sfe.lua delete mode 100644 package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua delete mode 100644 package/lean/luci-app-sfe/luasrc/view/sfe/status.htm delete mode 100644 package/lean/luci-app-sfe/po/zh-cn/sfe.po delete mode 100644 package/lean/luci-app-sfe/root/etc/config/sfe delete mode 100755 package/lean/luci-app-sfe/root/etc/init.d/sfe delete mode 100755 package/lean/luci-app-sfe/root/etc/uci-defaults/luci-sfe delete mode 100755 package/lean/luci-app-sfe/root/usr/share/dnscache-watchdog.sh create mode 100644 package/lean/luci-app-turboacc/Makefile create mode 100644 package/lean/luci-app-turboacc/luasrc/controller/turboacc.lua create mode 100644 package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua create mode 100644 package/lean/luci-app-turboacc/luasrc/view/turboacc/status.htm create mode 100644 package/lean/luci-app-turboacc/po/zh-cn/turboacc.po create mode 100644 package/lean/luci-app-turboacc/root/etc/config/turboacc create mode 100755 package/lean/luci-app-turboacc/root/etc/init.d/turboacc create mode 100755 package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc create mode 100755 package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh diff --git a/package/lean/dnsforwarder/Makefile b/package/lean/dnsforwarder/Makefile index 973f7eac7..05e7370a0 100644 --- a/package/lean/dnsforwarder/Makefile +++ b/package/lean/dnsforwarder/Makefile @@ -1,45 +1,61 @@ +# +# Copyright (C) 2021 ImmortalWrt +# +# +# This is free software, licensed under the GNU General Public License v3. +# See /LICENSE for more information. +# + include $(TOPDIR)/rules.mk PKG_NAME:=dnsforwarder PKG_VERSION:=6.1.15 -PKG_RELEASE:=10 +PKG_RELEASE:=11 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/1715173329/dnsforwarder.git -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_DATE:=2018-06-26 PKG_SOURCE_VERSION:=587e61ae4d75dc976f538088b715a3c8ee26c144 -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) -PKG_MAINTAINER:=Dennis +PKG_MIRROR_HASH:=7c141040ae384d254d90b3c3ee502d87330c9fdcd201ff29a669336a27b176d4 + PKG_LICENSE:=GPL-3.0 +PKG_LICENSE_FILE:=LICENSE +PKG_MAINTAINER:=Dennis + +PKG_FIXUP:=autoreconf +PKG_BUILD_PARALLEL:=1 +PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk -define Package/$(PKG_NAME) +define Package/dnsforwarder SECTION:=net CATEGORY:=Network TITLE:=A simple DNS forwarder URL:=https://github.com/holmium/dnsforwarder - DEPENDS:=+wget +dnsmasq-full +libpthread +coreutils-base64 + DEPENDS:=+coreutils +coreutils-base64 +dnsmasq-full +libpthread +wget-ssl endef -define Package/$(PKG_NAME)/description -Forwarding queries to customized domains (and their subdomains) to specified servers over a specified protocol (UDP or TCP). non-standard ports are supported. +define Package/dnsforwarder/description + Forwarding queries to customized domains (and their subdomains) to specified servers + over a specified protocol (UDP or TCP). non-standard ports are supported. endef -CONFIGURE_ARGS += --enable-downloader=wget +CONFIGURE_ARGS+= --enable-downloader=wget -define Package/$(PKG_NAME)/install +define Package/dnsforwarder/install $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/dnsforwarder $(1)/usr/bin/dnsforwarder - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) files/etc/init.d/dnsforwarder $(1)/etc/init.d/dnsforwarder + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dnsforwarder $(1)/usr/bin/dnsforwarder + $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) files/etc/config/dnsforwarder $(1)/etc/config/dnsforwarder + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) files/etc/init.d/dnsforwarder $(1)/etc/init.d/dnsforwarder + $(INSTALL_DIR) $(1)/etc/dnsforwarder $(INSTALL_CONF) files/etc/dnsforwarder/gfw.txt $(1)/etc/dnsforwarder/gfw.txt $(INSTALL_DIR) $(1)/usr/share/dnsforwarder $(INSTALL_BIN) files/usr/share/dnsforwarder/gfwlist.sh $(1)/usr/share/dnsforwarder/gfwlist.sh endef -$(eval $(call BuildPackage,$(PKG_NAME))) +$(eval $(call BuildPackage,dnsforwarder)) diff --git a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder b/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder old mode 100644 new mode 100755 index 6fc34b0b7..7ae961203 --- a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder +++ b/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder @@ -2,6 +2,10 @@ START=60 +extra_command "makeconfig" +extra_command "makegfwlist" +extra_command "health" + CRON_FILE=/etc/crontabs/root PID_PATH=/var/run/dnsforwarder PID_FILE=${PID_PATH}/dns.pid @@ -21,11 +25,11 @@ del_cron() /etc/init.d/cron restart } -fixflowoffload(){ - dns=$(uci get flowoffload.@flow[0].dns 2>/dev/null) +fixturboacc(){ + dns=$(uci get turboacc.config.dns_caching 2>/dev/null) if [ $dns -eq 1 ]; then - uci set flowoffload.@flow[0].dns=0 && uci commit flowoffload - /etc/init.d/flowoffload restart + uci set turboacc.config.dns_caching=0 && uci commit turboacc + /etc/init.d/turboacc restart fi } @@ -51,7 +55,7 @@ health(){ } -makegfwlist(){ +makegfwlist(){ local GFW_FILE='/etc/dnsforwarder/gfw.txt' local GFW_TMP_FILE='/tmp/dnsforwarder-gfw.old' local TSTIME=`date '+%Y-%m-%d %H:%M:%S'` @@ -62,7 +66,7 @@ makegfwlist(){ sort /tmp/edf.ts | uniq > /tmp/edf.ts /usr/share/dnsforwarder/gfwlist.sh -i -l -o /tmp/dnsforwarder-gfw.tmp --extra-domain-file /tmp/edf.ts if [ $? != 0 ]; then - echo 'Failed to fetch gfwlist' + echo 'Failed to fetch gfwlist' logger -t Failed to fetch gfwlist return 2 fi @@ -79,7 +83,7 @@ makegfwlist(){ cp ${GFW_TMP_FILE} ${GFW_FILE} sed -i "s/TS_BUILD_TIME/${TSTIME}/g" ${GFW_FILE} printf "[\e[33m%s\e[0m]" "PID" - restart + restart fi } @@ -88,7 +92,7 @@ makeconfig () { local log=$(uci get dnsforwarder.@config[0].log 2>/dev/null) local log_size=$(uci get dnsforwarder.@config[0].log_size 2>/dev/null) - + local gfw=$(uci get dnsforwarder.@config[0].gfw 2>/dev/null) local udp_local=$(uci -d ',' get dnsforwarder.@config[0].udp_local 2>/dev/null) @@ -105,8 +109,8 @@ makeconfig () { local cache=$(uci get dnsforwarder.@config[0].cache 2>/dev/null) local cache_size=$(uci get dnsforwarder.@config[0].cache_size 2>/dev/null) local cache_ignore=$(uci get dnsforwarder.@config[0].cache_ignore 2>/dev/null) - local cache_control=$(uci get dnsforwarder.@config[0].cache_control 2>/dev/null) - + local cache_control=$(uci get dnsforwarder.@config[0].cache_control 2>/dev/null) + local domain_statistic=$(uci get dnsforwarder.@config[0].domain_statistic 2>/dev/null) local udp_local_addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null) udp_local_addr=${udp_local_addr/:/#} @@ -118,7 +122,7 @@ makeconfig () { echo "LogFileThresholdLength ${log_size}" >> $DNSFORWARDER_CONF echo "LogFileFolder /var/log" >> $DNSFORWARDER_CONF fi - + [ -n "$udp_local" ] && echo "UDPLocal ${udp_local}" >> $DNSFORWARDER_CONF [ -n "$udp_local_addr" ] && eval "makelist 'server=' $udp_local_addr" > /tmp/dnsmasq.dnsforwarder.conf sed -i "s/ //g" /tmp/dnsmasq.dnsforwarder.conf @@ -126,7 +130,7 @@ makeconfig () { eval "makelist 'TCPGroup' $tcp_group" >> $DNSFORWARDER_CONF eval "makelist 'UDPGroup' $udp_group" >> $DNSFORWARDER_CONF eval "makelist 'GroupFile' $group_file" >> $DNSFORWARDER_CONF - + if [ $gfw = "true" ]; then echo 'GroupFile /etc/dnsforwarder/gfw.txt' >> $DNSFORWARDER_CONF fi @@ -136,14 +140,14 @@ makeconfig () { echo "BlockNegativeResponse ${block_negative_resp}" >> $DNSFORWARDER_CONF eval "makelist 'AppendHosts' $append_host" >> $DNSFORWARDER_CONF echo "BlockIpv6WhenIpv4Exists ${block_ipv6}" >> $DNSFORWARDER_CONF - + echo "UseCache ${cache}" >> $DNSFORWARDER_CONF if [ $cache = "true" ]; then echo "CacheSize ${cache_size}" >> $DNSFORWARDER_CONF echo "MemoryCache false" >> $DNSFORWARDER_CONF echo "CacheFile /tmp/dnsforwarder.cache" >> $DNSFORWARDER_CONF echo "IgnoreTTL ${cache_ignore}" >> $DNSFORWARDER_CONF - eval "makelist 'CacheControl' $cache_control" >> $DNSFORWARDER_CONF + eval "makelist 'CacheControl' $cache_control" >> $DNSFORWARDER_CONF echo "ReloadCache true" >> $DNSFORWARDER_CONF echo "OverwriteCache true" >> $DNSFORWARDER_CONF fi @@ -168,9 +172,9 @@ start() if [ $vt_enabled = 0 ]; then echo dnsforwarder is not enabled exit - fi + fi makeconfig - fixflowoffload + fixturboacc dnsforwarder -f $DNSFORWARDER_CONF -d sleep 10 mkdir -p ${PID_PATH} @@ -182,14 +186,14 @@ start() local dnsmasq=$(uci get dnsforwarder.@arguments[0].dnsmasq 2>/dev/null) local addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null) [ -n "${addr}" ] && addr=${addr/:/#} - + if [ "${dnsmasq}" = "1" ]; then uci delete dhcp.@dnsmasq[0].server 2>/dev/null # uci add_list dhcp.@dnsmasq[0].server=$addr uci delete dhcp.@dnsmasq[0].resolvfile 2>/dev/null uci set dhcp.@dnsmasq[0].noresolv=1 uci set dhcp.@dnsmasq[0].serversfile=/tmp/dnsmasq.dnsforwarder.conf - uci commit dhcp + uci commit dhcp /etc/init.d/dnsmasq restart fi local dnsmasq_server_addr=$(uci get dhcp.@dnsmasq[0].server 2>/dev/null) @@ -214,7 +218,7 @@ stop() uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto 2>/dev/null uci delete dhcp.@dnsmasq[0].noresolv 2>/dev/null uci delete dhcp.@dnsmasq[0].serversfile 2>/dev/null - uci commit dhcp + uci commit dhcp /etc/init.d/dnsmasq restart [ -e ${PID_FILE} ] && { pid=$(cat ${PID_FILE}) @@ -236,18 +240,18 @@ restart() logger -t There is dnsforwarder pid ${pid} stop } || { - logger -t Dnsforwarder is not running + logger -t Dnsforwarder is not running } sleep 7 local vt_enabled=$(uci get dnsforwarder.@arguments[0].enabled 2>/dev/null) - echo dnsforwarder status is ${vt_enabled} + echo dnsforwarder status is ${vt_enabled} logger -t Dnsforwarder is initializing enabled is ${vt_enabled} if [ ${vt_enabled} = 1 ]; then [ -n "$pid" ] && { logger -t There is dnsforwarder pid ${pid} stop } || { - logger -t Dnsforwarder is not running + logger -t Dnsforwarder is not running } logger -t Restarting dnsforwarder @@ -256,5 +260,3 @@ restart() /etc/init.d/dnsforwarder disable fi } - -EXTRA_COMMANDS="makeconfig makegfwlist health" diff --git a/package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh b/package/lean/dnsforwarder/files/usr/share/dnsforwarder/gfwlist.sh old mode 100644 new mode 100755 diff --git a/package/lean/dnsproxy/Makefile b/package/lean/dnsproxy/Makefile new file mode 100644 index 000000000..7222efba3 --- /dev/null +++ b/package/lean/dnsproxy/Makefile @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: GPL-3.0-only +# +# Copyright (C) 2021 ImmortalWrt.org + +include $(TOPDIR)/rules.mk + +PKG_NAME:=dnsproxy +PKG_VERSION:=0.38.1 +PKG_RELEASE:=$(AUTORELESE) + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/dnsproxy/tar.gz/v$(PKG_VERSION)? +PKG_HASH:=9a538d0d2e5f60234187c1e6092deb6c522aeb87c644d55c3cf8f38d384cd4f7 + +PKG_MAINTAINER:=Tianling Shen +PKG_LICENSE:=Apache-2.0 +PKG_LICENSE_FILES:=LICENSE + +PKG_CONFIG_DEPENDS:= \ + CONFIG_DNSPROXY_COMPRESS_GOPROXY \ + CONFIG_DNSPROXY_COMPRESS_UPX + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/AdguardTeam/dnsproxy +GO_PKG_LDFLAGS:=-s -w +GO_PKG_LDFLAGS_X:=main.VersionString=v$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include ../../lang/golang/golang-package.mk + +define Package/dnsproxy/config +config DNSPROXY_COMPRESS_GOPROXY + bool "Compiling with GOPROXY proxy" + default n + +config DNSPROXY_COMPRESS_UPX + bool "Compress executable files with UPX" + default y +endef + +ifeq ($(CONFIG_DNSPROXY_COMPRESS_GOPROXY),y) + export GO111MODULE=on + export GOPROXY=https://goproxy.baidu.com +endif + +define Package/dnsproxy + SECTION:=net + CATEGORY:=Network + SUBMENU:=IP Addresses and Names + TITLE:=Simple DNS proxy with DoH, DoT, DoQ and DNSCrypt support + URL:=https://github.com/github.com/AdguardTeam/dnsproxy + DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +endef + +define Package/dnsproxy/description + A simple DNS proxy server that supports all existing DNS protocols including + DNS-over-TLS, DNS-over-HTTPS, DNSCrypt, and DNS-over-QUIC.Moreover, it can + work as a DNS-over-HTTPS, DNS-over-TLS or DNS-over-QUIC server. +endef + +GO_PKG_INSTALL_ARGS+= -mod vendor + +define Build/Compile + $(call GoPackage/Build/Compile) +ifeq ($(CONFIG_DNSPROXY_COMPRESS_UPX),y) + $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/dnsproxy +endif +endef + +$(eval $(call GoBinPackage,dnsproxy)) +$(eval $(call BuildPackage,dnsproxy)) diff --git a/package/lean/luci-app-flowoffload/Makefile b/package/lean/luci-app-flowoffload/Makefile deleted file mode 100644 index 35db6b6ba..000000000 --- a/package/lean/luci-app-flowoffload/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2016 Openwrt.org -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for Flow Offload -LUCI_DEPENDS:=+kmod-ipt-offload +pdnsd-alt +kmod-tcp-bbr -LUCI_PKGARCH:=all -PKG_VERSION:=1.0 -PKG_RELEASE:=21 - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/lean/luci-app-flowoffload/luasrc/controller/flowoffload.lua b/package/lean/luci-app-flowoffload/luasrc/controller/flowoffload.lua deleted file mode 100644 index b59d9509e..000000000 --- a/package/lean/luci-app-flowoffload/luasrc/controller/flowoffload.lua +++ /dev/null @@ -1,38 +0,0 @@ -module("luci.controller.flowoffload", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/flowoffload") then - return - end - - entry({"admin", "network", "flowoffload"}, cbi("flowoffload"), _("Turbo ACC Center"), 1001).dependent = true - entry({"admin", "network", "flowoffload", "status"}, call("action_status")) -end - -local function is_running() - return luci.sys.call("[ `cat /sys/module/xt_FLOWOFFLOAD/refcnt 2>/dev/null` -gt 0 ] 2>/dev/null") == 0 -end - -local function is_bbr() - return luci.sys.call("[ `cat /proc/sys/net/ipv4/tcp_congestion_control 2>/dev/null` = bbr ] 2>/dev/null") == 0 -end - -local function is_fullcone() - return luci.sys.call("[ `cat /sys/module/xt_FULLCONENAT/refcnt 2>/dev/null` -gt 0 ] 2>/dev/null") == 0 -end - -local function is_dns() - return luci.sys.call("pgrep dnscache >/dev/null") == 0 -end - -function action_status() - luci.http.prepare_content("application/json") - luci.http.write_json({ - run_state = is_running(), - down_state = is_bbr(), - up_state = is_fullcone(), - dns_state = is_dns() - }) -end - - diff --git a/package/lean/luci-app-flowoffload/luasrc/model/cbi/flowoffload.lua b/package/lean/luci-app-flowoffload/luasrc/model/cbi/flowoffload.lua deleted file mode 100644 index 81eff5d40..000000000 --- a/package/lean/luci-app-flowoffload/luasrc/model/cbi/flowoffload.lua +++ /dev/null @@ -1,39 +0,0 @@ -local m,s,o -local SYS = require "luci.sys" - -m = Map("flowoffload") -m.title = translate("Turbo ACC Acceleration Settings") -m.description = translate("Opensource Linux Flow Offload driver (Fast Path or HWNAT)") -m:append(Template("flow/status")) - -s = m:section(TypedSection, "flow") -s.addremove = false -s.anonymous = true - -flow = s:option(Flag, "flow_offloading", translate("Enable")) -flow.default = 0 -flow.rmempty = false -flow.description = translate("Enable software flow offloading for connections. (decrease cpu load / increase routing throughput)") - -hw = s:option(Flag, "flow_offloading_hw", translate("HWNAT")) -hw.default = 0 -hw.rmempty = true -hw.description = translate("Enable Hardware NAT (depends on hw capability like MTK 762x)") -hw:depends("flow_offloading", 1) - -bbr = s:option(Flag, "bbr", translate("Enable BBR")) -bbr.default = 0 -bbr.rmempty = false -bbr.description = translate("Bottleneck Bandwidth and Round-trip propagation time (BBR)") - -dns = s:option(Flag, "dns", translate("DNS Acceleration")) -dns.default = 0 -dns.rmempty = false -dns.description = translate("Enable DNS Cache Acceleration and anti ISP DNS pollution") - -o = s:option(Value, "dns_server", translate("Upsteam DNS Server")) -o.default = "114.114.114.114,114.114.115.115" -o.description = translate("Muitiple DNS server can saperate with ','") -o:depends("dns", 1) - -return m diff --git a/package/lean/luci-app-flowoffload/luasrc/view/flow/status.htm b/package/lean/luci-app-flowoffload/luasrc/view/flow/status.htm deleted file mode 100644 index 43f3a02ae..000000000 --- a/package/lean/luci-app-flowoffload/luasrc/view/flow/status.htm +++ /dev/null @@ -1,24 +0,0 @@ -
- <%:Running Status%> - - - - - -
FLOW 加速状态<%:Collecting data...%>
BBR 加速<%:Collecting data...%>
FULLCONE NAT加速<%:Collecting data...%>
DNS 加速<%:Collecting data...%>
-
- - diff --git a/package/lean/luci-app-flowoffload/po/zh-cn/flowoffload.po b/package/lean/luci-app-flowoffload/po/zh-cn/flowoffload.po deleted file mode 100644 index 1d4d067ce..000000000 --- a/package/lean/luci-app-flowoffload/po/zh-cn/flowoffload.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "Flow Offload ACC" -msgstr "Flow Offload 转发加速" - -msgid "Running Status" -msgstr "运行状态" - -msgid "Turbo ACC Center" -msgstr "Turbo ACC 网络加速" - -msgid "Turbo ACC Acceleration Settings" -msgstr "Turbo ACC 网络加速设置" - -msgid "Linux Flow Offload Forwarding Engine Settings" -msgstr "Linux Flow Offload Forwarding 转发加速引擎设置" - -msgid "Opensource Linux Flow Offload driver (Fast Path or HWNAT)" -msgstr "开源 Linux Flow Offload 驱动 (支持 Fast Path 或者 HWNAT)" - -msgid "Enable" -msgstr "启用" - -msgid "Enable software flow offloading for connections. (decrease cpu load / increase routing throughput)" -msgstr "开启 Flow Offloading 转发加速. (降低CPU占用 / 增强路由转发性能,和多WAN或者QOS功能可能会冲突)" - -msgid "Enable Hardware NAT (depends on hw capability like MTK 762x)" -msgstr "启用硬件HWNAT加速(依赖特定的硬件,例如 MTK 762x 系列)" - -msgid "Enable BBR" -msgstr "启用 BBR" - -msgid "Bottleneck Bandwidth and Round-trip propagation time (BBR)" -msgstr "BBR拥塞控制算法可以加强TCP应用表现,但会降低路由器本机上的WIFI吞吐性能" - -msgid "DNS Acceleration" -msgstr "DNS 加速" - -msgid "Enable DNS Cache Acceleration and anti ISP DNS pollution" -msgstr "启用DNS多线程查询、缓存,并防止ISP的DNS广告和域名劫持" - -msgid "Upsteam DNS Server" -msgstr "上游 DNS 服务器(国内)" - -msgid "Muitiple DNS server can saperate with ','" -msgstr "支持多个上游DNS服务器,用','分隔(注意用英文逗号).请填写您最快的DNS服务器" diff --git a/package/lean/luci-app-flowoffload/root/etc/config/flowoffload b/package/lean/luci-app-flowoffload/root/etc/config/flowoffload deleted file mode 100644 index 19bd74222..000000000 --- a/package/lean/luci-app-flowoffload/root/etc/config/flowoffload +++ /dev/null @@ -1,8 +0,0 @@ - -config flow - option flow_offloading '1' - option flow_offloading_hw '0' - option dns '0' - option dns_server '114.114.114.114,114.114.115.115' - option bbr '0' - diff --git a/package/lean/luci-app-flowoffload/root/etc/init.d/flowoffload b/package/lean/luci-app-flowoffload/root/etc/init.d/flowoffload deleted file mode 100755 index fe9c4452a..000000000 --- a/package/lean/luci-app-flowoffload/root/etc/init.d/flowoffload +++ /dev/null @@ -1,201 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (c) 2011-2015 OpenWrt.org - -START=60 - -USE_PROCD=1 - -PDNSD_BIN="/var/sbin/dnscache" -DNSMASQ_RESTART=N -DNS_SERVER="114.114.114.114,114.114.115.115" - -pdnsd_genconfig() { - DNS_SERVER=$(uci get flowoffload.@flow[0].dns_server 2>/dev/null) - - [ -d /var/etc ] || mkdir -p /var/etc - - if [ ! -f /var/dnscache/pdnsd.cache ]; then - mkdir -p /var/dnscache - echo -ne "pd13\000\000\000\000" >/var/dnscache/pdnsd.cache - chown -R nobody.nogroup /var/dnscache - fi - - cat <<-EOF >/var/etc/dnscache.conf - global { - perm_cache=1024; # dns缓存大小,单位KB,建议不要写的太大 - cache_dir="/var/dnscache"; # 缓存文件的位置 - pid_file = /var/run/dnscache.pid; - run_as="nobody"; - server_ip = 0.0.0.0; # pdnsd监听的网卡,0.0.0.0是全部网卡 - server_port=5333; # pdnsd监听的端口,不要和别的服务冲突即可 - status_ctl = on; - paranoid=on; # 二次请求模式,如果请求主DNS服务器返回的是垃圾地址,就向备用服务器请求 - query_method=udp_only; - neg_domain_pol = off; - par_queries = 400; # 最多同时请求数 - min_ttl = 1h; # DNS结果最短缓存时间 - max_ttl = 1w; # DNS结果最长缓存时间 - timeout = 10; # DNS请求超时时间,单位秒 - } - - server { - label = "routine"; - ip = $DNS_SERVER; # 这里为主要上级 dns 的 ip 地址,建议填写一个当地最快的DNS地址 - timeout = 5; # DNS请求超时时间 - reject = 74.125.127.102, # 以下是脏IP,也就是DNS污染一般会返回的结果,如果收到如下DNS结果会触发二次请求(TCP协议一般不会碰到脏IP) - 74.125.155.102, - 74.125.39.102, - 74.125.39.113, - 209.85.229.138, - 128.121.126.139, - 159.106.121.75, - 169.132.13.103, - 192.67.198.6, - 202.106.1.2, - 202.181.7.85, - 203.161.230.171, - 203.98.7.65, - 207.12.88.98, - 208.56.31.43, - 209.145.54.50, - 209.220.30.174, - 209.36.73.33, - 211.94.66.147, - 213.169.251.35, - 216.221.188.182, - 216.234.179.13, - 243.185.187.39, - 37.61.54.158, - 4.36.66.178, - 46.82.174.68, - 59.24.3.173, - 64.33.88.161, - 64.33.99.47, - 64.66.163.251, - 65.104.202.252, - 65.160.219.113, - 66.45.252.237, - 69.55.52.253, - 72.14.205.104, - 72.14.205.99, - 78.16.49.15, - 8.7.198.45, - 93.46.8.89, - 37.61.54.158, - 243.185.187.39, - 190.93.247.4, - 190.93.246.4, - 190.93.245.4, - 190.93.244.4, - 65.49.2.178, - 189.163.17.5, - 23.89.5.60, - 49.2.123.56, - 54.76.135.1, - 77.4.7.92, - 118.5.49.6, - 159.24.3.173, - 188.5.4.96, - 197.4.4.12, - 220.250.64.24, - 243.185.187.30, - 249.129.46.48, - 253.157.14.165; - reject_policy = fail; - } - - server { - label = "special"; # 这个随便写 - ip = 208.67.222.222,208.67.220.220; # 这里为备用DNS服务器的 ip 地址 - port = 5353; # 推荐使用53以外的端口(DNS服务器必须支持) - proxy_only = on; - timeout = 5; - } - - source { - owner=localhost; - // serve_aliases=on; - file="/etc/hosts"; - } - - rr { - name=localhost; - reverse=on; - a=127.0.0.1; - owner=localhost; - soa=localhost,root.localhost,42,86400,900,86400,86400; - } - EOF - - [ -d /var/sbin ] || mkdir -p /var/sbin - [ -f /var/sbin/dnscache ] || ln -s /usr/sbin/pdnsd /var/sbin/dnscache - echo "Start DNS Cache" -} - -stop_pdnsd() { - kill $(pidof dnscache) >/dev/null 2>&1 || kill -9 $(ps | grep dnscache | grep -v grep | awk '{print $1}') >/dev/null 2>&1 - echo "Stop DNS Cache" -} - -change_dns() { - uci delete dhcp.@dnsmasq[0].server >/dev/null 2>&1 - uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 - uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto - uci set dhcp.@dnsmasq[0].noresolv=0 - uci commit dhcp -} - -revert_dns() { - uci del_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 >/dev/null 2>&1 - uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto - uci set dhcp.@dnsmasq[0].noresolv=0 - uci commit dhcp -} - -start_service() { - dns=$(uci get flowoffload.@flow[0].dns 2>/dev/null) - bbr=$(uci get flowoffload.@flow[0].bbr 2>/dev/null) - if [ $dns -eq 1 ]; then - pdnsd_genconfig - procd_open_instance - procd_set_param command "$PDNSD_BIN" -c /var/etc/dnscache.conf - procd_set_param respawn - procd_set_param stderr 1 - procd_close_instance - change_dns - else - revert_dns - fi - if [ $bbr -eq 1 ]; then - sysctl -w net.ipv4.tcp_congestion_control=bbr - else - sysctl -w net.ipv4.tcp_congestion_control=cubic - fi - uci set firewall.@defaults[0].flow_offloading=$(uci get flowoffload.@flow[0].flow_offloading) - uci set firewall.@defaults[0].flow_offloading_hw=$(uci get flowoffload.@flow[0].flow_offloading_hw) - uci commit firewall - if [ "$DNSMASQ_RESTART" = N ]; then - /etc/init.d/dnsmasq restart && echo "DNSMASQ change" - /etc/init.d/firewall restart >/dev/null 2>&1 - fi -} - -stop_service() { - dns=$(uci get firewall.@defaults[0].dns 2>/dev/null) - revert_dns - uci set firewall.@defaults[0].flow_offloading=$(uci get flowoffload.@flow[0].flow_offloading) - uci set firewall.@defaults[0].flow_offloading_hw=$(uci get flowoffload.@flow[0].flow_offloading_hw) - uci commit firewall - if [ "$DNSMASQ_RESTART" = N ]; then - /etc/init.d/dnsmasq restart && echo "DNSMASQ revert" - /etc/init.d/firewall restart >/dev/null 2>&1 - fi -} - -restart() { - DNSMASQ_RESTART=Y - stop - start - /etc/init.d/dnsmasq restart && echo "DNSMASQ restart" - /etc/init.d/firewall restart >/dev/null 2>&1 -} diff --git a/package/lean/luci-app-flowoffload/root/etc/uci-defaults/luci-flowoffload b/package/lean/luci-app-flowoffload/root/etc/uci-defaults/luci-flowoffload deleted file mode 100755 index 246bccfec..000000000 --- a/package/lean/luci-app-flowoffload/root/etc/uci-defaults/luci-flowoffload +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -uci set firewall.@defaults[0].flow_offloading=1 -uci commit firewall - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@flowoffload[-1] - add ucitrack flowoffload - set ucitrack.@flowoffload[-1].init=flowoffload - commit ucitrack -EOF - -exit 0 diff --git a/package/lean/luci-app-sfe/Makefile b/package/lean/luci-app-sfe/Makefile deleted file mode 100644 index 7320a8366..000000000 --- a/package/lean/luci-app-sfe/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2016 Openwrt.org -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for Turbo ACC (SFE) -LUCI_DEPENDS:=+kmod-fast-classifier +pdnsd-alt +kmod-tcp-bbr -LUCI_PKGARCH:=all -PKG_VERSION:=1.0 -PKG_RELEASE:=13 - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/lean/luci-app-sfe/luasrc/controller/sfe.lua b/package/lean/luci-app-sfe/luasrc/controller/sfe.lua deleted file mode 100644 index 631d5fc05..000000000 --- a/package/lean/luci-app-sfe/luasrc/controller/sfe.lua +++ /dev/null @@ -1,36 +0,0 @@ -module("luci.controller.sfe", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/sfe") then - return - end - - entry({"admin", "network", "sfe"}, cbi("sfe"), _("Turbo ACC Center"), 1000).dependent = true - entry({"admin", "network", "sfe", "status"}, call("action_status")) -end - -local function is_running() - return luci.sys.call("lsmod | grep fast_classifier >/dev/null") == 0 -end - -local function is_bbr() - return luci.sys.call("sysctl net.ipv4.tcp_congestion_control | grep bbr >/dev/null") == 0 -end - -local function is_fullcone() - return luci.sys.call("iptables -t nat -L -n --line-numbers | grep FULLCONENAT >/dev/null") == 0 -end - -local function is_dns() - return luci.sys.call("pgrep dnscache >/dev/null") == 0 -end - -function action_status() - luci.http.prepare_content("application/json") - luci.http.write_json({ - run_state = is_running(), - down_state = is_bbr(), - up_state = is_fullcone(), - dns_state = is_dns() - }) -end \ No newline at end of file diff --git a/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua b/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua deleted file mode 100644 index c30f3aa17..000000000 --- a/package/lean/luci-app-sfe/luasrc/model/cbi/sfe.lua +++ /dev/null @@ -1,47 +0,0 @@ - -m = Map("sfe") -m.title = translate("Turbo ACC Acceleration Settings") -m.description = translate("Opensource Qualcomm Shortcut FE driver (Fast Path)") - -m:append(Template("sfe/status")) - -s = m:section(TypedSection, "sfe", "") -s.addremove = false -s.anonymous = true - - -enable = s:option(Flag, "enabled", translate("Enable SFE Fast Path")) -enable.default = 0 -enable.rmempty = false -enable.description = translate("Enable Fast Path offloading for connections. (decrease cpu load / increase routing throughput)") - -wifi = s:option(Flag, "wifi", translate("Bridge Acceleration")) -wifi.default = 0 -wifi.rmempty = false -wifi.description = translate("Enable Bridge Acceleration (may be functional conflict with bridge-mode VPN Server)") -wifi:depends("enabled", 1) - -if nixio.fs.access("/proc/sys/net/ipv6") then -ipv6 = s:option(Flag, "ipv6", translate("IPv6 Acceleration")) -ipv6.default = 0 -ipv6.rmempty = false -ipv6.description = translate("Enable IPv6 Acceleration") -ipv6:depends("enabled", 1) -end - -bbr = s:option(Flag, "bbr", translate("Enable BBR")) -bbr.default = 0 -bbr.rmempty = false -bbr.description = translate("Bottleneck Bandwidth and Round-trip propagation time (BBR)") - -dns = s:option(Flag, "dns", translate("DNS Acceleration")) -dns.default = 0 -dns.rmempty = false -dns.description = translate("Enable DNS Cache Acceleration and anti ISP DNS pollution") - -o = s:option(Value, "dns_server", translate("Upsteam DNS Server")) -o.default = "114.114.114.114,114.114.115.115" -o.description = translate("Muitiple DNS server can saperate with ','") -o:depends("dns", 1) - -return m diff --git a/package/lean/luci-app-sfe/luasrc/view/sfe/status.htm b/package/lean/luci-app-sfe/luasrc/view/sfe/status.htm deleted file mode 100644 index 6d35265ac..000000000 --- a/package/lean/luci-app-sfe/luasrc/view/sfe/status.htm +++ /dev/null @@ -1,24 +0,0 @@ -
- <%:Running Status%> - - - - - -
SFE 加速状态<%:Collecting data...%>
BBR 加速<%:Collecting data...%>
FULLCONE NAT加速<%:Collecting data...%>
DNS 加速<%:Collecting data...%>
-
- - diff --git a/package/lean/luci-app-sfe/po/zh-cn/sfe.po b/package/lean/luci-app-sfe/po/zh-cn/sfe.po deleted file mode 100644 index 24ba394c8..000000000 --- a/package/lean/luci-app-sfe/po/zh-cn/sfe.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "SFE Acceleration" -msgstr "SFE 转发加速" - -msgid "Running Status" -msgstr "运行状态" - -msgid "Turbo ACC Center" -msgstr "Turbo ACC 网络加速" - -msgid "Turbo ACC Acceleration Settings" -msgstr "Turbo ACC 网络加速设置" - -msgid "Shortcut Forwarding Engine Acceleration Settings" -msgstr "SFE 转发加速引擎设置" - -msgid "Opensource Qualcomm Shortcut FE driver (Fast Path)" -msgstr "来自高通开源的 Shortcut FE 转发加速引擎 (Fast Path)" - -msgid "Enable" -msgstr "启用" - -msgid "Enable SFE Fast Path" -msgstr "启用 SFE Fast Path 加速" - -msgid "Enable Fast Path offloading for connections. (decrease cpu load / increase routing throughput)" -msgstr "开启 Fast Path 转发加速. (降低CPU占用 / 增强路由转发性能,和多WAN或者QOS功能可能会冲突)" - -msgid "Bridge Acceleration" -msgstr "桥接加速" - -msgid "Enable Bridge Acceleration (may be functional conflict with bridge-mode VPN Server)" -msgstr "启用桥接加速 (可能会和路由器上桥接模式的VPN服务器冲突)" - -msgid "IPv6 Acceleration" -msgstr "IPv6 加速" - -msgid "Enable IPv6 Acceleration" -msgstr "开启IPv6加速" - -msgid "Enable BBR" -msgstr "启用 BBR" - -msgid "Bottleneck Bandwidth and Round-trip propagation time (BBR)" -msgstr "BBR拥塞控制算法可以加强TCP应用表现,但会降低路由器本机上的WIFI吞吐性能" - -msgid "DNS Acceleration" -msgstr "DNS 加速" - -msgid "Enable DNS Cache Acceleration and anti ISP DNS pollution" -msgstr "启用DNS多线程查询、缓存,并防止ISP的DNS广告和域名劫持" - -msgid "Upsteam DNS Server" -msgstr "上游 DNS 服务器(国内)" - -msgid "Muitiple DNS server can saperate with ','" -msgstr "支持多个上游DNS服务器,用','分隔(注意用英文逗号).请填写您最快的DNS服务器" diff --git a/package/lean/luci-app-sfe/root/etc/config/sfe b/package/lean/luci-app-sfe/root/etc/config/sfe deleted file mode 100644 index fc0b52ec4..000000000 --- a/package/lean/luci-app-sfe/root/etc/config/sfe +++ /dev/null @@ -1,9 +0,0 @@ - -config sfe 'config' - option enabled '1' - option ipv6 '0' - option wifi '0' - option bbr '0' - option dns '0' - option dns_server '114.114.114.114,114.114.115.115' - diff --git a/package/lean/luci-app-sfe/root/etc/init.d/sfe b/package/lean/luci-app-sfe/root/etc/init.d/sfe deleted file mode 100755 index 061c5d6c6..000000000 --- a/package/lean/luci-app-sfe/root/etc/init.d/sfe +++ /dev/null @@ -1,209 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2007-2012 OpenWrt.org - -START=90 - -USE_PROCD=1 - -PDNSD_BIN="/var/sbin/dnscache" -DNSMASQ_RESTART=N -DNS_SERVER="114.114.114.114,114.114.115.115" - -pdnsd_genconfig() { - DNS_SERVER=$(uci get sfe.config.dns_server 2>/dev/null) - - [ -d /var/etc ] || mkdir -p /var/etc - - if [ ! -f /var/dnscache/pdnsd.cache ]; then - mkdir -p /var/dnscache - echo -ne "pd13\000\000\000\000" >/var/dnscache/pdnsd.cache - chown -R nobody.nogroup /var/dnscache - fi - - cat <<-EOF >/var/etc/dnscache.conf - global { - perm_cache=1024; # dns缓存大小,单位KB,建议不要写的太大 - cache_dir="/var/dnscache"; # 缓存文件的位置 - pid_file="/var/run/dnscache.pid"; - run_as="nobody"; - server_ip = 0.0.0.0; # pdnsd监听的网卡,0.0.0.0是全部网卡 - server_port=5333; # pdnsd监听的端口,不要和别的服务冲突即可 - status_ctl = on; - paranoid=on; # 二次请求模式,如果请求主DNS服务器返回的是垃圾地址,就向备用服务器请求 - query_method=udp_only; - neg_domain_pol = off; - par_queries = 400; # 最多同时请求数 - min_ttl = 1h; # DNS结果最短缓存时间 - max_ttl = 1w; # DNS结果最长缓存时间 - timeout = 10; # DNS请求超时时间,单位秒 - } - - server { - label = "routine"; - ip = $DNS_SERVER; # 这里为主要上级 dns 的 ip 地址,建议填写一个当地最快的DNS地址 - timeout = 5; # DNS请求超时时间 - reject = 74.125.127.102, # 以下是脏IP,也就是DNS污染一般会返回的结果,如果收到如下DNS结果会触发二次请求(TCP协议一般不会碰到脏IP) - 74.125.155.102, - 74.125.39.102, - 74.125.39.113, - 209.85.229.138, - 128.121.126.139, - 159.106.121.75, - 169.132.13.103, - 192.67.198.6, - 202.106.1.2, - 202.181.7.85, - 203.161.230.171, - 203.98.7.65, - 207.12.88.98, - 208.56.31.43, - 209.145.54.50, - 209.220.30.174, - 209.36.73.33, - 211.94.66.147, - 213.169.251.35, - 216.221.188.182, - 216.234.179.13, - 243.185.187.39, - 37.61.54.158, - 4.36.66.178, - 46.82.174.68, - 59.24.3.173, - 64.33.88.161, - 64.33.99.47, - 64.66.163.251, - 65.104.202.252, - 65.160.219.113, - 66.45.252.237, - 69.55.52.253, - 72.14.205.104, - 72.14.205.99, - 78.16.49.15, - 8.7.198.45, - 93.46.8.89, - 37.61.54.158, - 243.185.187.39, - 190.93.247.4, - 190.93.246.4, - 190.93.245.4, - 190.93.244.4, - 65.49.2.178, - 189.163.17.5, - 23.89.5.60, - 49.2.123.56, - 54.76.135.1, - 77.4.7.92, - 118.5.49.6, - 159.24.3.173, - 188.5.4.96, - 197.4.4.12, - 220.250.64.24, - 243.185.187.30, - 249.129.46.48, - 253.157.14.165; - reject_policy = fail; - } - - server { - label = "special"; # 这个随便写 - ip = 208.67.222.222,208.67.220.220; # 这里为备用DNS服务器的 ip 地址 - port = 5353; # 推荐使用53以外的端口(DNS服务器必须支持) - proxy_only = on; - timeout = 5; - } - - source { - owner=localhost; - // serve_aliases=on; - file="/etc/hosts"; - } - - rr { - name=localhost; - reverse=on; - a=127.0.0.1; - owner=localhost; - soa=localhost,root.localhost,42,86400,900,86400,86400; - } - EOF - - [ -d /var/sbin ] || mkdir -p /var/sbin - [ -f /var/sbin/dnscache ] || ln -s /usr/sbin/pdnsd /var/sbin/dnscache -} - -change_dns() { - uci delete dhcp.@dnsmasq[0].server >/dev/null 2>&1 - uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 - uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto - uci set dhcp.@dnsmasq[0].noresolv=0 - uci commit dhcp -} - -revert_dns() { - uci del_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 >/dev/null 2>&1 - uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto - uci set dhcp.@dnsmasq[0].noresolv=0 - uci commit dhcp -} - -start_service() { - enable=$(uci get sfe.config.enabled 2>/dev/null) - wifi=$(uci get sfe.config.wifi) - ipv6=$(uci get sfe.config.ipv6) - dns=$(uci get sfe.config.dns 2>/dev/null) - bbr=$(uci get sfe.config.bbr 2>/dev/null) - - if [ $enable -eq 1 ]; then - ! (lsmod | grep fast_classifier >/dev/null) && (modprobe fast_classifier) - if [ $wifi -eq 1 ]; then - echo 1 >/sys/fast_classifier/skip_to_bridge_ingress - else - echo 0 >/sys/fast_classifier/skip_to_bridge_ingress - fi - if [ $ipv6 -eq 1 ]; then - sfe_ipv6=$(cat /sys/sfe_ipv6/debug_dev) - [ ! -f /dev/sfe_ipv6 ] && mknod /dev/sfe_ipv6 c $sfe_ipv6 0 - else - rm -f /dev/sfe_ipv6 - fi - else - rmmod fast_classifier >/dev/null 2>&1 - fi - - if [ $dns -eq 1 ]; then - pdnsd_genconfig - procd_open_instance - procd_set_param command "$PDNSD_BIN" -c /var/etc/dnscache.conf - procd_set_param respawn - procd_set_param stderr 1 - procd_close_instance - change_dns - else - revert_dns - fi - - if [ $bbr -eq 1 ]; then - sysctl -w net.ipv4.tcp_congestion_control=bbr - else - sysctl -w net.ipv4.tcp_congestion_control=cubic - fi - if [ "$DNSMASQ_RESTART" = N ]; then - /etc/init.d/dnsmasq restart - fi -} - -stop_service() { - enable=$(uci get sfe.config.enabled 2>/dev/null) - [ $enable -ne 1 ] && rmmod fast_classifier >/dev/null 2>&1 - revert_dns - if [ "$DNSMASQ_RESTART" = N ]; then - /etc/init.d/dnsmasq restart - fi -} - -restart() { - DNSMASQ_RESTART=Y - stop - start - /etc/init.d/dnsmasq restart && echo "DNSMASQ restart" -} diff --git a/package/lean/luci-app-sfe/root/etc/uci-defaults/luci-sfe b/package/lean/luci-app-sfe/root/etc/uci-defaults/luci-sfe deleted file mode 100755 index 50adb160f..000000000 --- a/package/lean/luci-app-sfe/root/etc/uci-defaults/luci-sfe +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@sfe[-1] - add ucitrack sfe - set ucitrack.@sfe[-1].init=sfe - commit ucitrack -EOF - -[ ! -f /usr/sbin/dnscache ] && ln /usr/sbin/pdnsd /usr/sbin/dnscache -/etc/init.d/sfe enable - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/lean/luci-app-sfe/root/usr/share/dnscache-watchdog.sh b/package/lean/luci-app-sfe/root/usr/share/dnscache-watchdog.sh deleted file mode 100755 index 4bde67d57..000000000 --- a/package/lean/luci-app-sfe/root/usr/share/dnscache-watchdog.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -dns_enable=$(uci get sfe.config.dns 2>/dev/null) - -if [ $dns_enable -eq 1 ]; then - if ! pidof dnscache>/dev/null; then - /etc/init.d/sfe restart - fi -fi diff --git a/package/lean/luci-app-turboacc/Makefile b/package/lean/luci-app-turboacc/Makefile new file mode 100644 index 000000000..9bc9cc56a --- /dev/null +++ b/package/lean/luci-app-turboacc/Makefile @@ -0,0 +1,55 @@ +# SPDX-Identifier-License: GPL-3.0-only +# +# Copyright (C) 2018 Lean +# Copyright (C) 2019-2021 ImmortalWrt.org + +include $(TOPDIR)/rules.mk + +PKG_NAME:=luci-app-turboacc +PKG_RELEASE:=$(COMMITCOUNT) + +PKG_LICENSE:=GPL-3.0-only +PKG_MAINTAINER:=Tianling Shen + +LUCI_TITLE:=LuCI support for Flow Offload / Shortcut-FE +LUCI_DEPENDS:=+pdnsd-alt \ + +PACKAGE_TURBOACC_INCLUDE_BBR_CCA:kmod-tcp-bbr \ + +PACKAGE_TURBOACC_INCLUDE_DNSFORWARDER:dnsforwarder \ + +PACKAGE_TURBOACC_INCLUDE_DNSPROXY:dnsproxy \ + +PACKAGE_TURBOACC_INCLUDE_OFFLOADING:kmod-ipt-offload \ + +PACKAGE_TURBOACC_INCLUDE_SHORTCUT_FE:kmod-fast-classifier +LUCI_PKGARCH:=all + +define Package/luci-app-turboacc/config +config PACKAGE_TURBOACC_INCLUDE_OFFLOADING + bool "Include Flow Offload" + depends on PACKAGE_TURBOACC_INCLUDE_SHORTCUT_FE=n + default y + +config PACKAGE_TURBOACC_INCLUDE_SHORTCUT_FE + bool "Include Shortcut-FE" + default n + +config PACKAGE_TURBOACC_INCLUDE_BBR_CCA + bool "Include BBR CCA" + default y + +config PACKAGE_TURBOACC_INCLUDE_DNSFORWARDER + bool "Include DNSForwarder" + default n + +config PACKAGE_TURBOACC_INCLUDE_DNSPROXY + bool "Include DNSProxy" + default n +endef + +PKG_CONFIG_DEPENDS:= \ + CONFIG_PACKAGE_TURBOACC_INCLUDE_BBR_CCA \ + CONFIG_PACKAGE_TURBOACC_INCLUDE_DNSFORWARDER \ + CONFIG_PACKAGE_TURBOACC_INCLUDE_DNSPROXY \ + CONFIG_PACKAGE_TURBOACC_INCLUDE_OFFLOADING \ + CONFIG_PACKAGE_TURBOACC_INCLUDE_SHORTCUT_FE + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/lean/luci-app-turboacc/luasrc/controller/turboacc.lua b/package/lean/luci-app-turboacc/luasrc/controller/turboacc.lua new file mode 100644 index 000000000..503b879f6 --- /dev/null +++ b/package/lean/luci-app-turboacc/luasrc/controller/turboacc.lua @@ -0,0 +1,39 @@ +module("luci.controller.turboacc", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/turboacc") then + return + end + local page + page = entry({"admin", "network", "turboacc"}, cbi("turboacc"), _("Turbo ACC Center"), 101) + page.i18n = "turboacc" + page.dependent = true + + entry({"admin", "network", "turboacc", "status"}, call("action_status")) +end + +local function fastpath_status() + return luci.sys.call("/etc/init.d/turboacc check_status fastpath") == 0 +end + +local function bbr_status() + return luci.sys.call("/etc/init.d/turboacc check_status bbr") == 0 +end + +local function fullconenat_status() + return luci.sys.call("/etc/init.d/turboacc check_status fullconenat") == 0 +end + +local function dnscaching_status() + return luci.sys.call("/etc/init.d/turboacc check_status dns") == 0 +end + +function action_status() + luci.http.prepare_content("application/json") + luci.http.write_json({ + fastpath_state = fastpath_status(), + fullconenat_state = fullconenat_status(), + bbr_state = bbr_status(), + dnscaching_state = dnscaching_status() + }) +end diff --git a/package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua b/package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua new file mode 100644 index 000000000..49581d38d --- /dev/null +++ b/package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua @@ -0,0 +1,79 @@ +local kernel_version = luci.sys.exec("echo -n $(uname -r)") + +m = Map("turboacc") +m.title = translate("Turbo ACC Acceleration Settings") +m.description = translate("Opensource Flow Offloading driver (Fast Path or Hardware NAT)") + +m:append(Template("turboacc/status")) + +s = m:section(TypedSection, "turboacc", "") +s.addremove = false +s.anonymous = true + +if nixio.fs.access("/lib/modules/" .. kernel_version .. "/xt_FLOWOFFLOAD.ko") then +sw_flow = s:option(Flag, "sw_flow", translate("Software flow offloading")) +sw_flow.default = 0 +sw_flow.description = translate("Software based offloading for routing/NAT") +sw_flow:depends("sfe_flow", 0) +end + +if luci.sys.call("cat /proc/cpuinfo | grep -q MT76") == 0 then +hw_flow = s:option(Flag, "hw_flow", translate("Hardware flow offloading")) +hw_flow.default = 0 +hw_flow.description = translate("Requires hardware NAT support. Implemented at least for mt76xx") +hw_flow:depends("sw_flow", 1) +end + +if nixio.fs.access("/lib/modules/" .. kernel_version .. "/fast-classifier.ko") then +sfe_flow = s:option(Flag, "sfe_flow", translate("Shortcut-FE flow offloading")) +sfe_flow.default = 0 +sfe_flow.description = translate("Shortcut-FE based offloading for routing/NAT") +sfe_flow:depends("sw_flow", 0) +end + +sfe_bridge = s:option(Flag, "sfe_bridge", translate("Bridge Acceleration")) +sfe_bridge.default = 0 +sfe_bridge.description = translate("Enable Bridge Acceleration (may be functional conflict with bridge-mode VPN server)") +sfe_bridge:depends("sfe_flow", 1) + +if nixio.fs.access("/proc/sys/net/ipv6") then +sfe_ipv6 = s:option(Flag, "sfe_ipv6", translate("IPv6 Acceleration")) +sfe_ipv6.default = 0 +sfe_ipv6.description = translate("Enable IPv6 Acceleration") +sfe_ipv6:depends("sfe_flow", 1) +end + +if nixio.fs.access("/lib/modules/" .. kernel_version .. "/tcp_bbr.ko") then +bbr_cca = s:option(Flag, "bbr_cca", translate("BBR CCA")) +bbr_cca.default = 0 +bbr_cca.description = translate("Using BBR CCA can improve TCP network performance effectively") +end + +if nixio.fs.access("/lib/modules/" .. kernel_version .. "/xt_FULLCONENAT.ko") then +fullcone_nat = s:option(Flag, "fullcone_nat", translate("FullCone NAT")) +fullcone_nat.default = 0 +fullcone_nat.description = translate("Using FullCone NAT can improve gaming performance effectively") +end + +dns_caching = s:option(Flag, "dns_caching", translate("DNS Caching")) +dns_caching.default = 0 +dns_caching.rmempty = false +dns_caching.description = translate("Enable DNS Caching and anti ISP DNS pollution") + +dns_caching_mode = s:option(ListValue, "dns_caching_mode", translate("Resolve DNS Mode"), translate("DNS Program")) +dns_caching_mode:value("1", translate("Using PDNSD to query and cache")) +if nixio.fs.access("/usr/bin/dnsforwarder") then +dns_caching_mode:value("2", translate("Using DNSForwarder to query and cache")) +end +if nixio.fs.access("/usr/bin/dnsproxy") then +dns_caching_mode:value("3", translate("Using DNSProxy to query and cache")) +end +dns_caching_mode.default = 1 +dns_caching_mode:depends("dns_caching", 1) + +dns_caching_dns = s:option(Value, "dns_caching_dns", translate("Upsteam DNS Server")) +dns_caching_dns.default = "114.114.114.114,114.114.115.115,223.5.5.5,223.6.6.6,180.76.76.76,119.29.29.29,119.28.28.28,1.2.4.8,210.2.4.8" +dns_caching_dns.description = translate("Muitiple DNS server can saperate with ','") +dns_caching_dns:depends("dns_caching", 1) + +return m diff --git a/package/lean/luci-app-turboacc/luasrc/view/turboacc/status.htm b/package/lean/luci-app-turboacc/luasrc/view/turboacc/status.htm new file mode 100644 index 000000000..90de3884b --- /dev/null +++ b/package/lean/luci-app-turboacc/luasrc/view/turboacc/status.htm @@ -0,0 +1,25 @@ +
+ <%:Running Status%> + + + + + +
<%:Flow Offloading%><%:Collecting data...%>
<%:FullCone NAT%><%:Collecting data...%>
<%:BBR CCA%><%:Collecting data...%>
<%:DNS Caching%><%:Collecting data...%>
+
+ + diff --git a/package/lean/luci-app-turboacc/po/zh-cn/turboacc.po b/package/lean/luci-app-turboacc/po/zh-cn/turboacc.po new file mode 100644 index 000000000..9111e3fc4 --- /dev/null +++ b/package/lean/luci-app-turboacc/po/zh-cn/turboacc.po @@ -0,0 +1,99 @@ +msgid "Turbo ACC Center" +msgstr "Turbo ACC 网络加速" + +msgid "Turbo ACC Acceleration Settings" +msgstr "Turbo ACC 网络加速设置" + +msgid "Linux Flow Offload Forwarding Engine Settings" +msgstr "Linux Flow Offload Forwarding 转发加速引擎设置" + +msgid "Opensource Flow Offloading driver (Fast Path or Hardware NAT)" +msgstr "开源流量分载驱动 (支持 Fast Path 或者 硬件 NAT)" + +msgid "Software flow offloading" +msgstr "软件流量分载" + +msgid "Software based offloading for routing/NAT" +msgstr "基于软件的 Routing/NAT 分载" + +msgid "Hardware flow offloading" +msgstr "硬件流量分载" + +msgid "Requires hardware NAT support. Implemented at least for mt76xx" +msgstr "需要硬件 NAT 支持。目前 mt76xx 已实现" + +msgid "Shortcut-FE flow offloading" +msgstr "Shortcut-FE 流量分载" + +msgid "Shortcut-FE based offloading for routing/NAT" +msgstr "基于 Shortcut-FE 的 Routing/NAT 分载" + +msgid "Bridge Acceleration" +msgstr "桥接加速" + +msgid "Enable Bridge Acceleration (may be functional conflict with bridge-mode VPN server)" +msgstr "启用桥接加速 (可能会和路由器上桥接模式的VPN服务器冲突)" + +msgid "IPv6 Acceleration" +msgstr "IPv6 加速" + +msgid "Enable IPv6 Acceleration" +msgstr "启用 IPv6 加速" + +msgid "BBR CCA" +msgstr "BBR 拥塞控制算法" + +msgid "Using BBR CCA can improve TCP network performance effectively" +msgstr "使用 BBR 拥塞控制算法可以有效提升 TCP 网络性能" + +msgid "FullCone NAT" +msgstr "全锥形 NAT" + +msgid "Using FullCone NAT can improve gaming performance effectively" +msgstr "使用全锥形 NAT 可以有效提升游戏体验" + +msgid "DNS Caching" +msgstr "DNS 缓存" + +msgid "Enable DNS Caching and anti ISP DNS pollution" +msgstr "启用 DNS 多线程查询、缓存,并防止 ISP 的 DNS 广告和域名劫持" + +msgid "Resolve DNS Mode" +msgstr "DNS 解析方式" + +msgid "DNS Program" +msgstr "DNS 解析程序" + +msgid "Using PDNSD to query and cache" +msgstr "使用 PDNSD 解析" + + +msgid "Using DNSForwarder to query and cache" +msgstr "使用 DNSForwarder 解析" + +msgid "Using DNSProxy to query and cache" +msgstr "使用 DNSProxy 解析" + +msgid "Upsteam DNS Server" +msgstr "上游 DNS 服务器" + +msgid "Muitiple DNS server can saperate with ','" +msgstr "多个上游 DNS 服务器请用 ',' 分隔(注意用英文逗号)" + +msgid "Running Status" +msgstr "运行状态" + +msgid "Flow Offloading" +msgstr "流量分载" + +msgid "BBR CCA" +msgstr "BBR 拥塞控制算法" + +msgid "FullCone NAT" +msgstr "全锥型 NAT" + +msgid "DNS Caching" +msgstr "DNS 缓存" + +msgid "Open Web Interface" +msgstr "打开 Web 界面" diff --git a/package/lean/luci-app-turboacc/root/etc/config/turboacc b/package/lean/luci-app-turboacc/root/etc/config/turboacc new file mode 100644 index 000000000..b8dc42674 --- /dev/null +++ b/package/lean/luci-app-turboacc/root/etc/config/turboacc @@ -0,0 +1,12 @@ + +config turboacc 'config' + option sw_flow '1' + option hw_flow '1' + option sfe_flow '1' + option sfe_bridge '1' + option sfe_ipv6 '0' + option fullcone_nat '1' + option bbr_cca '1' + option dns_caching '0' + option dns_caching_mode '1' + option dns_caching_dns '114.114.114.114,114.114.115.115,223.5.5.5,223.6.6.6,180.76.76.76,119.29.29.29,119.28.28.28,1.2.4.8,210.2.4.8' diff --git a/package/lean/luci-app-turboacc/root/etc/init.d/turboacc b/package/lean/luci-app-turboacc/root/etc/init.d/turboacc new file mode 100755 index 000000000..8b8b31bf1 --- /dev/null +++ b/package/lean/luci-app-turboacc/root/etc/init.d/turboacc @@ -0,0 +1,339 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2018 Lean +# Copyright (C) 2019-2021 Tianling Shen + +START=90 +STOP=10 + +extra_command "check_status" "Check running status of utils" + +restart_utils="true" + +inital_conf(){ + config_load "turboacc" + config_get "sw_flow" "config" "sw_flow" "0" + config_get "hw_flow" "config" "hw_flow" "0" + config_get "sfe_flow" "config" "sfe_flow" "0" + config_get "sfe_bridge" "config" "sfe_bridge" "0" + config_get "sfe_ipv6" "config" "sfe_ipv6" "0" + config_get "bbr_cca" "config" "bbr_cca" "0" + config_get "fullcone_nat" "config" "fullcone_nat" "0" + config_get "dns_caching" "config" "dns_caching" "0" + config_get "dns_caching_mode" "config" "dns_caching_mode" "0" + config_get "dns_caching_dns" "config" "dns_caching_dns" + + [ ! -e "/lib/modules/$(uname -r)/xt_FLOWOFFLOAD.ko" ] && { sw_flow="0"; hw_flow="0"; } + [ ! -e "/lib/modules/$(uname -r)/fast-classifier.ko" ] && { sfe_flow="0"; sfe_bridge="0"; sfe_ipv6="0"; } + [ ! -e "/lib/modules/$(uname -r)/tcp_bbr.ko" ] && bbr_cca="0" + [ ! -e "/lib/modules/$(uname -r)/xt_FULLCONENAT.ko" ] && fullcone_nat="0" +} + +start_pdnsd() { + [ -d "/var/run/dnscache" ] || mkdir -p "/var/run/dnscache" + cat > "/var/run/dnscache/dnscache.conf" < "/var/dnscache/pdnsd.cache" + chown -R nobody.nogroup "/var/dnscache" + fi + + [ -d "/var/sbin" ] || mkdir -p "/var/sbin" + cp -a "/usr/sbin/pdnsd" "/var/sbin/dnscache" + /var/sbin/dnscache -c "/var/run/dnscache/dnscache.conf" > "/var/log/dnscache.file" 2>&1 & + echo "PDNSD: Start DNS Caching" +} + +start_dnsforwarder() { + mkdir -p "/var/run/dnscache" + cat > "/var/run/dnscache/dnscache.conf" < "/var/log/dnscache.file" 2>&1 & + echo "DnsForwarder: Start DNS Caching" + +} + +start_dnsproxy() { + [ -d "/var/run/dnscache" ] || mkdir -p "/var/run/dnscache" + echo -e "${dns_caching_dns//,/\\n}" > "/var/run/dnscache/dnscache.conf" + + [ -d "/var/sbin" ] || mkdir -p "/var/sbin" + cp -a "/usr/bin/dnsproxy" "/var/sbin/dnscache" + /var/sbin/dnscache -l "127.0.0.1" -p "5333" -b "tls://9.9.9.9" -f "tls://8.8.8.8" -u "/var/run/dnscache/dnscache.conf" --all-servers --cache --cache-min-ttl=3600 > "/var/log/dnscache.file" 2>&1 & + echo "DNSProxy: Start DNS Caching" +} + +stop_dnscache() { + killall -9 "dnscache" + kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') + rm -rf "/var/dnscache" "/var/run/dnscache" + echo "Stop DNS Caching" +} + +change_dns() { + uci -q delete dhcp.@dnsmasq[0].server + uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#5333" + uci set dhcp.@dnsmasq[0].noresolv="1" + uci commit dhcp + +} + +revert_dns() { + uci -q del_list dhcp.@dnsmasq[0].server="127.0.0.1#5333" + uci set dhcp.@dnsmasq[0].resolvfile="/tmp/resolv.conf.d/resolv.conf.auto" + uci set dhcp.@dnsmasq[0].noresolv="0" + uci commit dhcp +} + +start(){ + inital_conf + + uci set firewall.@defaults[0].flow_offloading="${sw_flow}" + uci set firewall.@defaults[0].flow_offloading_hw="${hw_flow}" + uci set firewall.@defaults[0].fullcone="${fullcone_nat}" + uci commit firewall + + [ "${sw_flow}" -ne "1" ] && [ "${sfe_flow}" -eq "1" ] && { + lsmod | grep -q fast_classifier || modprobe fast_classifier 2>"/dev/null" + echo "${sfe_bridge}" > "/sys/fast_classifier/skip_to_bridge_ingress" 2>"/dev/null" + if [ "${sfe_ipv6}" -eq "1" ]; then + [ ! -e "/dev/sfe_ipv6" ] && mknod "/dev/sfe_ipv6" "c" "$(cat "/sys/sfe_ipv6/debug_dev")" "0" + else + rm -f "/dev/sfe_ipv6" + fi + } + + if [ "${bbr_cca}" -eq "1" ]; then + sysctl -w net.ipv4.tcp_congestion_control="bbr" + else + sysctl -w net.ipv4.tcp_congestion_control="cubic" + fi + + if [ "${dns_caching}" -eq "1" ]; then + stop_dnscache + sleep 1 + + rm -f "/var/log/dnscache.file" + if [ "${dns_caching_mode}" = "1" ]; then + start_pdnsd + elif [ "${dns_caching_mode}" = "2" ]; then + start_dnsforwarder + elif [ "${dns_caching_mode}" = "3" ]; then + start_dnsproxy + fi + + change_dns + /usr/share/dnscache/dnscache-while.sh > "/var/log/dnscache.file" 2>&1 & + else + stop_dnscache + revert_dns + fi + + if [ "${restart_utils}" = "true" ]; then + /etc/init.d/dnsmasq restart >"/dev/null" 2>&1 && echo "DNSMASQ change" + /etc/init.d/firewall restart >"/dev/null" 2>&1 + fi +} + +stop(){ + inital_conf + + uci set firewall.@defaults[0].flow_offloading="${sw_flow}" + uci set firewall.@defaults[0].flow_offloading_hw="${hw_flow}" + uci set firewall.@defaults[0].fullcone="${fullcone_nat}" + uci commit firewall + + [ "${sfe_flow}" -ne "1" ] && { + echo "0" > "/sys/fast_classifier/skip_to_bridge_ingress" 2>"/dev/null" + rm -f "/dev/sfe_ipv6" + rmmod "fast_classifier" 2>"/dev/null" + } + + stop_dnscache + revert_dns + + if [ "${restart_utils}" = "true" ]; then + /etc/init.d/dnsmasq restart >"/dev/null" 2>&1 && echo "DNSMASQ revert" + /etc/init.d/firewall restart >"/dev/null" 2>&1 + fi +} + +restart(){ + restart_utils="false" + stop + start + /etc/init.d/dnsmasq restart >"/dev/null" 2>&1 && echo "DNSMASQ restart" + /etc/init.d/firewall restart >"/dev/null" 2>&1 +} + + +check_status(){ + case "$1" in + "fastpath") + if [ "$(cat "/sys/module/xt_FLOWOFFLOAD/refcnt" 2>"/dev/null" || echo 0)" -ne "0" ]; then + echo -n "Flow Offloading" + exit 0 + elif lsmod | grep -q "ecm"; then + echo -n "QCA-NSS-ECM" + exit 0 + elif lsmod | grep -q "fast_classifier"; then + echo -n "Shortcut-FE" + exit 0 + else + exit 1 + fi + ;; + "fullconenat") + [ "$(cat "/sys/module/xt_FULLCONENAT/refcnt" 2>"/dev/null" || echo 0)" -ne "0" ] && \ + exit 0 || exit 1 + ;; + "bbr") + [ "x$(cat "/proc/sys/net/ipv4/tcp_congestion_control" 2>"/dev/null")" = "xbbr" ] && \ + exit 0 || exit 1 + ;; + "dns") + pgrep "dnscache" >"/dev/null" && exit 0 || exit 1 + ;; + *) + exit 2 + ;; + esac +} diff --git a/package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc b/package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc new file mode 100755 index 000000000..37a556f42 --- /dev/null +++ b/package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc @@ -0,0 +1,10 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@turboacc[-1] + add ucitrack turboacc + set ucitrack.@turboacc[-1].init=turboacc + commit ucitrack +EOF + +exit 0 diff --git a/package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh b/package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh new file mode 100755 index 000000000..63a94bbd8 --- /dev/null +++ b/package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +sleeptime=60 + +dnsconf="/var/run/dnscache/dnscache.conf" +dnsprogram="/var/sbin/dnscache" +logfile="/var/log/dnscache.file" + +dns_caching="$(uci -q get turboacc.config.dns_caching)" +dns_caching_mode="$(uci -q get turboacc.config.dns_caching_mode)" + +clean_log() { + logrow="$(grep -c "" "${logfile}")" + [ "${logrow}" -lt "500" ] || echo "${curtime} Log 条数超限,清空处理!" > "${logfile}" +} + +while [ "${dns_caching}" -eq "1" ]; +do + curtime="$(date "+%H:%M:%S")" + + clean_log + + if pidof dnscache > "/dev/null"; then + echo -e "${curtime} online!" >> "${logfile}" + else + if [ "${dns_caching_mode}" = "1" ]; then + ${dnsprogram} -c "${dnsconf}" > "${logfile}" 2>&1 & + elif [ "${dns_caching_mode}" = "2" ]; then + ${dnsprogram} -f "${dnsconf}" > "${logfile}" 2>&1 & + elif [ "${dns_caching_mode}" = "3" ]; then + ${dnsprogram} -o "${logfile}" -l "127.0.0.1" -p "5333" -b "tls://9.9.9.9" -f "tls://8.8.8.8" -u "${dnsconf}" --all-servers --cache --cache-min-ttl=3600 > "${logfile}" 2>&1 & + fi + echo "${curtime} 重启服务!" >> ${logfile} + fi + + sleep "${sleeptime}" + continue +done