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