From 0a70e73dab23ccf934add0279d47bc0e0b8ca40a Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Tue, 23 Mar 2021 22:53:17 +0800 Subject: [PATCH] luci-app-turboacc: import from LuCI Signed-off-by: Tianling Shen --- package/ctcgfw/luci-app-turboacc/Makefile | 51 +++ .../luasrc/controller/turboacc.lua | 39 +++ .../luasrc/model/cbi/turboacc.lua | 87 ++++++ .../luasrc/view/turboacc/status.htm | 25 ++ .../luci-app-turboacc/po/zh-cn/turboacc.po | 107 +++++++ .../root/etc/config/turboacc | 14 + .../root/etc/init.d/turboacc | 295 ++++++++++++++++++ .../root/etc/uci-defaults/turboacc | 10 + .../root/usr/share/dnscache/dnscache-while.sh | 31 ++ 9 files changed, 659 insertions(+) create mode 100644 package/ctcgfw/luci-app-turboacc/Makefile create mode 100644 package/ctcgfw/luci-app-turboacc/luasrc/controller/turboacc.lua create mode 100644 package/ctcgfw/luci-app-turboacc/luasrc/model/cbi/turboacc.lua create mode 100644 package/ctcgfw/luci-app-turboacc/luasrc/view/turboacc/status.htm create mode 100644 package/ctcgfw/luci-app-turboacc/po/zh-cn/turboacc.po create mode 100644 package/ctcgfw/luci-app-turboacc/root/etc/config/turboacc create mode 100755 package/ctcgfw/luci-app-turboacc/root/etc/init.d/turboacc create mode 100755 package/ctcgfw/luci-app-turboacc/root/etc/uci-defaults/turboacc create mode 100755 package/ctcgfw/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh diff --git a/package/ctcgfw/luci-app-turboacc/Makefile b/package/ctcgfw/luci-app-turboacc/Makefile new file mode 100644 index 0000000000..d060bdd05b --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/Makefile @@ -0,0 +1,51 @@ +# Copyright (C) 2016 Openwrt.org +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=luci-app-turboacc +PKG_VERSION:=1.0 +PKG_RELEASE:=2 + +PKG_LICENSE:=GPLv3.0+ + +LUCI_TITLE:=LuCI support for Flow Offload / Shortcut-FE +LUCI_DEPENDS:=+pdnsd-alt \ + +PACKAGE_$(PKG_NAME)_INCLUDE_shortcut-fe:kmod-fast-classifier \ + +PACKAGE_$(PKG_NAME)_INCLUDE_flow-offload:kmod-ipt-offload \ + +PACKAGE_$(PKG_NAME)_INCLUDE_bbr-cca:kmod-tcp-bbr \ + +PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder:dnsforwarder +LUCI_PKGARCH:=all + +define Package/$(PKG_NAME)/config +config PACKAGE_$(PKG_NAME)_INCLUDE_shortcut-fe + bool "Include Shortcut-FE" + depends on PACKAGE_$(PKG_NAME)_INCLUDE_flow-offload=n + default y if LINUX_4_9 + default n + +config PACKAGE_$(PKG_NAME)_INCLUDE_flow-offload + bool "Include Flow Offload" + depends on !LINUX_4_9 + default y + +config PACKAGE_$(PKG_NAME)_INCLUDE_bbr-cca + bool "Include BBR CCA" + default y + +config PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder + bool "Include DNSForwarder" + default n +endef + +PKG_CONFIG_DEPENDS:= \ + CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_shortcut-fe \ + CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_flow-offload \ + CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_bbr-cca \ + CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_dnsforwarder + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/ctcgfw/luci-app-turboacc/luasrc/controller/turboacc.lua b/package/ctcgfw/luci-app-turboacc/luasrc/controller/turboacc.lua new file mode 100644 index 0000000000..259859fc1c --- /dev/null +++ b/package/ctcgfw/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("{ [ -e /sys/module/xt_FLOWOFFLOAD/refcnt ] && [ x$(cat /sys/module/xt_FLOWOFFLOAD/refcnt 2>/dev/null) != x0 ]; } || lsmod | grep -q fast_classifier") == 0 +end + +local function bbr_status() + return luci.sys.call("[ x$(cat /proc/sys/net/ipv4/tcp_congestion_control 2>/dev/null) = xbbr ]") == 0 +end + +local function fullconebat_status() + return luci.sys.call("[ -e /sys/module/xt_FULLCONENAT/refcnt ] && [ x$(cat /sys/module/xt_FULLCONENAT/refcnt 2>/dev/null) != x0 ]") == 0 +end + +local function dnscaching_status() + return luci.sys.call("pgrep dnscache >/dev/null") == 0 +end + +function action_status() + luci.http.prepare_content("application/json") + luci.http.write_json({ + fastpath_state = fastpath_status(), + bbr_state = bbr_status(), + fullconenat_state = fullconebat_status(), + dnscaching_state = dnscaching_status() + }) +end diff --git a/package/ctcgfw/luci-app-turboacc/luasrc/model/cbi/turboacc.lua b/package/ctcgfw/luci-app-turboacc/luasrc/model/cbi/turboacc.lua new file mode 100644 index 0000000000..12892733a1 --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/luasrc/model/cbi/turboacc.lua @@ -0,0 +1,87 @@ +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_acc = s:option(Flag, "dns_acc", translate("DNS Acceleration")) +dns_acc.default = 0 +dns_acc.rmempty = false +dns_acc.description = translate("Using optimized DNS records for GoogleHosts (Don't use under Clash Fake-IP mode)") + +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("Only PDNSD and DNSForwarder is supported now")) +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 +dns_caching_mode.default = 1 +dns_caching_mode:depends("dns_caching", 1) + +dns_caching_v4_dns = s:option(Value, "dns_caching_v4_dns", translate("Upsteam IPv4 DNS Server")) +dns_caching_v4_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_v4_dns.description = translate("Muitiple IPv4 DNS server can saperate with ','") +dns_caching_v4_dns:depends("dns_caching_mode", 1) +dns_caching_v4_dns:depends("dns_caching_mode", 2) + +dns_caching_v6_dns = s:option(Value, "dns_caching_v6_dns", translate("Upsteam IPv6 DNS Server")) +dns_caching_v6_dns.default = "2001:4860:4860::8888,2001:4860:4860::8844,2001:2001::1111,2001:2001::1001,2400:da00::6666,240C::6666,240C::6644" +dns_caching_v6_dns.description = translate("Muitiple IPv6 DNS server can saperate with ','") +dns_caching_v6_dns:depends("dns_caching_mode", 2) + +return m diff --git a/package/ctcgfw/luci-app-turboacc/luasrc/view/turboacc/status.htm b/package/ctcgfw/luci-app-turboacc/luasrc/view/turboacc/status.htm new file mode 100644 index 0000000000..9a834888d9 --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/luasrc/view/turboacc/status.htm @@ -0,0 +1,25 @@ +
+ <%:Running Status%> + + + + + +
<%:Flow Offloading%><%:Collecting data...%>
<%:BBR CCA%><%:Collecting data...%>
<%:FullCone NAT%><%:Collecting data...%>
<%:DNS Caching%><%:Collecting data...%>
+
+ + diff --git a/package/ctcgfw/luci-app-turboacc/po/zh-cn/turboacc.po b/package/ctcgfw/luci-app-turboacc/po/zh-cn/turboacc.po new file mode 100644 index 0000000000..2b533be79e --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/po/zh-cn/turboacc.po @@ -0,0 +1,107 @@ +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 Acceleration" +msgstr "DNS 加速" + +msgid "Using optimized DNS records for GoogleHosts (Don't use under Clash Fake-IP mode)" +msgstr "使用来自 GoogleHosts 的优质 DNS 记录(请勿在 Clash Fake-IP 模式下使用)" + +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 "Only PDNSD and DNSForwarder is supported now" +msgstr "目前仅支持 PDNSD 和 DNSForwarder" + +msgid "Using PDNSD to query and cache" +msgstr "使用 PDNSD 解析" + +msgid "Using DNSForwarder to query and cache" +msgstr "使用 DNSForwarder 解析" + +msgid "Upsteam IPv4 DNS Server" +msgstr "上游 IPv4 DNS 服务器" + +msgid "Muitiple IPv4 DNS server can saperate with ','" +msgstr "多个上游 IPv4 DNS 服务器请用 ',' 分隔(注意用英文逗号)" + +msgid "Upsteam IPv6 DNS Server" +msgstr "上游 IPv6 DNS 服务器" + +msgid "Muitiple IPv6 DNS server can saperate with ','" +msgstr "多个上游 IPv6 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/ctcgfw/luci-app-turboacc/root/etc/config/turboacc b/package/ctcgfw/luci-app-turboacc/root/etc/config/turboacc new file mode 100644 index 0000000000..067aad2763 --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/root/etc/config/turboacc @@ -0,0 +1,14 @@ + +config turboacc 'config' + option sw_flow '1' + option hw_flow '1' + option sfe_flow '1' + option sfe_bridge '1' + option sfe_ipv6 '0' + option bbr_cca '1' + option fullcone_nat '1' + option dns_acc '0' + option dns_caching '0' + option dns_caching_mode '1' + option dns_caching_v4_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' + option dns_caching_v6_dns '240c::6666,240c::6644,2001:da8::666,2001:da8:202:10::36,2001:da8:8000:1:202:120:2:100' diff --git a/package/ctcgfw/luci-app-turboacc/root/etc/init.d/turboacc b/package/ctcgfw/luci-app-turboacc/root/etc/init.d/turboacc new file mode 100755 index 0000000000..3064f305cc --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/root/etc/init.d/turboacc @@ -0,0 +1,295 @@ +#!/bin/sh /etc/rc.common +# Copyright (c) 2011-2015 OpenWrt.org + +START=90 +STOP=10 + +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_acc" "config" "dns_acc" "0" + config_get "dns_caching" "config" "dns_caching" "0" + config_get "dns_caching_mode" "config" "dns_caching_mode" "0" + config_get "dns_caching_v4_dns" "config" "dns_caching_v4_dns" + config_get "dns_caching_v6_dns" "config" "dns_caching_v6_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/etc" ] || mkdir -p "/var/etc" + cat > "/var/etc/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/etc/dnscache.conf" & + echo "PDNSD: Start DNS Caching" +} + +start_dnsforwarder() { + mkdir -p "/var/run/dnscache" + cat > "/var/run/dnscache/dnscache.conf" <"/dev/null" + kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') 2>"/dev/null" + 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 + + [ "${dns_acc}" -eq "1" ] && { + mkdir -p "/tmp/dnsmasq.d" + wget-ssl -q -t "20" -T "5" "https://cdn.jsdelivr.net/gh/googlehosts/hosts@master/hosts-files/dnsmasq.conf" -O "/tmp/dnsmasq.d/dnsmasq-googlehosts.conf" & +} + + 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 + fi + change_dns + nohup "/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" +} + + [ "${dns_acc}" -eq "0" ] && rm -f "/tmp/dnsmasq.d/dnsmasq-googlehosts.conf" + + 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 +} diff --git a/package/ctcgfw/luci-app-turboacc/root/etc/uci-defaults/turboacc b/package/ctcgfw/luci-app-turboacc/root/etc/uci-defaults/turboacc new file mode 100755 index 0000000000..37a556f42f --- /dev/null +++ b/package/ctcgfw/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/ctcgfw/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh b/package/ctcgfw/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh new file mode 100755 index 0000000000..f8952e834e --- /dev/null +++ b/package/ctcgfw/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +sleeptime=60 +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 2>/dev/null)" + +clean_log(){ +logrow="$(grep -c "" "${logfile}")" +if [ "${logrow}" -ge "500" ];then + echo "${curtime} Log条数超限,清空处理!" > "${logfile}" +fi +} + +while [ "${dns_caching}" -eq "1" ]; +do + curtime="$(date "+%H:%M:%S")" + echo "${curtime} online!" + pidof dnscache>/dev/null || { + if [ "${dns_caching_mode}" = "1" ]; then + /var/sbin/dnscache -c "/var/etc/dnscache.conf" & + elif [ "${dns_caching_mode}" = "2" ]; then + /var/sbin/dnscache -f "/var/run/dnscache/dnscache.conf" & + fi + echo "${curtime} 重启服务!" >> ${logfile} +} + + clean_log + sleep "${sleeptime}" + continue +done