luci-app-turboacc: merge offload and sfe into one package
This commit is contained in:
parent
ced8e6dbe6
commit
9fab33305e
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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 = " <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
|
||||
@ -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>
|
||||
@ -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"
|
||||
|
||||
@ -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'
|
||||
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
{
|
||||
"luci-app-flowoffload": {
|
||||
"description": "Grant UCI access for luci-app-flowoffload",
|
||||
"read": {
|
||||
"uci": [ "flowoffload" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "flowoffload" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -1,67 +0,0 @@
|
||||
local trport = 3001
|
||||
local button = ""
|
||||
if luci.sys.call("pidof AdGuardHome >/dev/null") == 0 then
|
||||
button = " <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
|
||||
@ -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>
|
||||
@ -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"
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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"
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -1,11 +0,0 @@
|
||||
{
|
||||
"luci-app-sfe": {
|
||||
"description": "Grant UCI access for luci-app-sfe",
|
||||
"read": {
|
||||
"uci": [ "sfe" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "sfe" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
50
package/lean/luci-app-turboacc/Makefile
Normal file
50
package/lean/luci-app-turboacc/Makefile
Normal 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
|
||||
@ -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
|
||||
92
package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua
Normal file
92
package/lean/luci-app-turboacc/luasrc/model/cbi/turboacc.lua
Normal 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
|
||||
@ -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>
|
||||
110
package/lean/luci-app-turboacc/po/zh_Hans/turboacc.po
Normal file
110
package/lean/luci-app-turboacc/po/zh_Hans/turboacc.po
Normal 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 界面"
|
||||
14
package/lean/luci-app-turboacc/root/etc/config/turboacc
Normal file
14
package/lean/luci-app-turboacc/root/etc/config/turboacc
Normal 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'
|
||||
@ -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
|
||||
}
|
||||
10
package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc
Executable file
10
package/lean/luci-app-turboacc/root/etc/uci-defaults/turboacc
Executable 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
|
||||
46
package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh
Executable file
46
package/lean/luci-app-turboacc/root/usr/share/dnscache/dnscache-while.sh
Executable 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
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"luci-app-turboacc": {
|
||||
"description": "Grant UCI access for luci-app-turboacc",
|
||||
"read": {
|
||||
"uci": [ "turboacc" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "turboacc" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user