luci-app-turboacc: merge offload and sfe into one package

This commit is contained in:
CN_SZTL 2020-07-18 21:29:56 +08:00
parent ced8e6dbe6
commit 9fab33305e
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
34 changed files with 525 additions and 989 deletions

View File

@ -18,7 +18,7 @@ end
function get_template_config()
local b
local d=""
for cnt in io.lines("/tmp/resolv.conf.auto") do
for cnt in io.lines("/tmp/resolv.conf.d/resolv.conf.auto") do
b=string.match (cnt,"^[^#]*nameserver%s+([^%s]+)$")
if (b~=nil) then
d=d.." - "..b.."\n"

View File

@ -8,7 +8,7 @@ require("table")
function gen_template_config()
local b
local d=""
for cnt in io.lines("/tmp/resolv.conf.auto") do
for cnt in io.lines("/tmp/resolv.conf.d/resolv.conf.auto") do
b=string.match (cnt,"^[^#]*nameserver%s+([^%s]+)$")
if (b~=nil) then
d=d.." - "..b.."\n"
@ -94,4 +94,4 @@ function m.on_commit(map)
fs.writefile("/var/run/AdGlucitest","")
end
end
return m
return m

View File

@ -49,7 +49,7 @@ stop_forward_dnsmasq()
uci del_list dhcp.@dnsmasq[0].server=$addr 2>/dev/null
addrlist="`uci get dhcp.@dnsmasq[0].server 2>/dev/null`"
if [ -z "$addrlist" ] ; then
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto 2>/dev/null
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
fi
uci commit dhcp

View File

@ -470,7 +470,7 @@ function rand_geturl(){
uci delete network.wan.mtu
uci commit network
uci set dhcp.@dnsmasq[0].port='53'
uci set dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
uci set dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto'
uci delete dhcp.@dnsmasq[0].server
uci delete dhcp.@dnsmasq[0].noresolv
uci commit dhcp

View File

@ -202,7 +202,7 @@ stop()
local addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null)
addr=${addr/:/#}
uci del_list dhcp.@dnsmasq[0].server=$addr 2>/dev/null
uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto 2>/dev/null
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

View File

@ -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 Flow Offload
LUCI_DEPENDS:=+kmod-ipt-offload +pdnsd-alt +kmod-tcp-bbr
LUCI_PKGARCH:=all
PKG_VERSION:=1.0
PKG_RELEASE:=15
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -1,46 +0,0 @@
module("luci.controller.flowoffload", package.seeall)
function index()
if not nixio.fs.access("/etc/config/flowoffload") then
return
end
local page
page = entry({"admin", "network", "flowoffload"}, cbi("flowoffload"), _("Turbo ACC Center"), 101)
page.i18n = "flowoffload"
page.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("[ x$(uci get flowoffload.@flow[0].dnscache_enable 2>/dev/null) != x3 ] && pgrep dnscache >/dev/null || pgrep AdGuardHome >/dev/null") == 0
end
local function is_ad()
return luci.sys.call("pgrep AdGuardHome >/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(),
ad_state = is_ad()
})
end

View File

@ -1,50 +0,0 @@
local m,s,o
local SYS = require "luci.sys"
local trport = 3001
local button = ""
if luci.sys.call("pidof AdGuardHome >/dev/null") == 0 then
button = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\" " .. translate("Open Web Interface") .. " \" onclick=\"window.open('http://'+window.location.hostname+':" .. trport .. "')\"/>"
end
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
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(ListValue, "dnscache_enable", translate("Resolve Dns Mode"), translate("AdGuardHome's login username/passwd: AdGuardHome, web console addr: IP:3001") .. button)
o:value("1", translate("Use Pdnsd query and cache"))
if nixio.fs.access("/usr/bin/dnsforwarder") then
o:value("2", translate("Use dnsforwarder query and cache"))
end
if nixio.fs.access("/usr/bin/AdGuardHome") then
o:value("3", translate("Use AdGuardHome query and cache"))
end
o.default = 1
o:depends("dns", 1)
o = s:option(Value, "dns_server", translate("Upsteam DNS Server"))
o.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"
o.description = translate("Muitiple DNS server can saperate with ','")
o:depends("dnscache_enable", 1)
o:depends("dnscache_enable", 2)
o = s:option(Value, "ipv6dns_server", translate("Upsteam IPV6 DNS Server"))
o.default = "2001:4860:4860::8888,2001:4860:4860::8844,2001:2001::1111,2001:2001::1001,2400:da00::6666,240C::6666,240C::6644"
o.description = translate("Muitiple IPV6 DNS server can saperate with ','")
o:depends("dnscache_enable", 2)
return m

View File

@ -1,27 +0,0 @@
<fieldset class="cbi-section">
<legend><%:Running Status%></legend>
<table width="100%" cellspacing="10" id="_xlnetacc_status_table">
<tr><td width="33%">FLOW 加速状态</td><td id="_run_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">TCP拥塞控制算法</td><td id="_down_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">FULLCONE NAT加速</td><td id="_up_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">DNS 加速</td><td id="_dns_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">AdGuardHome 去广告</td><td id="_ad_state"><em><%:Collecting data...%></em></td></tr>
</table>
</fieldset>
<script type="text/javascript">//<![CDATA[
var run_state = document.getElementById('_run_state');
var down_state = document.getElementById('_down_state');
var up_state = document.getElementById('_up_state');
var dns_state = document.getElementById('_dns_state');
var ad_state = document.getElementById('_ad_state');
XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "flowoffload", "status")%>', null, function(x, status) {
if ( x && x.status == 200 ) {
run_state.innerHTML = status.run_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
down_state.innerHTML = status.down_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
up_state.innerHTML = status.up_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
dns_state.innerHTML = status.dns_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
ad_state.innerHTML = status.ad_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
}
});
//]]></script>

View File

@ -1,57 +0,0 @@
msgid "Flow Offload ACC"
msgstr "Flow Offload 转发加速"
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 BBR"
msgstr "启用 BBR"
msgid "Bottleneck Bandwidth and Round-trip propagation time (BBR)"
msgstr "使用BBR拥塞控制算法可以加强TCP应用表现"
msgid "DNS Acceleration"
msgstr "DNS 加速"
msgid "Enable DNS Cache Acceleration and anti ISP DNS pollution"
msgstr "启用DNS多线程查询、缓存并防止ISP的DNS广告和域名劫持"
msgid "Resolve Dns Mode"
msgstr "DNS解析方式"
msgid "Use Pdnsd query and cache"
msgstr "使用pdnsd解析"
msgid "Use dnsforwarder query and cache"
msgstr "使用dnsforwarder解析"
msgid "Use AdGuardHome query and cache"
msgstr "使用AdGuardHome解析去广告"
msgid "Upsteam DNS Server"
msgstr "上游 DNS 服务器(国内)"
msgid "Upsteam IPV6 DNS Server"
msgstr "上游 IPV6 DNS 服务器"
msgid "Muitiple DNS server can saperate with ','"
msgstr "支持多个上游DNS服务器用','分隔(注意用英文逗号).请填写您最快的DNS服务器"
msgid "Muitiple IPV6 DNS server can saperate with ','"
msgstr "支持dnsforwarder解析多个上游IPV6 DNS服务器用','分隔(注意用英文逗号).请填写您最快的DNS服务器"
msgid "AdGuardHome's login username/passwd: AdGuardHome, web console addr: IP:3001"
msgstr "AdGuardHome 网页控制台地址IP:3001 登录账号/密码AdGuardHome"

View File

@ -1,9 +0,0 @@
config flow
option bbr '0'
option dns '0'
option dnscache_enable '1'
option dns_server '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 ipv6dns_server '240c::6666,240c::6644,2001:da8::666,2001:da8:202:10::36,2001:da8:8000:1:202:120:2:100'

View File

@ -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

View File

@ -1,50 +0,0 @@
#!/bin/sh
sleeptime=60
logfile="/var/log/dnscache.file"
adg_logfile="/etc/AdGuardHome/data/querylog.json"
dns_enable=$(uci get flowoffload.@flow[0].dns 2>/dev/null)
dnscache_enable=$(uci get flowoffload.@flow[0].dnscache_enable 2>/dev/null)
clean_log(){
logrow=$(grep -c "" ${logfile})
if [ $logrow -ge 500 ];then
cat /dev/null > ${logfile}
echo "$curtime Log条数超限清空处理" >> ${logfile}
fi
if [ $dnscache_enable = "3" ];then
adg_logrow=$(grep -c "" ${adg_logfile})
if [ $adg_logrow -ge 500 ];then
cat /dev/null > ${adg_logfile}
echo "$curtime Log条数超限清空处理" >> ${adg_logfile}
fi
fi
}
while [ $dns_enable -eq 1 ];
do
curtime=`date "+%H:%M:%S"`
echo "$curtime online! "
if [ $dns_enable -eq 1 ]; then
if [ $dnscache_enable = "3" ];then
if ! pidof AdGuardHome>/dev/null;then
AdGuardHome -c /etc/AdGuardHome/AdGuardHome.yaml -w /etc/AdGuardHome &
echo "$curtime 重启服务!" >> ${logfile}
fi
else
if ! pidof dnscache>/dev/null; then
if [ $dnscache_enable = "1" ];then
/usr/sbin/dnscache -c /var/etc/dnscache.conf &
elif [ $dnscache_enable = "2" ];then
dnscache -f /var/run/dnscache/dnscache.conf &
fi
echo "$curtime 重启服务!" >> ${logfile}
fi
fi
fi
clean_log
sleep ${sleeptime}
continue
done

View File

@ -1,11 +0,0 @@
{
"luci-app-flowoffload": {
"description": "Grant UCI access for luci-app-flowoffload",
"read": {
"uci": [ "flowoffload" ]
},
"write": {
"uci": [ "flowoffload" ]
}
}
}

View File

@ -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

View File

@ -1,44 +0,0 @@
module("luci.controller.sfe", package.seeall)
function index()
if not nixio.fs.access("/etc/config/sfe") then
return
end
local page
page = entry({"admin", "network", "sfe"}, cbi("sfe"), _("Turbo ACC Center"), 100)
page.i18n = "sfe"
page.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("[ x$(uci get sfe.config.dnscache_enable 2>/dev/null) != x3 ] && pgrep dnscache >/dev/null || pgrep AdGuardHome >/dev/null") == 0
end
local function is_ad()
return luci.sys.call("pgrep AdGuardHome >/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(),
ad_state = is_ad()
})
end

View File

@ -1,67 +0,0 @@
local trport = 3001
local button = ""
if luci.sys.call("pidof AdGuardHome >/dev/null") == 0 then
button = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"button\" value=\" " .. translate("Open Web Interface") .. " \" onclick=\"window.open('http://'+window.location.hostname+':" .. trport .. "')\"/>"
end
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)
ipv6 = s:option(Flag, "ipv6", translate("IPv6 Acceleration"))
ipv6.default = 0
ipv6.rmempty = false
ipv6.description = translate("Enable IPv6 Acceleration")
ipv6:depends("enabled", 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(ListValue, "dnscache_enable", translate("Resolve Dns Mode"), translate("AdGuardHome's login username/passwd: AdGuardHome, web console addr: IP:3001") .. button)
o:value("1", translate("Use Pdnsd query and cache"))
if nixio.fs.access("/usr/bin/dnsforwarder") then
o:value("2", translate("Use dnsforwarder query and cache"))
end
if nixio.fs.access("/usr/bin/AdGuardHome") then
o:value("3", translate("Use AdGuardHome query and cache"))
end
o.default = 1
o:depends("dns", 1)
o = s:option(Value, "dns_server", translate("Upsteam DNS Server"))
o.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"
o.description = translate("Muitiple DNS server can saperate with ','")
o:depends("dnscache_enable", 1)
o:depends("dnscache_enable", 2)
o = s:option(Value, "ipv6dns_server", translate("Upsteam IPV6 DNS Server"))
o.default = "2001:4860:4860::8888,2001:4860:4860::8844,2001:2001::1111,2001:2001::1001,2400:da00::6666,240C::6666,240C::6644"
o.description = translate("Muitiple IPV6 DNS server can saperate with ','")
o:depends("dnscache_enable", 2)
return m

View File

@ -1,27 +0,0 @@
<fieldset class="cbi-section">
<legend><%:Running Status%></legend>
<table width="100%" cellspacing="10" id="_xlnetacc_status_table">
<tr><td width="33%">SFE 加速状态</td><td id="_run_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">BBR 加速</td><td id="_down_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">FULLCONE NAT加速</td><td id="_up_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">DNS 加速</td><td id="_dns_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%">AdGuardHome 去广告</td><td id="_ad_state"><em><%:Collecting data...%></em></td></tr>
</table>
</fieldset>
<script type="text/javascript">//<![CDATA[
var run_state = document.getElementById('_run_state');
var down_state = document.getElementById('_down_state');
var up_state = document.getElementById('_up_state');
var dns_state = document.getElementById('_dns_state');
var ad_state = document.getElementById('_ad_state');
XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "sfe", "status")%>', null, function(x, status) {
if ( x && x.status == 200 ) {
run_state.innerHTML = status.run_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
down_state.innerHTML = status.down_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
up_state.innerHTML = status.up_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
dns_state.innerHTML = status.dns_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
ad_state.innerHTML = status.ad_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
}
});
//]]></script>

View File

@ -1,81 +0,0 @@
msgid "SFE Acceleration"
msgstr "SFE 转发加速"
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应用表现"
msgid "DNS Acceleration"
msgstr "DNS 加速"
msgid "Enable DNS Cache Acceleration and anti ISP DNS pollution"
msgstr "启用DNS多线程查询、缓存并防止ISP的DNS广告和域名劫持"
msgid "Resolve Dns Mode"
msgstr "DNS解析方式"
msgid "Enable dnsmasq killqqad"
msgstr "启用dnsmasq去广告"
msgid "dnsmasq killqqad"
msgstr "dnsmasq去广告"
msgid "Use Pdnsd query and cache"
msgstr "使用pdnsd解析"
msgid "Use dnsforwarder query and cache"
msgstr "使用dnsforwarder解析"
msgid "Use AdGuardHome query and cache"
msgstr "使用AdGuardHome解析去广告"
msgid "Upsteam DNS Server"
msgstr "上游 DNS 服务器(国内)"
msgid "Upsteam IPV6 DNS Server"
msgstr "上游 IPV6 DNS 服务器"
msgid "Muitiple DNS server can saperate with ','"
msgstr "支持多个上游DNS服务器用','分隔(注意用英文逗号).请填写您最快的DNS服务器"
msgid "Muitiple IPV6 DNS server can saperate with ','"
msgstr "支持dnsforwarder解析多个上游IPV6 DNS服务器用','分隔(注意用英文逗号).请填写您最快的DNS服务器"
msgid "AdGuardHome's login username/passwd: AdGuardHome, web console addr: IP:3001"
msgstr "AdGuardHome 网页控制台地址IP:3001 登录账号/密码AdGuardHome"

View File

@ -1,11 +0,0 @@
config sfe 'config'
option enabled '1'
option ipv6 '0'
option wifi '0'
option bbr '0'
option dns '0'
option dnscache_enable '1'
option dns_server '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 ipv6dns_server '240c::6666,240c::6644,2001:da8::666,2001:da8:202:10::36,2001:da8:8000:1:202:120:2:100'

View File

@ -1,299 +0,0 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2007-2012 OpenWrt.org
START=90
USE_PROCD=1
DNSMASQ_RESTART=N
DNS_SERVER="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"
IPV6DNS_SERVER="240c::6666,240c::6644,2001:da8::666,2001:da8:202:10::36,2001:da8:8000:1:202:120:2:100"
lan_addr=$(uci get network.lan.ipaddr)
start_pdnsd() {
DNS_SERVER=$(uci get sfe.config.dns_server 2>/dev/null)
cp -a /usr/sbin/pdnsd /usr/sbin/dnscache
sleep 1
[ -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 > /var/etc/dnscache.conf <<EOF
global {
perm_cache=1024; # dns缓存大小单位KB建议不要写的太大
cache_dir="/var/dnscache"; # 缓存文件的位置
pid_file = /var/run/dnscache.pid;
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 ] || cp -a /usr/sbin/pdnsd /var/sbin/dnscache
/usr/sbin/dnscache -c /var/etc/dnscache.conf &
echo "Start DNS Cache"
}
start_dnsforwarder() {
DNS_SERVER=$(uci get sfe.config.dns_server 2>/dev/null)
IPV6DNS_SERVER=$(uci get sfe.config.ipv6dns_server 2>/dev/null)
dnscache_enable=$(uci get sfe.config.dnscache_enable 2>/dev/null)
if [ $dnscache_enable = "2" ]; then
localserver=0.0.0.0:5333
elif [ $dnscache_enable = "3" ]; then
localserver=0.0.0.0:5383
fi
cp -a /usr/bin/dnsforwarder /usr/sbin/dnscache
sleep 1
DNSCACHE_CONF=/var/run/dnscache/dnscache.conf
PID_PATH=/var/run/dnscache
PID_FILE=dns.pid
mkdir -p $PID_PATH
pid=`ps | awk '$5 ~ /\[dnscache\]/ {print $1}'`
cat > /var/run/dnscache/dnscache.conf <<EOF
LogOn false
LogFileThresholdLength 102400
LogFileFolder /var/run/dnscache
UDPLocal $localserver
UDPGroup $DNS_SERVER,$IPV6DNS_SERVER * on
GroupFile
BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75,69.63.187.12,31.13.76.8,31.13.64.49
IPSubstituting
BlockNegativeResponse false
Hosts
HostsUpdateInterval 18000
HostsDownloadPath
HostsScript
HostsRetryInterval 30
AppendHosts
BlockIpv6WhenIpv4Exists false
UseCache true
CacheSize 1048576
MemoryCache true
CacheFile
IgnoreTTL false
OverrideTTL -1
MultipleTTL 1
ReloadCache false
OverwriteCache false
DisabledType
DisabledDomain
DisabledList
DomainStatistic false
DomainStatisticTempletFile
StatisticUpdateInterval 29
EOF
dnscache -f $DNSCACHE_CONF &
echo "Start DNS Cache"
}
stop_dnscache() {
kill $(pidof AdGuardHome) >/dev/null 2>&1 || kill -9 $(ps | grep AdGuardHome | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
kill $(pidof dnscache) >/dev/null 2>&1 || kill -9 $(ps | grep dnscache | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
rm -rf /var/run/dnscache
rm -rf /var/dnscache
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].noresolv=1
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.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)
dnscache_enable=$(uci get sfe.config.dnscache_enable 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
kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
stop_dnscache
sleep 1
rm -f /var/log/dnscache.file
rm -f /etc/AdGuardHome/data/querylog.json*
if [ $dnscache_enable = "1" ]; then
start_pdnsd
elif [ $dnscache_enable = "2" ]; then
start_dnsforwarder
elif [ $dnscache_enable = "3" ]; then
AdGuardHome -c /etc/AdGuardHome/AdGuardHome.yaml -w /etc/AdGuardHome -h ${lan_addr} -p 3001 --no-check-update &
fi
change_dns
nohup /usr/share/dnscache/dnscache-while.sh > /var/log/dnscache.file 2>&1 &
else
stop_dnscache
revert_dns
kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
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
stop_dnscache
revert_dns
kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
if [ "$DNSMASQ_RESTART" = N ]; then
/etc/init.d/dnsmasq restart
fi
}
reload_service(){
DNSMASQ_RESTART=Y
stop
start
/etc/init.d/dnsmasq restart && echo "DNSMASQ restart"
}
service_triggers()
{
procd_add_reload_trigger "sfe"
}

View File

@ -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

View File

@ -1,50 +0,0 @@
#!/bin/sh
sleeptime=30
logfile="/var/log/dnscache.file"
adg_logfile="/etc/AdGuardHome/data/querylog.json"
dns_enable=$(uci get sfe.config.dns 2>/dev/null)
dnscache_enable=$(uci get sfe.config.dnscache_enable 2>/dev/null)
lan_addr=$(uci get network.lan.ipaddr)
clean_log(){
logrow=$(grep -c "" ${logfile})
if [ $logrow -ge 500 ];then
cat /dev/null > ${logfile}
echo "$curtime Log条数超限清空处理" >> ${logfile}
fi
if [ $dnscache_enable = "3" ];then
adg_logrow=$(grep -c "" ${adg_logfile})
if [ $adg_logrow -ge 500 ];then
cat /dev/null > ${adg_logfile}
echo "$curtime Log条数超限清空处理" >> ${adg_logfile}
fi
fi
}
while [ $dns_enable -eq 1 ];
do
curtime=`date "+%H:%M:%S"`
echo "$curtime online! "
if [ $dns_enable -eq 1 ]; then
if [ $dnscache_enable = "3" ]; then
if ! pidof AdGuardHome>/dev/null; then
AdGuardHome -c /etc/AdGuardHome/AdGuardHome.yaml -w /etc/AdGuardHome -h ${lan_addr} -p 3001 --no-check-update &
echo "$curtime 重启服务!" >> ${logfile}
fi
else
if ! pidof dnscache>/dev/null; then
if [ $dnscache_enable = "1" ]; then
/usr/sbin/dnscache -c /var/etc/dnscache.conf &
elif [ $dnscache_enable = "2" ]; then
dnscache -f /var/run/dnscache/dnscache.conf &
fi
echo "$curtime 重启服务!" >> ${logfile}
fi
fi
fi
sleep ${sleeptime}
continue
done

View File

@ -1,11 +0,0 @@
{
"luci-app-sfe": {
"description": "Grant UCI access for luci-app-sfe",
"read": {
"uci": [ "sfe" ]
},
"write": {
"uci": [ "sfe" ]
}
}
}

View File

@ -0,0 +1,50 @@
# 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 / Shortcut-FE
LUCI_DEPENDS:=+pdnsd-alt \
+PACKAGE_luci-app-turboacc_INCLUDE_shortcut-fe:kmod-fast-classifier \
+PACKAGE_luci-app-turboacc_INCLUDE_flow-offload:kmod-ipt-offload \
+PACKAGE_luci-app-turboacc_INCLUDE_bbr:kmod-tcp-bbr \
+PACKAGE_luci-app-turboacc_INCLUDE_adguardhome:AdGuardHome \
+PACKAGE_luci-app-turboacc_INCLUDE_dnsforwarder:dnsforwarder
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-turboacc
PKG_VERSION:=1.0
PKG_RELEASE:=1
PKG_LICENSE:=GPLv3.0+
define Package/luci-app-turboacc/config
config PACKAGE_luci-app-turboacc_INCLUDE_shortcut-fe
bool "Include Shortcut-FE"
depends on PACKAGE_luci-app-turboacc_INCLUDE_flow-offload=n
default y if LINUX_4_9
default n
config PACKAGE_luci-app-turboacc_INCLUDE_flow-offload
bool "Include Flow Offload"
depends on !LINUX_4_9
default y
config PACKAGE_luci-app-turboacc_INCLUDE_bbr
bool "Include BBR"
default n if LINUX_4_9
default y
config PACKAGE_luci-app-turboacc_INCLUDE_adguardhome
bool "Include AdGuardHome"
default n
config PACKAGE_luci-app-turboacc_INCLUDE_dnsforwarder
bool "Include DnsForwarder"
default n
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,44 @@
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("[ 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("[ x$(cat /sys/module/xt_FULLCONENAT/refcnt 2>/dev/null) != x0 ]") == 0
end
local function dnscaching_status()
return luci.sys.call("[ x$(uci -q get turboacc.config.dns_caching_mode) != x3 ] && pgrep dnscache >/dev/null || pgrep AdGuardHome >/dev/null") == 0
end
local function adguardhome_status()
return luci.sys.call("pgrep AdGuardHome >/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(),
adguardhome_state = adguardhome_status()
})
end

View File

@ -0,0 +1,92 @@
local ipkg = require('luci.model.ipkg')
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
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 mt7621")
hw_flow:depends("sw_flow", 1)
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 ipkg.installed("ip6tables") 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("Enable BBR CCA"))
bbr_cca.default = 0
bbr_cca.rmempty = false
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("Enable FullCone NAT"))
fullcone_nat.default = 0
fullcone_nat.rmempty = false
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("AdGuardHome login username/password: AdGuardHome/AdGuardHome"))
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/AdGuardHome") then
dns_caching_mode:value("3", translate("Using AdGuardHome 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

View File

@ -0,0 +1,33 @@
<fieldset class="cbi-section">
<legend><%:Running Status%></legend>
<table width="100%" cellspacing="10" id="_turboacc_status_table">
<tr><td width="33%"><%:Flow Offloading%></td><td id="_fastpath_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%"><%:BBR CCA%></td><td id="_bbr_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%"><%:FullCone NAT%></td><td id="_fullconenat_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%"><%:DNS Caching%></td><td id="_dnscaching_state"><em><%:Collecting data...%></em></td></tr>
<tr><td width="33%"><%:AdGuardHome Anti-AD%></td><td id="_adguardhome_state"><em><%:Collecting data...%></em></td></tr>
</table>
</fieldset>
<script type="text/javascript">//<![CDATA[
var fastpath_state = document.getElementById('_fastpath_state');
var bbr_state = document.getElementById('_bbr_state');
var fullconenat_state = document.getElementById('_fullconenat_state');
var dnscaching_state = document.getElementById('_dnscaching_state');
var adguardhome_state = document.getElementById('_adguardhome_state');
XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "turboacc", "status")%>', null, function(x, status) {
if ( x && x.status == 200 ) {
fastpath_state.innerHTML = status.fastpath_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
bbr_state.innerHTML = status.bbr_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
fullconenat_state.innerHTML = status.fullconenat_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
dnscaching_state.innerHTML = status.dnscaching_state ? '<em><b><font color=green><%:RUNNING%></font></b></em>' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
adguardhome_state.innerHTML = status.adguardhome_state ? '<em><b><font color=green><%:RUNNING%></font></b></em><input class="cbi-button mar-10" type="button" value="<%:Open Web Interface%>" onclick="openwebui();" />' : '<em><b><font color=red><%:NOT RUNNING%></font></b></em>';
}
});
function openwebui() {
var url = window.location.host+":3001";
window.open('http://'+url,'target','');
};
//]]>
//]]></script>

View File

@ -0,0 +1,110 @@
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 mt7621"
msgstr "需要硬件 NAT 支持。目前 mt7621 已实现"
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 "Enable BBR CCA"
msgstr "启用 BBR 拥塞控制算法"
msgid "Using BBR CCA can improve TCP network performance effectively"
msgstr "使用 BBR 拥塞控制算法可以有效提升 TCP 网络性能"
msgid "Enable 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 "Using PDNSD to query and cache"
msgstr "使用 PDNSD 解析"
msgid "Using DNSForwarder to query and cache"
msgstr "使用 DNSForwarder 解析"
msgid "Using AdGuardHome to query and cache"
msgstr "使用 AdGuardHome 解析"
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 "AdGuardHome login username/password: AdGuardHome/AdGuardHome"
msgstr "AdGuardHome 登录账号/密码AdGuardHome/AdGuardHome"
msgid "Flow Offloading"
msgstr "流量分载"
msgid "BBR CCA"
msgstr "BBR 拥塞控制算法"
msgid "FullCone NAT"
msgstr "全锥型 NAT"
msgid "DNS Caching"
msgstr "DNS 缓存"
msgid "AdGuardHome Anti-AD"
msgstr "AdGuardHome 去广告"
msgid "Open Web Interface"
msgstr "打开 Web 界面"

View File

@ -0,0 +1,14 @@
config turboacc 'config'
option sw_flow '1'
option hw_flow '0'
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'

View File

@ -2,24 +2,32 @@
# Copyright (c) 2011-2015 OpenWrt.org
START=90
STOP=15
STOP=10
DNSMASQ_RESTART=N
DNS_SERVER="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"
IPV6DNS_SERVER="240c::6666,240c::6644,2001:da8::666,2001:da8:202:10::36,2001:da8:8000:1:202:120:2:100"
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"
config_load "network"
config_get "lan_addr" "lan" "ipaddr" "192.168.1.1"
}
start_pdnsd() {
DNS_SERVER=$(uci get flowoffload.@flow[0].dns_server 2>/dev/null)
cp -a /usr/sbin/pdnsd /usr/sbin/dnscache
[ -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 > /var/etc/dnscache.conf <<EOF
[ -d "/var/etc" ] || mkdir -p "/var/etc"
cat > "/var/etc/dnscache.conf" <<EOF
global {
perm_cache=1024; # dns缓存大小单位KB建议不要写的太大
cache_dir="/var/dnscache"; # 缓存文件的位置
@ -38,7 +46,7 @@ global {
server {
label = "routine";
ip = $DNS_SERVER; # 这里为主要上级 dns 的 ip 地址建议填写一个当地最快的DNS地址
ip = ${dns_caching_v4_dns}; # 这里为主要上级 dns 的 ip 地址建议填写一个当地最快的DNS地址
timeout = 5; # DNS请求超时时间
reject = 74.125.127.102, # 以下是脏IP也就是DNS污染一般会返回的结果如果收到如下DNS结果会触发二次请求TCP协议一般不会碰到脏IP
74.125.155.102,
@ -125,36 +133,25 @@ rr {
}
EOF
[ -d /var/sbin ] || mkdir -p /var/sbin
[ -f /var/sbin/dnscache ] || cp -a /usr/sbin/pdnsd /var/sbin/dnscache
/usr/sbin/dnscache -c /var/etc/dnscache.conf &
echo "Start DNS Cache"
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
[ -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() {
DNS_SERVER=$(uci get flowoffload.@flow[0].dns_server 2>/dev/null)
IPV6DNS_SERVER=$(uci get flowoffload.@flow[0].ipv6dns_server 2>/dev/null)
dnscache_enable=$(uci get flowoffload.@flow[0].dnscache_enable 2>/dev/null)
if [ $dnscache_enable = "2" ]; then
localserver=$(echo -e "127.0.0.1:5333")
elif [ $dnscache_enable = "3" ]; then
localserver=$(echo -e "127.0.0.1:5383")
fi
cp -a /usr/bin/dnsforwarder /usr/sbin/dnscache
sleep 1
DNSCACHE_CONF=/var/run/dnscache/dnscache.conf
PID_PATH=/var/run/dnscache
PID_FILE=dns.pid
mkdir -p $PID_PATH
pid=`ps | awk '$5 ~ /\[dnscache\]/ {print $1}'`
mkdir -p "/var/run/dnscache"
cat > /var/run/dnscache/dnscache.conf <<EOF
LogOn false
LogFileThresholdLength 102400
LogFileFolder /var/run/dnscache
UDPLocal $localserver
UDPGroup $DNS_SERVER,$IPV6DNS_SERVER * on
UDPLocal 127.0.0.1:5333
UDPGroup ${dns_caching_v4_dns},${dns_caching_v6_dns} * on
GroupFile
BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75,69.63.187.12,31.13.76.8,31.13.64.49
IPSubstituting
@ -182,90 +179,120 @@ DomainStatistic false
DomainStatisticTempletFile
StatisticUpdateInterval 29
EOF
dnscache -f $DNSCACHE_CONF &
echo "Start DNS Cache"
[ -d "/var/sbin" ] || mkdir -p "/var/sbin" && cp -a "/usr/bin/dnsforwarder" "/var/sbin/dnscache"
/var/sbin/dnscache -f "/var/run/dnscache/dnscache.conf" &
echo "DnsForwarder: Start DNS Caching"
}
stop_dnscache() {
kill $(pidof AdGuardHome) >/dev/null 2>&1 || kill -9 $(ps | grep AdGuardHome | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
kill $(pidof dnscache) >/dev/null 2>&1 || kill -9 $(ps | grep dnscache | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
kill -9 $(ps | grep dnscache-while.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
rm -rf /var/run/dnscache
rm -rf /var/dnscache
echo "Stop DNS Cache"
killall -9 "AdGuardHome" 2>/dev/null
killall -9 "dnscache" 2>/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 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].noresolv=1
uci delete dhcp.@dnsmasq[0].server 2>/dev/null
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 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 del_list dhcp.@dnsmasq[0].server="127.0.0.1#5333" 2>/dev/null
uci set dhcp.@dnsmasq[0].resolvfile="/tmp/resolv.conf.d/resolv.conf.auto"
uci set dhcp.@dnsmasq[0].noresolv="0"
uci commit dhcp
}
start(){
dns=$(uci get flowoffload.@flow[0].dns 2>/dev/null)
dnscache_enable=$(uci get flowoffload.@flow[0].dnscache_enable 2>/dev/null)
bbr=$(uci get flowoffload.@flow[0].bbr 2>/dev/null)
inital_conf
if [ $dns -eq 1 ]; then
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}" -eq "1" ] && {
lsmod | grep -q fast_classifier || modprobe fast_classifier 2>/dev/null
echo "${sfe_bridge}" > "/sys/fast_classifier/skip_to_bridge_ingress"
if [ "${sfe_ipv6}" -eq "1" ]; then
[ ! -f "/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 -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
rm -f /etc/AdGuardHome/data/querylog.json*
if [ $dnscache_enable = "1" ]; then
rm -f "/var/log/dnscache.file"
rm -f "/etc/AdGuardHome/data/querylog.json*"
if [ "${dns_caching_mode}" = "1" ]; then
start_pdnsd
elif [ $dnscache_enable = "2" ]; then
elif [ "${dns_caching_mode}" = "2" ]; then
start_dnsforwarder
elif [ $dnscache_enable = "3" ]; then
lan_addr=$(uci get network.lan.ipaddr)
AdGuardHome -c /etc/AdGuardHome/AdGuardHome.yaml -w /etc/AdGuardHome -h ${lan_addr} -p 3001 --no-check-update &
elif [ "${dns_caching_mode}" = "3" ]; then
mkdir -p "/etc/AdGuardHome"
AdGuardHome -c "/etc/AdGuardHome/AdGuardHome.yaml" -w "/etc/AdGuardHome" -h "${lan_addr}" -p "3001" --no-check-update &
fi
change_dns
nohup /usr/share/dnscache/dnscache-while.sh > /var/log/dnscache.file 2>&1 &
nohup "/usr/share/dnscache/dnscache-while.sh" > "/var/log/dnscache.file" 2>&1 &
else
stop_dnscache
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 && echo "DNSMASQ change"
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(){
dns=$(uci get firewall.@defaults[0].dns 2>/dev/null)
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}" -eq "0" ] && {
echo "0" > "/sys/fast_classifier/skip_to_bridge_ingress"
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
uci commit firewall
if [ "$DNSMASQ_RESTART" = N ]; then
/etc/init.d/dnsmasq restart && echo "DNSMASQ revert"
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(){
DNSMASQ_RESTART=Y
restart_utils="false"
stop
start
/etc/init.d/dnsmasq restart && echo "DNSMASQ restart"
/etc/init.d/dnsmasq restart >/dev/null 2>&1 && echo "DNSMASQ restart"
/etc/init.d/firewall restart >/dev/null 2>&1
}

View File

@ -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

View File

@ -0,0 +1,46 @@
#!/bin/sh
sleeptime=60
logfile="/var/log/dnscache.file"
adg_logfile="/etc/AdGuardHome/data/querylog.json"
dns_caching="$(uci -q get turboacc.config.dns_caching)"
dns_caching_mode="$(uci -q get turboacc.config.dns_caching_mode 2>/dev/null)"
lan_addr="$(uci get network.lan.ipaddr)"
clean_log(){
logrow="$(grep -c "" "${logfile}")"
if [ "${logrow}" -ge "500" ];then
echo "${curtime} Log条数超限清空处理" > "${logfile}"
fi
if [ "${dns_caching_mode}" = "3" ]; then
adg_logrow="$(grep -c "" "${adg_logfile}")"
if [ "${adg_logrow}" -ge "500" ];then
echo "${curtime} Log条数超限清空处理" > "${adg_logfile}"
fi
fi
}
while [ "${dns_caching}" -eq "1" ];
do
curtime="$(date "+%H:%M:%S")"
echo "${curtime} online!"
if [ "${dns_caching_mode}" = "3" ]; then
pidof AdGuardHome>/dev/null || {
AdGuardHome -c "/etc/AdGuardHome/AdGuardHome.yaml" -w "/etc/AdGuardHome" -h "${lan_addr}" -p "3001" --no-check-update &
echo "${curtime} 重启服务!" >> ${logfile}
}
else
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}
}
fi
clean_log
sleep "${sleeptime}"
continue
done

View File

@ -0,0 +1,11 @@
{
"luci-app-turboacc": {
"description": "Grant UCI access for luci-app-turboacc",
"read": {
"uci": [ "turboacc" ]
},
"write": {
"uci": [ "turboacc" ]
}
}
}