mirror of
https://github.com/kenzok8/openwrt-packages.git
synced 2025-01-05 10:16:44 +08:00
update 2023-02-03 17:07:36
This commit is contained in:
parent
5db1fc767e
commit
e01a3beeb4
@ -1,16 +1,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-mosdns
|
||||
PKG_VERSION:=1.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_RELEASE:=2
|
||||
|
||||
LUCI_TITLE:=LuCI Support for mosdns
|
||||
LUCI_PKGARCH:=all
|
||||
LUCI_DEPENDS:=+mosdns-v5 +jsonfilter +bash +luci-compat +zoneinfo-asia
|
||||
LUCI_DEPENDS:=+mosdns +jsonfilter +luci-compat +curl +v2ray-geoip +v2ray-geosite
|
||||
|
||||
define Package/$(PKG_NAME)/conffiles
|
||||
/etc/mosdns/cus_config.yaml
|
||||
/etc/config/mosdns
|
||||
/etc/mosdns/config_custom.yaml
|
||||
/etc/mosdns/rule
|
||||
endef
|
||||
|
||||
|
@ -4,11 +4,11 @@ function index()
|
||||
if not nixio.fs.access("/etc/config/mosdns") then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local page = entry({"admin", "services", "mosdns"}, alias("admin", "services", "mosdns", "basic"), _("MosDNS"), 30)
|
||||
page.dependent = true
|
||||
page.acl_depends = { "luci-app-mosdns" }
|
||||
|
||||
|
||||
entry({"admin", "services", "mosdns", "basic"}, cbi("mosdns/basic"), _("Basic Setting"), 1).leaf = true
|
||||
entry({"admin", "services", "mosdns", "rule_list"}, cbi("mosdns/rule_list"), _("Rule List"), 2).leaf = true
|
||||
entry({"admin", "services", "mosdns", "update"}, cbi("mosdns/update"), _("Geodata Update"), 3).leaf = true
|
||||
@ -16,6 +16,7 @@ function index()
|
||||
entry({"admin", "services", "mosdns", "status"}, call("act_status")).leaf = true
|
||||
entry({"admin", "services", "mosdns", "get_log"}, call("get_log")).leaf = true
|
||||
entry({"admin", "services", "mosdns", "clear_log"}, call("clear_log")).leaf = true
|
||||
entry({"admin", "services", "mosdns", "geo_update"}, call("geo_update")).leaf = true
|
||||
end
|
||||
|
||||
function act_status()
|
||||
@ -26,9 +27,16 @@ function act_status()
|
||||
end
|
||||
|
||||
function get_log()
|
||||
luci.http.write(luci.sys.exec("cat $(/etc/mosdns/lib.sh logfile)"))
|
||||
luci.http.write(luci.sys.exec("cat $(/usr/share/mosdns/mosdns.sh logfile)"))
|
||||
end
|
||||
|
||||
function clear_log()
|
||||
luci.sys.call("true > $(/etc/mosdns/lib.sh logfile)")
|
||||
luci.sys.call("cat /dev/null > $(/usr/share/mosdns/mosdns.sh logfile)")
|
||||
end
|
||||
|
||||
function geo_update()
|
||||
local e = {}
|
||||
e.updating = luci.sys.call("/usr/share/mosdns/mosdns.sh geodata >/dev/null") == 0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
|
@ -11,75 +11,126 @@ s.anonymous = true
|
||||
enable = s:option(Flag, "enabled", translate("Enable"))
|
||||
enable.rmempty = false
|
||||
|
||||
configfile = s:option(ListValue, "configfile", translate("MosDNS Config File"))
|
||||
configfile:value("./def_config.yaml", translate("Def Config"))
|
||||
configfile:value("./cus_config.yaml", translate("Cus Config"))
|
||||
configfile.default = "./def_config.yaml"
|
||||
configfile = s:option(ListValue, "configfile", translate("Config File"))
|
||||
configfile:value("/etc/mosdns/config.yaml", translate("Default Config"))
|
||||
configfile:value("/etc/mosdns/config_custom.yaml", translate("Custom Config"))
|
||||
configfile.default = "/etc/mosdns/config.yaml"
|
||||
|
||||
listenport = s:option(Value, "listen_port", translate("Listen port"))
|
||||
listenport.datatype = "and(port,min(1))"
|
||||
listenport.default = 5335
|
||||
listenport:depends( "configfile", "./def_config.yaml")
|
||||
listenport:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
loglv = s:option(ListValue, "loglv", translate("Log Level"))
|
||||
loglv:value("debug", translate("Debug"))
|
||||
loglv:value("info", translate("Info"))
|
||||
loglv:value("warn", translate("Warning"))
|
||||
loglv:value("error", translate("Error"))
|
||||
loglv.default = "error"
|
||||
loglv:depends( "configfile", "./def_config.yaml")
|
||||
loglevel = s:option(ListValue, "log_level", translate("Log Level"))
|
||||
loglevel:value("debug", translate("Debug"))
|
||||
loglevel:value("info", translate("Info"))
|
||||
loglevel:value("warn", translate("Warning"))
|
||||
loglevel:value("error", translate("Error"))
|
||||
loglevel.default = "info"
|
||||
loglevel:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
logfile = s:option(Value, "logfile", translate("MosDNS Log File"))
|
||||
logfile.placeholder = "/tmp/mosdns.txt"
|
||||
logfile.default = "/tmp/mosdns.txt"
|
||||
logfile:depends( "configfile", "./def_config.yaml")
|
||||
logfile = s:option(Value, "logfile", translate("Log File"))
|
||||
logfile.placeholder = "/tmp/mosdns.log"
|
||||
logfile.default = "/tmp/mosdns.log"
|
||||
logfile:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
remote_dns = s:option(Value, "remote_dns1", translate("Remote DNS"))
|
||||
remote_dns.default = "tls://8.8.4.4"
|
||||
remote_dns:value("tls://8.8.8.8", "8.8.8.8 (Google DNS)")
|
||||
remote_dns:value("tls://8.8.4.4", "8.8.4.4 (Google DNS)")
|
||||
remote_dns:value("tls://1.1.1.1", "1.1.1.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://1.0.0.1", "1.0.0.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)")
|
||||
remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)")
|
||||
remote_dns:value("tls://94.140.14.140", "94.140.14.140 (AdGuard)")
|
||||
remote_dns:value("tls://94.140.14.141", "94.140.14.141 (AdGuard)")
|
||||
remote_dns:depends( "configfile", "./def_config.yaml")
|
||||
remote_dns = s:option(Value, "remote_dns2", " ")
|
||||
remote_dns.default = "tls://1.0.0.1"
|
||||
remote_dns:value("tls://8.8.8.8", "8.8.8.8 (Google DNS)")
|
||||
remote_dns:value("tls://8.8.4.4", "8.8.4.4 (Google DNS)")
|
||||
remote_dns:value("tls://1.1.1.1", "1.1.1.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://1.0.0.1", "1.0.0.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)")
|
||||
remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)")
|
||||
remote_dns:value("tls://94.140.14.140", "94.140.14.140 (AdGuard)")
|
||||
remote_dns:value("tls://94.140.14.141", "94.140.14.141 (AdGuard)")
|
||||
remote_dns:depends( "configfile", "./def_config.yaml")
|
||||
|
||||
redirect = s:option(Flag, "redirect", translate("Enable DNS Redirect"))
|
||||
redirect:depends( "configfile", "./def_config.yaml")
|
||||
redirect = s:option(Flag, "redirect", translate("DNS Forward"), translate("Forward Dnsmasq Domain Name resolution requests to MosDNS"))
|
||||
redirect.default = true
|
||||
|
||||
custom_local_dns = s:option(Flag, "custom_local_dns", translate("Local DNS"), translate("Follow WAN interface DNS if not enabled"))
|
||||
custom_local_dns:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
custom_local_dns.default = false
|
||||
|
||||
custom_local_dns = s:option(DynamicList, "local_dns", translate("Upstream DNS servers"))
|
||||
custom_local_dns:value("119.29.29.29", "119.29.29.29 (DNSPod Primary)")
|
||||
custom_local_dns:value("119.28.28.28", "119.28.28.28 (DNSPod Secondary)")
|
||||
custom_local_dns:value("223.5.5.5", "223.5.5.5 (AliDNS Primary)")
|
||||
custom_local_dns:value("223.6.6.6", "223.6.6.6 (AliDNS Secondary)")
|
||||
custom_local_dns:value("114.114.114.114", "114.114.114.114 (114DNS Primary)")
|
||||
custom_local_dns:value("114.114.115.115", "114.114.115.115 (114DNS Secondary)")
|
||||
custom_local_dns:value("180.76.76.76", "180.76.76.76 (Baidu DNS)")
|
||||
custom_local_dns:depends("custom_local_dns", "1")
|
||||
|
||||
custom_local_dns = s:option(ListValue, "bootstrap_dns", translate("Bootstrap DNS servers"), translate("Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams"))
|
||||
custom_local_dns:value("119.29.29.29", "119.29.29.29 (DNSPod Primary)")
|
||||
custom_local_dns:value("119.28.28.28", "119.28.28.28 (DNSPod Secondary)")
|
||||
custom_local_dns:value("223.5.5.5", "223.5.5.5 (AliDNS Primary)")
|
||||
custom_local_dns:value("223.6.6.6", "223.6.6.6 (AliDNS Secondary)")
|
||||
custom_local_dns:value("114.114.114.114", "114.114.114.114 (114DNS Primary)")
|
||||
custom_local_dns:value("114.114.115.115", "114.114.115.115 (114DNS Secondary)")
|
||||
custom_local_dns:value("180.76.76.76", "180.76.76.76 (Baidu DNS)")
|
||||
custom_local_dns.default = "119.29.29.29"
|
||||
custom_local_dns:depends("custom_local_dns", "1")
|
||||
|
||||
remote_dns = s:option(DynamicList, "remote_dns", translate("Remote DNS"))
|
||||
remote_dns:value("tls://1.1.1.1", "1.1.1.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://1.0.0.1", "1.0.0.1 (CloudFlare DNS)")
|
||||
remote_dns:value("tls://8.8.8.8", "8.8.8.8 (Google DNS)")
|
||||
remote_dns:value("tls://8.8.4.4", "8.8.4.4 (Google DNS)")
|
||||
remote_dns:value("tls://9.9.9.9", "9.9.9.9 (Quad9 DNS)")
|
||||
remote_dns:value("tls://149.112.112.112", "149.112.112.112 (Quad9 DNS)")
|
||||
remote_dns:value("tls://45.11.45.11", "45.11.45.11 (DNS.SB)")
|
||||
remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)")
|
||||
remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)")
|
||||
remote_dns:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
remote_dns_pipeline = s:option(Flag, "enable_pipeline", translate("Remote DNS Connection Multiplexing"), translate("Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode"))
|
||||
remote_dns_pipeline.rmempty = false
|
||||
remote_dns_pipeline.default = false
|
||||
remote_dns_pipeline:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
cache_size = s:option(Value, "cache_size", translate("DNS Cache Size"))
|
||||
cache_size.datatype = "and(uinteger,min(0))"
|
||||
cache_size.default = "200000"
|
||||
cache_size:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
cache_size = s:option(Value, "cache_survival_time", translate("Cache Survival Time"))
|
||||
cache_size.datatype = "and(uinteger,min(0))"
|
||||
cache_size.default = "259200"
|
||||
cache_size:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
minimal_ttl = s:option(Value, "minimal_ttl", translate("Minimum TTL"))
|
||||
minimal_ttl.datatype = "and(uinteger,min(0))"
|
||||
minimal_ttl.datatype = "and(uinteger,max(3600))"
|
||||
minimal_ttl.default = "0"
|
||||
minimal_ttl:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
maximum_ttl = s:option(Value, "maximum_ttl", translate("Maximum TTL"))
|
||||
maximum_ttl.datatype = "and(uinteger,min(0))"
|
||||
maximum_ttl.default = "0"
|
||||
maximum_ttl:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
|
||||
adblock = s:option(Flag, "adblock", translate("Enable DNS ADblock"))
|
||||
adblock:depends( "configfile", "./def_config.yaml")
|
||||
adblock:depends( "configfile", "/etc/mosdns/config.yaml")
|
||||
adblock.default = false
|
||||
|
||||
set_config = s:option(Button, "set_config", translate("DNS Helper"))
|
||||
set_config.inputtitle = translate("Apply")
|
||||
set_config.inputstyle = "reload"
|
||||
set_config.description = translate("This will make the necessary adjustments to other plug-in settings.")
|
||||
set_config.write = function()
|
||||
luci.sys.exec("/etc/mosdns/set.sh &> /dev/null &")
|
||||
end
|
||||
set_config:depends( "configfile", "./def_config.yaml")
|
||||
adblock = s:option(Value, "ad_source", translate("ADblock Source"))
|
||||
adblock:depends("adblock", "1")
|
||||
adblock.default = "https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt"
|
||||
adblock:value("geosite.dat", "v2ray-geosite")
|
||||
adblock:value("https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt", "anti-AD")
|
||||
adblock:value("https://raw.githubusercontent.com/sjhgvr/oisd/main/dbl_basic.txt", "oisd (basic)")
|
||||
adblock:value("https://raw.githubusercontent.com/QiuSimons/openwrt-mos/master/dat/serverlist.txt", "QiuSimons/openwrt-mos")
|
||||
|
||||
unset_config = s:option(Button, "unset_config", translate("Revert Settings"))
|
||||
unset_config.inputtitle = translate("Apply")
|
||||
unset_config.inputstyle = "reload"
|
||||
unset_config.description = translate("This will revert the adjustments.")
|
||||
unset_config.write = function()
|
||||
luci.sys.exec("/etc/mosdns/set.sh unset &> /dev/null &")
|
||||
reload_service = s:option( Button, "_reload", translate("Reload Service"), translate("Reload service to take effect of new configuration"))
|
||||
reload_service.write = function()
|
||||
luci.sys.exec("/etc/init.d/mosdns reload")
|
||||
end
|
||||
reload_service:depends( "configfile", "/etc/mosdns/config_custom.yaml")
|
||||
|
||||
config = s:option(TextValue, "manual-config")
|
||||
config.description = translate("<font color=\"ff0000\"><strong>View the Custom YAML Configuration file used by this MosDNS. You can edit it as you own need.</strong></font>")
|
||||
config.template = "cbi/tvalue"
|
||||
config.rows = 25
|
||||
config:depends( "configfile", "/etc/mosdns/config_custom.yaml")
|
||||
|
||||
function config.cfgvalue(self, section)
|
||||
return nixio.fs.readfile("/etc/mosdns/config_custom.yaml")
|
||||
end
|
||||
|
||||
function config.write(self, section, value)
|
||||
value = value:gsub("\r\n?", "\n")
|
||||
nixio.fs.writefile("/etc/mosdns/config_custom.yaml", value)
|
||||
end
|
||||
|
||||
return m
|
||||
|
@ -2,9 +2,10 @@ local datatypes = require "luci.cbi.datatypes"
|
||||
|
||||
local white_list_file = "/etc/mosdns/rule/whitelist.txt"
|
||||
local block_list_file = "/etc/mosdns/rule/blocklist.txt"
|
||||
local grey_list_file = "/etc/mosdns/rule/greylist.txt"
|
||||
local hosts_list_file = "/etc/mosdns/rule/hosts.txt"
|
||||
local redirect_list_file = "/etc/mosdns/rule/redirect.txt"
|
||||
local cus_config_file = "/etc/mosdns/cus_config.yaml"
|
||||
local local_ptr_file = "/etc/mosdns/rule/local-ptr.txt"
|
||||
|
||||
m = Map("mosdns")
|
||||
|
||||
@ -13,9 +14,10 @@ s.anonymous = true
|
||||
|
||||
s:tab("white_list", translate("White Lists"))
|
||||
s:tab("block_list", translate("Block Lists"))
|
||||
s:tab("grey_list", translate("Grey Lists"))
|
||||
s:tab("hosts_list", translate("Hosts"))
|
||||
s:tab("redirect_list", translate("Redirect"))
|
||||
s:tab("cus_config", translate("Cus Config"))
|
||||
s:tab("local_ptr_list", translate("Block PTR"))
|
||||
|
||||
o = s:taboption("white_list", TextValue, "whitelist", "", "<font color='red'>" .. translate("These domain names allow DNS resolution with the highest priority. Please input the domain names of websites, every line can input only one website domain. For example: hm.baidu.com.") .. "</font>" .. "<font color='#00bd3e'>" .. translate("<br>The list of rules only apply to 'Default Config' profiles.") .. "</font>")
|
||||
o.rows = 15
|
||||
@ -37,6 +39,16 @@ o.validate = function(self, value)
|
||||
return value
|
||||
end
|
||||
|
||||
o = s:taboption("grey_list", TextValue, "greylist", "", "<font color='red'>" .. translate("These domains are always resolved using remote DNS. Please input the domain names of websites, every line can input only one website domain. For example: google.com.") .. "</font>" .. "<font color='#00bd3e'>" .. translate("<br>The list of rules only apply to 'Default Config' profiles.") .. "</font>")
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return nixio.fs.readfile(grey_list_file) or "" end
|
||||
o.write = function(self, section, value) nixio.fs.writefile(grey_list_file, value:gsub("\r\n", "\n")) end
|
||||
o.remove = function(self, section, value) nixio.fs.writefile(grey_list_file, "") end
|
||||
o.validate = function(self, value)
|
||||
return value
|
||||
end
|
||||
|
||||
o = s:taboption("hosts_list", TextValue, "hosts", "", "<font color='red'>" .. translate("Hosts For example: baidu.com 10.0.0.1") .. "</font>" .. "<font color='#00bd3e'>" .. translate("<br>The list of rules only apply to 'Default Config' profiles.") .. "</font>")
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
@ -57,12 +69,12 @@ o.validate = function(self, value)
|
||||
return value
|
||||
end
|
||||
|
||||
o = s:taboption("cus_config", TextValue, "Cus Config", "", "<font color='red'>" .. translate("View the Custom YAML Configuration file used by this MosDNS. You can edit it as you own need.") .. "</font>" .. "<font color='#00bd3e'>" .. translate("<br>The list of rules only apply to 'Custom Config' profiles.") .. "</font>")
|
||||
o.rows = 30
|
||||
o = s:taboption("local_ptr_list", TextValue, "local_ptr", "", "<font color='red'>" .. translate("These domains are blocked from PTR requests") .. "</font>" .. "<font color='#00bd3e'>" .. translate("<br>The list of rules only apply to 'Default Config' profiles.") .. "</font>")
|
||||
o.rows = 15
|
||||
o.wrap = "off"
|
||||
o.cfgvalue = function(self, section) return nixio.fs.readfile(cus_config_file) or "" end
|
||||
o.write = function(self, section, value) nixio.fs.writefile(cus_config_file, value:gsub("\r\n", "\n")) end
|
||||
o.remove = function(self, section, value) nixio.fs.writefile(cus_config_file, "") end
|
||||
o.cfgvalue = function(self, section) return nixio.fs.readfile(local_ptr_file) or "" end
|
||||
o.write = function(self, section, value) nixio.fs.writefile(local_ptr_file, value:gsub("\r\n", "\n")) end
|
||||
o.remove = function(self, section, value) nixio.fs.writefile(local_ptr_file, "") end
|
||||
o.validate = function(self, value)
|
||||
return value
|
||||
end
|
||||
|
@ -1,15 +1,12 @@
|
||||
m = Map("mosdns")
|
||||
|
||||
s = m:section(TypedSection, "mosdns", translate("Geodata Update"))
|
||||
s = m:section(TypedSection, "mosdns", translate("Update GeoIP & GeoSite dat"))
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
enable = s:option(Flag, "geo_auto_update", translate("Enable Auto Database Update"))
|
||||
enable.rmempty = false
|
||||
|
||||
enable = s:option(Flag, "syncconfig", translate("Enable Config Update"))
|
||||
enable.rmempty = false
|
||||
|
||||
o = s:option(ListValue, "geo_update_week_time", translate("Update Cycle"))
|
||||
o:value("*", translate("Every Day"))
|
||||
o:value("1", translate("Every Monday"))
|
||||
@ -21,17 +18,14 @@ o:value("6", translate("Every Saturday"))
|
||||
o:value("7", translate("Every Sunday"))
|
||||
o.default = "*"
|
||||
|
||||
update_time = s:option(ListValue, "geo_update_day_time", translate("Update Time (Every Day)"))
|
||||
update_time = s:option(ListValue, "geo_update_day_time", translate("Update Time"))
|
||||
for t = 0, 23 do
|
||||
update_time:value(t, t..":00")
|
||||
end
|
||||
update_time.default = 0
|
||||
|
||||
data_update = s:option(Button, "geo_update_database", translate("Database Update"))
|
||||
data_update.inputtitle = translate("Check And Update")
|
||||
data_update.inputstyle = "reload"
|
||||
data_update.write = function()
|
||||
luci.sys.exec("/etc/mosdns/mosupdater.sh &> /dev/null &")
|
||||
end
|
||||
data_update.rawhtml = true
|
||||
data_update.template = "mosdns/geo_update"
|
||||
|
||||
return m
|
||||
|
34
luci-app-mosdns/luasrc/view/mosdns/geo_update.htm
Normal file
34
luci-app-mosdns/luasrc/view/mosdns/geo_update.htm
Normal file
@ -0,0 +1,34 @@
|
||||
<%+cbi/valueheader%>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
function update_data(btn, dataname)
|
||||
{
|
||||
btn.disabled = true;
|
||||
btn.value = '<%:Updating...%> ';
|
||||
st=dataname;
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "mosdns", "geo_update")%>',
|
||||
{ set:st },
|
||||
function(x,data)
|
||||
{
|
||||
var tb = document.getElementById(dataname+'-status');
|
||||
if (tb)
|
||||
{
|
||||
switch (data.updating)
|
||||
{
|
||||
case true:
|
||||
tb.innerHTML = "<font color='green'>" + "<%:Update success%>" + "</font>";
|
||||
break;
|
||||
case false:
|
||||
tb.innerHTML = "<font color='red'>" + "<%:Update failed, Please check the network status%>" + "</font>";
|
||||
break;
|
||||
}
|
||||
}
|
||||
btn.disabled = false;
|
||||
btn.value = '<%:Check And Update%>';
|
||||
}
|
||||
);
|
||||
return false;
|
||||
}
|
||||
//]]></script>
|
||||
<input type="button" class="btn cbi-button cbi-button-reload" value="<%:Check And Update%>" onclick="return update_data(this,'<%=self.option%>')" />
|
||||
<span id="<%=self.option%>-status"><em><%=self.value%></em></span>
|
||||
<%+cbi/valuefooter%>
|
@ -1,9 +1,6 @@
|
||||
msgid "Basic Setting"
|
||||
msgstr "基本设置"
|
||||
|
||||
msgid "Manual Configuration"
|
||||
msgstr "手动配置"
|
||||
|
||||
msgid "MosDNS is a 'programmable' DNS forwarder."
|
||||
msgstr "MosDNS 是一个插件化的 DNS 转发/分流器。"
|
||||
|
||||
@ -19,20 +16,41 @@ msgstr "获取数据中..."
|
||||
msgid "Enable"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "Enable DNS Redirect"
|
||||
msgstr "启用 DNS 重定向"
|
||||
msgid "Listen port"
|
||||
msgstr "监听端口"
|
||||
|
||||
msgid "Log Level"
|
||||
msgstr "日志等级"
|
||||
|
||||
msgid "DNS Forward"
|
||||
msgstr "DNS 转发"
|
||||
|
||||
msgid "Forward Dnsmasq Domain Name resolution requests to MosDNS"
|
||||
msgstr "将 Dnsmasq 域名解析请求转发到 MosDNS 服务器"
|
||||
|
||||
msgid "Enable DNS ADblock"
|
||||
msgstr "启用 DNS 广告过滤"
|
||||
|
||||
msgid "View the Custom YAML Configuration file used by this MosDNS. You can edit it as you own need."
|
||||
msgstr "注意!此页的更改仅当 'MosDNS 配置文件选择' 为 '自定义配置' 时才会生效"
|
||||
msgid "ADblock Source"
|
||||
msgstr "广告过滤来源"
|
||||
|
||||
msgid "Reload Service"
|
||||
msgstr "重载服务"
|
||||
|
||||
msgid "Reload service to take effect of new configuration"
|
||||
msgstr "重载 MosDNS 服务生效配置文件"
|
||||
|
||||
msgid "<font color=\"ff0000\"><strong>View the Custom YAML Configuration file used by this MosDNS. You can edit it as you own need.</strong></font>"
|
||||
msgstr "<font color=\"ff0000\"><strong>注意!此页的更改仅当配置文件为 “自定义” 时才会生效</strong></font>"
|
||||
|
||||
msgid "Geodata Update"
|
||||
msgstr "数据库更新"
|
||||
msgstr "更新数据库"
|
||||
|
||||
msgid "Update Time (Every Day)"
|
||||
msgstr "更新时间(每天)"
|
||||
msgid "Update GeoIP & GeoSite dat"
|
||||
msgstr "更新 GeoIP & GeoSite 数据库"
|
||||
|
||||
msgid "Update Time"
|
||||
msgstr "更新时间"
|
||||
|
||||
msgid "Update Cycle"
|
||||
msgstr "更新周期"
|
||||
@ -68,49 +86,70 @@ msgid "Check And Update"
|
||||
msgstr "检查并更新"
|
||||
|
||||
msgid "Enable Auto Database Update"
|
||||
msgstr "启用数据库自动更新"
|
||||
msgstr "启用自动更新"
|
||||
|
||||
msgid "Enable Config Update"
|
||||
msgstr "启用配置文件同步"
|
||||
msgid "Updating..."
|
||||
msgstr "正在更新..."
|
||||
|
||||
msgid "Enable AutoConfiguration"
|
||||
msgstr "启用自动化配置"
|
||||
msgid "Update success"
|
||||
msgstr "更新成功"
|
||||
|
||||
msgid "This will make the necessary adjustments to other plug-in settings."
|
||||
msgstr "对其他插件的设置进行必要的设置,目前仅支持 SSRP VSSR PASSWALL。"
|
||||
msgid "Update failed, Please check the network status"
|
||||
msgstr "更新失败,请检查网络状态"
|
||||
|
||||
msgid "This will revert the adjustments."
|
||||
msgstr "还原设置助手对其他插件进行的配置设定。"
|
||||
msgid "Config File"
|
||||
msgstr "配置文件"
|
||||
|
||||
msgid "DNS Helper"
|
||||
msgstr "DNS 设置助手"
|
||||
|
||||
msgid "Revert Settings"
|
||||
msgstr "DNS 设置还原"
|
||||
|
||||
msgid "Apply"
|
||||
msgstr "应用"
|
||||
|
||||
msgid "MosDNS Config File"
|
||||
msgstr "MosDNS 配置文件选择"
|
||||
|
||||
msgid "Def Config"
|
||||
msgid "Default Config"
|
||||
msgstr "内置预设"
|
||||
|
||||
msgid "Cus Config"
|
||||
msgstr "自定义配置"
|
||||
msgid "Custom Config"
|
||||
msgstr "自定义"
|
||||
|
||||
msgid "Log Level"
|
||||
msgstr "日志级别"
|
||||
|
||||
msgid "MosDNS Log File"
|
||||
msgid "Log File"
|
||||
msgstr "日志文件"
|
||||
|
||||
msgid "Local DNS"
|
||||
msgstr "本地 DNS"
|
||||
|
||||
msgid "Follow WAN interface DNS if not enabled"
|
||||
msgstr "不启用则遵循 WAN 接口 DNS"
|
||||
|
||||
msgid "Upstream DNS servers"
|
||||
msgstr "上游 DNS 服务器"
|
||||
|
||||
msgid "Bootstrap DNS servers"
|
||||
msgstr "Bootstrap DNS 服务器"
|
||||
|
||||
msgid "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams"
|
||||
msgstr "Bootstrap DNS 服务器用于解析所指定为上游的 DoH / DoT 解析器的 IP 地址"
|
||||
|
||||
msgid "Remote DNS"
|
||||
msgstr "远程 DNS"
|
||||
|
||||
msgid "Listen port"
|
||||
msgstr "监听端口"
|
||||
msgid "Remote DNS Connection Multiplexing"
|
||||
msgstr "远程 DNS 连接复用"
|
||||
|
||||
msgid "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode"
|
||||
msgstr "启用 TCP/DoT RFC 7766 新型 Query Pipelining 连接复用模式"
|
||||
|
||||
msgid "DNS Cache Size"
|
||||
msgstr "DNS 缓存大小(条)"
|
||||
|
||||
msgid "Cache Survival Time"
|
||||
msgstr "缓存生存时间(秒)"
|
||||
|
||||
msgid "Minimum TTL"
|
||||
msgstr "覆盖最小 TTL 值(默认 0)"
|
||||
|
||||
msgid "Maximum TTL"
|
||||
msgstr "覆盖最大 TTL 值(默认 0)"
|
||||
|
||||
msgid "Logs"
|
||||
msgstr "日志"
|
||||
|
||||
msgid "Clear logs"
|
||||
msgstr "清空日志"
|
||||
|
||||
msgid "Rule List"
|
||||
msgstr "规则列表"
|
||||
@ -118,9 +157,6 @@ msgstr "规则列表"
|
||||
msgid "Rule Settings"
|
||||
msgstr "自定义规则列表"
|
||||
|
||||
msgid "<br>The list of rules only apply to 'Custom Config' profiles."
|
||||
msgstr "<br>规则列表仅适用于 “自定义配置” 配置文件"
|
||||
|
||||
msgid "<br>The list of rules only apply to 'Default Config' profiles."
|
||||
msgstr "<br>规则列表仅适用于 “内置预设” 配置文件"
|
||||
|
||||
@ -128,13 +164,19 @@ msgid "White Lists"
|
||||
msgstr "白名单"
|
||||
|
||||
msgid "These domain names allow DNS resolution with the highest priority. Please input the domain names of websites, every line can input only one website domain. For example: hm.baidu.com."
|
||||
msgstr "加入的域名始终允许 DNS 解析,且优先级最高(每个域名一行,允许使用规则匹配)"
|
||||
msgstr "加入的域名始终允许使用 “本地 DNS” 进行解析,且优先级最高(每个域名一行,支持域名匹配规则)"
|
||||
|
||||
msgid "Block Lists"
|
||||
msgstr "黑名单"
|
||||
|
||||
msgid "These domains are blocked from DNS resolution. Please input the domain names of websites, every line can input only one website domain. For example: baidu.com."
|
||||
msgstr "加入的域名将屏蔽 DNS 解析(每个域名一行,允许使用规则匹配)"
|
||||
msgstr "加入的域名将屏蔽 DNS 解析(每个域名一行,支持域名匹配规则)"
|
||||
|
||||
msgid "Grey Lists"
|
||||
msgstr "灰名单"
|
||||
|
||||
msgid "These domains are always resolved using remote DNS. Please input the domain names of websites, every line can input only one website domain. For example: google.com."
|
||||
msgstr "加入的域名始终使用 “远程 DNS” 进行解析(每个域名一行,支持域名匹配规则)"
|
||||
|
||||
msgid "Hosts For example: baidu.com 10.0.0.1"
|
||||
msgstr "自定义 Hosts 重写,如:baidu.com 10.0.0.1(每个规则一行)"
|
||||
@ -145,8 +187,8 @@ msgstr "重定向"
|
||||
msgid "The domain name to redirect the request to. Requests domain A, but returns records for domain B. example: a.com b.com"
|
||||
msgstr "重定向请求的域名。请求域名 A,但返回域名 B 的记录,如:baidu.com qq.com(每个规则一行)"
|
||||
|
||||
msgid "Logs"
|
||||
msgstr "日志"
|
||||
msgid "Block PTR"
|
||||
msgstr "PTR 黑名单"
|
||||
|
||||
msgid "Clear logs"
|
||||
msgstr "清空日志"
|
||||
msgid "These domains are blocked from PTR requests"
|
||||
msgstr "加入的域名将阻止 PTR 请求(每个域名一行,支持域名匹配规则)"
|
||||
|
@ -1,17 +1,21 @@
|
||||
|
||||
config mosdns 'mosdns'
|
||||
option not_first_start '0'
|
||||
config mosdns 'config'
|
||||
option enabled '0'
|
||||
option listen_port '5335'
|
||||
option geo_auto_update '0'
|
||||
option geo_update_week_time 'all'
|
||||
option geo_update_week_time '*'
|
||||
option geo_update_day_time '2'
|
||||
option redirect '1'
|
||||
option autoconf '1'
|
||||
option syncconfig '1'
|
||||
option adblock '0'
|
||||
option configfile './def_config.yaml'
|
||||
option loglv 'info'
|
||||
option logfile '/tmp/mosdns.txt'
|
||||
option remote_dns1 'tls://8.8.4.4'
|
||||
option remote_dns2 'tls://1.0.0.1'
|
||||
option listen_port '5335'
|
||||
option configfile '/etc/mosdns/config.yaml'
|
||||
option log_level 'info'
|
||||
option logfile '/tmp/mosdns.log'
|
||||
option cache_size '200000'
|
||||
option cache_survival_time '259200'
|
||||
option minimal_ttl '0'
|
||||
option maximum_ttl '0'
|
||||
option custom_local_dns '0'
|
||||
option enable_pipeline '0'
|
||||
list remote_dns 'tls://8.8.8.8'
|
||||
list remote_dns 'tls://1.1.1.1'
|
||||
|
||||
|
@ -1,153 +1,157 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2020 IrineSistiana
|
||||
# shellcheck disable=SC2034
|
||||
#
|
||||
# Copyright (C) 2020-2022, IrineSistiana
|
||||
#
|
||||
# This file is part of mosdns.
|
||||
#
|
||||
# mosdns is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# mosdns is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
START=99
|
||||
USE_PROCD=1
|
||||
|
||||
##### ONLY CHANGE THIS BLOCK ######
|
||||
PROG=/usr/bin/mosdns # where is mosdns
|
||||
RES_DIR=/etc/mosdns/ # resource dir / working dir / the dir where you store ip/domain lists
|
||||
CONF=$(uci -q get mosdns.mosdns.configfile) # where is the config file, it can be a relative path to $RES_DIR
|
||||
PROG=/usr/bin/mosdns
|
||||
CONF=$(uci -q get mosdns.config.configfile)
|
||||
CRON_FILE=/etc/crontabs/root
|
||||
##### ONLY CHANGE THIS BLOCK ######
|
||||
|
||||
inital_conf() {
|
||||
config_load "mosdns"
|
||||
config_get "enabled" "mosdns" "enabled" "0"
|
||||
get_config() {
|
||||
config_get enabled $1 enabled 0
|
||||
config_get adblock $1 adblock 0
|
||||
config_get ad_source $1 ad_source ""
|
||||
config_get cache_size $1 cache_size 200000
|
||||
config_get cache_survival_time $1 cache_survival_time 259200
|
||||
config_get enable_pipeline $1 enable_pipeline 0
|
||||
config_get geo_auto_update $1 geo_auto_update 0
|
||||
config_get geo_update_day_time $1 geo_update_day_time 2
|
||||
config_get geo_update_week_time $1 geo_update_week_time "*"
|
||||
config_get listen_port $1 listen_port 5335
|
||||
config_get log_file $1 logfile "/tmp/mosdns.log"
|
||||
config_get log_level $1 log_level "info"
|
||||
config_get maximum_ttl_custom $1 maximum_ttl 0
|
||||
config_get minimal_ttl_custom $1 minimal_ttl 0
|
||||
config_get redirect $1 redirect 0
|
||||
config_get remote_dns $1 remote_dns "tls://8.8.8.8 tls://1.1.1.1"
|
||||
config_get custom_local_dns $1 custom_local_dns 0
|
||||
config_get bootstrap_dns $1 bootstrap_dns "119.29.29.29"
|
||||
}
|
||||
|
||||
init_yaml() {
|
||||
tmpdir=$(mktemp -d) || exit 1
|
||||
adlist=$(/usr/share/mosdns/mosdns.sh ad)
|
||||
[ $enable_pipeline = 1 ] && enable_pipeline=true || enable_pipeline=false
|
||||
local_dns=$(/usr/share/mosdns/mosdns.sh dns | xargs -n1 echo " - addr:")
|
||||
remote_dns=$(echo $remote_dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n%s enable_pipeline: '${enable_pipeline}'\n",s,$i,s}' s=' ')
|
||||
sed "s,log_level,$log_level,g;s,log_file,$log_file,g; \
|
||||
s,listen_port,$listen_port,g;s,cache_size,$cache_size,g; \
|
||||
s,cache_survival_time,$cache_survival_time,g; \
|
||||
s,minimal_ttl_custom,$minimal_ttl_custom,g; \
|
||||
s,maximum_ttl_custom,$maximum_ttl_custom,g; \
|
||||
s,adblock,$adlist,g;s,remote_dns_pipeline,$enable_pipeline,g" \
|
||||
/usr/share/mosdns/default.yaml > $CONF
|
||||
[ "$custom_local_dns" -eq 0 ] && sed -i "/bootstrap/d" $CONF || \
|
||||
sed -i "s,bootstrap_dns,$bootstrap_dns,g" $CONF
|
||||
echo "${local_dns}" > $tmpdir/local_dns.txt
|
||||
echo "${remote_dns}" > $tmpdir/remote_dns.txt
|
||||
sed -i -e '/- addr: local_dns/{r '$tmpdir/local_dns.txt -e';d};/- addr: remote_dns/{r '$tmpdir/remote_dns.txt -e';d}' \
|
||||
$CONF
|
||||
rm -rf $tmpdir
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "mosdns"
|
||||
procd_add_reload_trigger "mosdns"
|
||||
}
|
||||
|
||||
restore_setting() {
|
||||
sed -i "/list server/d" /etc/config/dhcp
|
||||
uci set dhcp.@dnsmasq[0].noresolv='0'
|
||||
uci del dhcp.@dnsmasq[0].cachesize
|
||||
uci set dhcp.@dnsmasq[0].filter_aaaa='1'
|
||||
uci del dhcp.@dnsmasq[0].setbymosdns
|
||||
uci commit dhcp
|
||||
rm -f /etc/mosdns/redirect.lock
|
||||
sed -i "/list server/d" /etc/config/dhcp
|
||||
uci set dhcp.@dnsmasq[0].noresolv='0'
|
||||
uci del dhcp.@dnsmasq[0].cachesize
|
||||
uci commit dhcp
|
||||
}
|
||||
|
||||
prepare_setting() {
|
||||
redirect=$(uci -q get mosdns.mosdns.redirect)
|
||||
if [ "$redirect" -eq 1 ]; then
|
||||
sed -i "/list server/d" /etc/config/dhcp
|
||||
uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$(uci -q get mosdns.mosdns.listen_port)"
|
||||
uci set dhcp.@dnsmasq[0].rebind_protection='0'
|
||||
uci set dhcp.@dnsmasq[0].noresolv="1"
|
||||
uci set dhcp.@dnsmasq[0].cachesize='0'
|
||||
uci set dhcp.@dnsmasq[0].filter_aaaa='0'
|
||||
uci set dhcp.@dnsmasq[0].setbymosdns='1'
|
||||
uci commit dhcp
|
||||
fi
|
||||
redirect_setting() {
|
||||
if [ "${CONF}" = "/etc/mosdns/config.yaml" ]; then
|
||||
sed -i "/list server/d" /etc/config/dhcp
|
||||
uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$listen_port"
|
||||
uci set dhcp.@dnsmasq[0].rebind_protection='0'
|
||||
uci set dhcp.@dnsmasq[0].noresolv="1"
|
||||
uci set dhcp.@dnsmasq[0].cachesize='0'
|
||||
uci commit dhcp
|
||||
else
|
||||
sed -i "/list server/d" /etc/config/dhcp
|
||||
uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$(cat /etc/mosdns/config_custom.yaml | awk -F'[:" ]+' '/^\s+addr:/{for(i=1;i<=NF;i++){if($i~/^[0-9]+$/){print $i;exit}}}')"
|
||||
uci set dhcp.@dnsmasq[0].rebind_protection='0'
|
||||
uci set dhcp.@dnsmasq[0].noresolv="1"
|
||||
uci set dhcp.@dnsmasq[0].cachesize='0'
|
||||
uci commit dhcp
|
||||
fi
|
||||
touch /etc/mosdns/redirect.lock
|
||||
}
|
||||
|
||||
restart_others() {
|
||||
/etc/init.d/network reload
|
||||
/etc/init.d/dnsmasq reload
|
||||
reload_others() {
|
||||
/etc/init.d/network reload
|
||||
/etc/init.d/dnsmasq reload
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
sleep 2s
|
||||
echo "MosDNS is restarted!"
|
||||
start
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
|
||||
setcron() {
|
||||
touch $CRON_FILE
|
||||
sed -i '/mosupdater.sh/d' $CRON_FILE 2> /dev/null
|
||||
[ "$(uci -q get mosdns.mosdns.geo_auto_update)" -eq 1 ] && echo "0 $(uci -q get mosdns.mosdns.geo_update_day_time) * * $(uci -q get mosdns.mosdns.geo_update_week_time) /etc/mosdns/mosupdater.sh" >> $CRON_FILE
|
||||
crontab $CRON_FILE
|
||||
sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null
|
||||
[ "$geo_auto_update" -eq 1 ] && echo "0 $geo_update_day_time * * $geo_update_week_time /usr/share/mosdns/mosdns.sh geodata" >>$CRON_FILE
|
||||
crontab $CRON_FILE
|
||||
}
|
||||
|
||||
delcron() {
|
||||
sed -i '/mosupdater.sh/d' $CRON_FILE 2> /dev/null
|
||||
crontab $CRON_FILE
|
||||
}
|
||||
|
||||
adblock() {
|
||||
cp -f /etc/mosdns/rule/serverlist.txt /etc/mosdns/rule/serverlist.bak
|
||||
modns_adblock=$(uci -q get mosdns.mosdns.adblock)
|
||||
if [ "$modns_adblock" = 0 ]; then
|
||||
: > /etc/mosdns/rule/serverlist.txt
|
||||
else
|
||||
cat /etc/mosdns/rule/serverlist.bak > /etc/mosdns/rule/serverlist.txt
|
||||
fi
|
||||
}
|
||||
|
||||
v4config() {
|
||||
rm -rf /etc/mosdns/def_config.yaml
|
||||
cp -rf /etc/mosdns/def_config_orig.yaml /etc/mosdns/def_config.yaml
|
||||
sed -i "s,listenport,$(uci -q get mosdns.mosdns.listen_port),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,loglvl,$(uci -q get mosdns.mosdns.loglv),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,logfile,$(uci -q get mosdns.mosdns.logfile),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,remotedns1,$(uci -q get mosdns.mosdns.remote_dns1),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,remotedns2,$(uci -q get mosdns.mosdns.remote_dns2),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,localdns1,$(/etc/mosdns/lib.sh dns 0),g" /etc/mosdns/def_config.yaml
|
||||
sed -i "s,localdns2,$(/etc/mosdns/lib.sh dns 1),g" /etc/mosdns/def_config.yaml
|
||||
sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null
|
||||
crontab $CRON_FILE
|
||||
}
|
||||
|
||||
start_service() {
|
||||
|
||||
# Reading config
|
||||
inital_conf
|
||||
if [ "$enabled" -eq 0 ]; then
|
||||
firstblood=$(uci -q get mosdns.mosdns.not_first_start)
|
||||
[ "${firstblood}" = "0" ] && restore_setting
|
||||
[ "${firstblood}" = "0" ] && restart_others
|
||||
uci set mosdns.mosdns.not_first_start='1'
|
||||
uci commit mosdns
|
||||
echo "MosDNS has turned off"
|
||||
return 1
|
||||
fi
|
||||
delcron
|
||||
setcron
|
||||
adblock
|
||||
true > "$(/etc/mosdns/lib.sh logfile)"
|
||||
sysctl -w net.core.rmem_max=2500000
|
||||
v4config
|
||||
procd_open_instance mosdns
|
||||
procd_set_param command $PROG start -d $RES_DIR -c "$CONF"
|
||||
procd_set_param user root
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
|
||||
procd_close_instance mosdns
|
||||
|
||||
configfile=$(uci -q get mosdns.mosdns.configfile)
|
||||
if [ "${configfile}" = "./def_config.yaml" ]; then
|
||||
restore_setting
|
||||
prepare_setting
|
||||
if [ "$(uci -q get mosdns.mosdns.redirect)" -eq 1 ] && [ "$(uci -q get shadowsocksr.@global[0].run_mode)" != gfw ]; then
|
||||
true > /etc/ssrplus/gfw_list.conf
|
||||
sed -i '/update.lua/d' /usr/share/shadowsocksr/ssrplusupdate.sh
|
||||
sed -i '/bin\/sh/a\/usr/bin/lua /usr/share/shadowsocksr/update.lua ad_data' /usr/share/shadowsocksr/ssrplusupdate.sh
|
||||
sed -i '/bin\/sh/a\/usr/bin/lua /usr/share/shadowsocksr/update.lua nfip_data' /usr/share/shadowsocksr/ssrplusupdate.sh
|
||||
sed -i '/bin\/sh/a\/usr/bin/lua /usr/share/shadowsocksr/update.lua ip_data' /usr/share/shadowsocksr/ssrplusupdate.sh
|
||||
fi
|
||||
restart_others
|
||||
fi
|
||||
|
||||
echo "MosDNS turn on"
|
||||
echo "enabled=$enabled"
|
||||
|
||||
config_load "mosdns"
|
||||
config_foreach get_config "mosdns"
|
||||
[ $enabled != 1 ] && return 1
|
||||
delcron
|
||||
setcron
|
||||
[ "${CONF}" = "/etc/mosdns/config.yaml" ] && init_yaml
|
||||
:> $(/usr/share/mosdns/mosdns.sh logfile)
|
||||
procd_open_instance mosdns
|
||||
procd_set_param command $PROG start -c "$CONF"
|
||||
procd_set_param user root
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
|
||||
procd_close_instance mosdns
|
||||
[ "$redirect" -ne 1 ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting
|
||||
[ "$redirect" -eq 1 ] && redirect_setting
|
||||
reload_others
|
||||
update_list=0
|
||||
[ "$adblock" -eq 1 ] && [ "$ad_source" != "geosite.dat" ] && {
|
||||
[ -s "/etc/mosdns/rule/adlist.txt" ] && [ -f "/etc/mosdns/rule/.ad_source" ] && url_adlist=$(cat /etc/mosdns/rule/.ad_source) || update_list=1
|
||||
[ "$ad_source" != "$url_adlist" ] && update_list=1
|
||||
}
|
||||
[ "$update_list" -eq 1 ] && /usr/share/mosdns/mosdns.sh adlist_update &> /dev/null &
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
|
||||
pgrep -f /usr/bin/mosdns | xargs kill -9
|
||||
echo "MosDNS turn off"
|
||||
echo "enabled=$enabled"
|
||||
|
||||
configfile=$(uci -q get mosdns.mosdns.configfile)
|
||||
if [ "${configfile}" = "./def_config.yaml" ]; then
|
||||
config_load "mosdns"
|
||||
enabled=$(uci -q get mosdns.mosdns.enabled)
|
||||
[ "${enabled}" = "0" ] && [ "$(uci -q get dhcp.@dnsmasq[0].setbymosdns)" -eq 1 ] && restore_setting
|
||||
restart_others
|
||||
fi
|
||||
delcron
|
||||
|
||||
pgrep -f /usr/bin/mosdns | xargs kill -9 >/dev/null 2>&1
|
||||
config_load "mosdns"
|
||||
config_foreach get_config "mosdns"
|
||||
[ "$enabled" = "0" ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting
|
||||
reload_others
|
||||
delcron
|
||||
}
|
||||
|
162
luci-app-mosdns/root/etc/mosdns/config_custom.yaml
Normal file
162
luci-app-mosdns/root/etc/mosdns/config_custom.yaml
Normal file
@ -0,0 +1,162 @@
|
||||
log:
|
||||
level: info
|
||||
file: "/tmp/mosdns.log"
|
||||
|
||||
include: []
|
||||
|
||||
data_providers:
|
||||
- tag: geoip
|
||||
file: "/usr/share/v2ray/geoip.dat"
|
||||
auto_reload: true
|
||||
|
||||
- tag: geosite
|
||||
file: "/usr/share/v2ray/geosite.dat"
|
||||
auto_reload: true
|
||||
|
||||
- tag: whitelist
|
||||
file: "/etc/mosdns/rule/whitelist.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: blocklist
|
||||
file: "/etc/mosdns/rule/blocklist.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: hosts
|
||||
file: "/etc/mosdns/rule/hosts.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: redirect
|
||||
file: "/etc/mosdns/rule/redirect.txt"
|
||||
auto_reload: true
|
||||
|
||||
plugins:
|
||||
- tag: lazy_cache
|
||||
type: cache
|
||||
args:
|
||||
size: 200000
|
||||
lazy_cache_ttl: 259200
|
||||
|
||||
- tag: modify_ttl
|
||||
type: ttl
|
||||
args:
|
||||
minimal_ttl: 0
|
||||
maximum_ttl: 0
|
||||
|
||||
- tag: "forward_local"
|
||||
type: fast_forward
|
||||
args:
|
||||
upstream:
|
||||
- addr: 119.29.29.29
|
||||
- addr: 114.114.114.114
|
||||
|
||||
- tag: "forward_remote"
|
||||
type: fast_forward
|
||||
args:
|
||||
upstream:
|
||||
- addr: tls://8.8.8.8
|
||||
- addr: tls://1.1.1.1
|
||||
|
||||
- tag: query_is_whitelist_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:whitelist"
|
||||
|
||||
- tag: query_is_blocklist_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:blocklist"
|
||||
|
||||
- tag: query_is_hosts_domain
|
||||
type: hosts
|
||||
args:
|
||||
hosts:
|
||||
- "provider:hosts"
|
||||
|
||||
- tag: query_is_redirect_domain
|
||||
type: redirect
|
||||
args:
|
||||
rule:
|
||||
- "provider:redirect"
|
||||
|
||||
- tag: query_is_local_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:geosite:cn"
|
||||
|
||||
- tag: query_is_non_local_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:geosite:geolocation-!cn"
|
||||
|
||||
- tag: response_has_local_ip
|
||||
type: response_matcher
|
||||
args:
|
||||
ip:
|
||||
- "provider:geoip:cn"
|
||||
|
||||
- tag: query_is_ad_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:geosite:category-ads-all"
|
||||
|
||||
- tag: match_qtype65
|
||||
type: query_matcher
|
||||
args:
|
||||
qtype: [65]
|
||||
|
||||
- tag: "main_sequence"
|
||||
type: "sequence"
|
||||
args:
|
||||
exec:
|
||||
- _misc_optm
|
||||
- query_is_hosts_domain
|
||||
- query_is_redirect_domain
|
||||
|
||||
- if: query_is_whitelist_domain
|
||||
exec:
|
||||
- forward_local
|
||||
- modify_ttl
|
||||
- _return
|
||||
|
||||
- if: "query_is_blocklist_domain || query_is_ad_domain || match_qtype65"
|
||||
exec:
|
||||
- _new_nxdomain_response
|
||||
- _return
|
||||
|
||||
- lazy_cache
|
||||
|
||||
- if: query_is_local_domain
|
||||
exec:
|
||||
- forward_local
|
||||
- modify_ttl
|
||||
- _return
|
||||
|
||||
- if: query_is_non_local_domain
|
||||
exec:
|
||||
- _prefer_ipv4
|
||||
- forward_remote
|
||||
- modify_ttl
|
||||
- _return
|
||||
- primary:
|
||||
- forward_local
|
||||
- if: "(! response_has_local_ip) && [_response_valid_answer]"
|
||||
exec:
|
||||
- _drop_response
|
||||
secondary:
|
||||
- _prefer_ipv4
|
||||
- forward_remote
|
||||
- modify_ttl
|
||||
fast_fallback: 200
|
||||
|
||||
servers:
|
||||
- exec: main_sequence
|
||||
listeners:
|
||||
- protocol: udp
|
||||
addr: ":5335"
|
||||
- protocol: tcp
|
||||
addr: ":5335"
|
@ -1,31 +0,0 @@
|
||||
# 日志设置
|
||||
log:
|
||||
level: info # 日志级别。可选 "debug" "info" "warn" "error"。默认 "info"。
|
||||
file: "/path/to/log/file" # 记录日志到文件。
|
||||
|
||||
# 数据源设置
|
||||
data_providers:
|
||||
- tag: data1 # 数据源的 tag。由用户自由设定。不能重复。
|
||||
file: "/path/to/data/file" # 文件位置
|
||||
auto_reload: true # 文件有变化时是否自动重载。
|
||||
|
||||
# 插件设置
|
||||
plugins:
|
||||
- tag: tag1 # 插件的 tag。由用户自由设定。不能重复。
|
||||
type: type1 # 插件类型。详见下文。
|
||||
args: # 插件参数。取决于插件类型。详见下文。
|
||||
key1: value1
|
||||
key2: value2
|
||||
|
||||
# 服务器设置
|
||||
servers:
|
||||
- exec: tag1 # 本服务器运行插件的 tag。
|
||||
timeout: 5 # 请求处理超时时间。单位: 秒。默认: 5。
|
||||
listener: # 监听设置
|
||||
- protocol: https # 协议,支持 "udp", "tcp", "tls", "https" 和 "http"
|
||||
addr: ":443" # 监听地址。
|
||||
cert: "/path/to/my/cert" # TLS 所需证书文件。
|
||||
key: "/path/to/my/key" # TLS 所需密钥文件。
|
||||
url_path: "/dns-query" # DoH 路径。
|
||||
get_user_ip_from_header: "X-Forwarded-For" # DoH 尝试从 HTTP 头获取用户 IP。
|
||||
idle_timeout: 10 # 连接复用空连接超时时间。单位: 秒。默认: 10。
|
@ -1,206 +0,0 @@
|
||||
log:
|
||||
level: loglvl
|
||||
file: "logfile"
|
||||
|
||||
# api:
|
||||
# http: "127.0.0.1:8080" # 在该地址启动 api 接口。
|
||||
|
||||
plugins:
|
||||
# 加载配置
|
||||
# 国内域名
|
||||
- tag: geosite_cn
|
||||
type: domain_set
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/geosite_cn.txt"
|
||||
|
||||
# 国内ip
|
||||
- tag: geoip_cn
|
||||
type: ip_set
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/geoip_cn.txt"
|
||||
|
||||
# 国外域名
|
||||
- tag: geosite_no_cn
|
||||
type: domain_set
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/geosite_no_cn.txt"
|
||||
|
||||
# 白名单 加入的域名始终允许使用 “本地 DNS” 进行解析
|
||||
- tag: whitelist
|
||||
type: domain_set
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/whitelist.txt"
|
||||
|
||||
# 黑名单 加入的域名将屏蔽 DNS 解析
|
||||
- tag: blocklist
|
||||
type: domain_set
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/blocklist.txt"
|
||||
|
||||
# 自定义 Hosts 重写
|
||||
- tag: hosts
|
||||
type: hosts
|
||||
args:
|
||||
files: # 从文本文件载入
|
||||
- "/etc/mosdns/rule/hosts.txt"
|
||||
|
||||
# 重定向请求的域名
|
||||
- tag: redirect
|
||||
type: redirect
|
||||
args:
|
||||
files:
|
||||
- "/etc/mosdns/rule/redirect.txt"
|
||||
|
||||
# 广告列表
|
||||
- tag: adlist
|
||||
type: domain_set
|
||||
args:
|
||||
files:
|
||||
- "/etc/mosdns/rule/serverlist.txt"
|
||||
|
||||
# 缓存
|
||||
- tag: cache
|
||||
type: cache
|
||||
args:
|
||||
size: 200000
|
||||
lazy_cache_ttl: 259200
|
||||
|
||||
# 转发至本地服务器
|
||||
- tag: forward_local
|
||||
type: forward
|
||||
args:
|
||||
upstreams:
|
||||
- addr: localdns1
|
||||
- addr: localdns2
|
||||
|
||||
# 转发至远程服务器
|
||||
- tag: forward_remote
|
||||
type: forward
|
||||
args:
|
||||
upstreams:
|
||||
- addr: remotedns1
|
||||
enable_pipeline: true
|
||||
- addr: remotedns2
|
||||
enable_pipeline: true
|
||||
|
||||
# 国内解析
|
||||
- tag: local_sequence
|
||||
type: sequence
|
||||
args:
|
||||
- exec: $forward_local
|
||||
|
||||
# 国外解析
|
||||
- tag: remote_sequence
|
||||
type: sequence
|
||||
args:
|
||||
- exec: prefer_ipv4
|
||||
- exec: $forward_remote
|
||||
|
||||
# 有响应终止返回
|
||||
- tag: has_resp_sequence
|
||||
type: sequence
|
||||
args:
|
||||
- matches: has_resp
|
||||
exec: accept
|
||||
|
||||
|
||||
# fallback 用本地服务器 sequence
|
||||
# 返回不包含本地 ip 则 reject
|
||||
- tag: query_is_local_ip
|
||||
type: sequence
|
||||
args:
|
||||
- exec: $local_sequence
|
||||
- matches: resp_ip $geoip_cn
|
||||
exec: accept
|
||||
- exec: reject
|
||||
|
||||
# fallback 用远程服务器 sequence
|
||||
- tag: query_is_remote
|
||||
type: sequence
|
||||
args:
|
||||
- exec: $remote_sequence
|
||||
- exec: accept
|
||||
|
||||
# fallback 用远程服务器 sequence
|
||||
- tag: fallback
|
||||
type: fallback
|
||||
args:
|
||||
primary: query_is_local_ip
|
||||
secondary: query_is_remote
|
||||
threshold: 150
|
||||
always_standby: true
|
||||
|
||||
|
||||
# 查询国内域名
|
||||
- tag: query_is_local_domain
|
||||
type: sequence
|
||||
args:
|
||||
- matches: qname $geosite_cn
|
||||
exec: $local_sequence
|
||||
|
||||
# 查询国外域名
|
||||
- tag: query_is_no_local_domain
|
||||
type: sequence
|
||||
args:
|
||||
- matches: qname $geosite_no_cn
|
||||
exec: $remote_sequence
|
||||
|
||||
# 查询白名单
|
||||
- tag: query_is_whitelist_domain
|
||||
type: sequence
|
||||
args:
|
||||
- matches: qname $whitelist
|
||||
exec: $local_sequence
|
||||
- exec: jump has_resp_sequence
|
||||
|
||||
# 拒绝名单
|
||||
- tag: query_is_reject_domain
|
||||
type: sequence
|
||||
args:
|
||||
- matches: qname $blocklist
|
||||
exec: reject 3
|
||||
- matches: qname $adlist
|
||||
exec: reject 3
|
||||
- matches:
|
||||
- qtype 12
|
||||
exec: reject 3
|
||||
- matches: qtype 65
|
||||
exec: reject 3
|
||||
|
||||
# 主要的运行逻辑插件
|
||||
# sequence 插件中调用的插件 tag 必须在 sequence 前定义,
|
||||
# 否则 sequence 找不到对应插件。
|
||||
- tag: main_sequence
|
||||
type: sequence
|
||||
args:
|
||||
- exec: $hosts
|
||||
- exec: jump has_resp_sequence
|
||||
- exec: $redirect
|
||||
- exec: jump has_resp_sequence
|
||||
- exec: $query_is_whitelist_domain
|
||||
- exec: $query_is_reject_domain
|
||||
- exec: $cache
|
||||
- exec: jump has_resp_sequence
|
||||
- exec: $query_is_local_domain
|
||||
- exec: jump has_resp_sequence
|
||||
- exec: $query_is_no_local_domain
|
||||
- exec: jump has_resp_sequence
|
||||
- exec: $fallback
|
||||
|
||||
# 启动 udp 服务器。
|
||||
- tag: udp_server
|
||||
type: udp_server
|
||||
args:
|
||||
entry: main_sequence
|
||||
listen: "127.0.0.1:listenport"
|
||||
# 启动 tcp 服务器。
|
||||
- tag: tcp_server
|
||||
type: tcp_server
|
||||
args:
|
||||
entry: main_sequence
|
||||
listen: "127.0.0.1:listenport"
|
@ -1,79 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck disable=SC2034 # Unused variables left for readability
|
||||
LAN_DNS0="119.29.29.29"
|
||||
LAN_DNS1="101.226.4.6"
|
||||
WAN_DNS0="8.8.4.4"
|
||||
WAN_DNS1="8.8.8.8"
|
||||
REPO_URL="https://github.com/QiuSimons/openwrt-mos/raw/master/dat"
|
||||
CDN_URL="https://gh.404delivr.workers.dev"
|
||||
DAT_PREFIX="$CDN_URL/$REPO_URL"
|
||||
|
||||
logfile_path() (
|
||||
configfile=$(uci -q get mosdns.mosdns.configfile)
|
||||
if [ "$configfile" = "./def_config.yaml" ]; then
|
||||
uci -q get mosdns.mosdns.logfile
|
||||
else
|
||||
[ ! -f /etc/mosdns/cus_config.yaml ] && exit 1
|
||||
awk '/^log:/{f=1;next}f==1{if($0~/file:/){print;exit}if($0~/^[^ ]/)exit}' /etc/mosdns/cus_config.yaml | grep -Eo "/[^'\"]+"
|
||||
fi
|
||||
)
|
||||
|
||||
ext() {
|
||||
command -v "$1" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
uci_ext() {
|
||||
if [ "$1" == "ssrp" ]; then
|
||||
uci get shadowsocksr.@global[0].global_server &> /dev/null
|
||||
elif [ "$1" == "pw" ]; then
|
||||
uci get passwall.@global[0].enabled &> /dev/null
|
||||
elif [ "$1" == "pw2" ]; then
|
||||
uci get passwall2.@global[0].enabled &> /dev/null
|
||||
elif [ "$1" == "vssr" ]; then
|
||||
uci get vssr.@global[0].global_server &> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
bakdns() {
|
||||
if [ "$1" -eq 0 ]; then
|
||||
echo "$LAN_DNS0"
|
||||
elif [ "$1" -eq 1 ]; then
|
||||
echo "$LAN_DNS1"
|
||||
fi
|
||||
}
|
||||
|
||||
getdat() {
|
||||
if ext curl; then
|
||||
curl -fSLo "$TMPDIR/$1" "$DAT_PREFIX/$1"
|
||||
else
|
||||
wget "$DAT_PREFIX/$1" --no-check-certificate -O "$TMPDIR/$1"
|
||||
fi
|
||||
}
|
||||
|
||||
getdns() {
|
||||
if [ "$2" == "inactive" ]; then
|
||||
ubus call network.interface.wan status | jsonfilter -e "@['inactive']['dns-server'][$1]"
|
||||
else
|
||||
ubus call network.interface.wan status | jsonfilter -e "@['dns-server'][$1]"
|
||||
fi
|
||||
}
|
||||
|
||||
pid() {
|
||||
pgrep -f "$1"
|
||||
}
|
||||
|
||||
if [ "$1" == "logfile" ]; then
|
||||
logfile_path
|
||||
elif [[ "$1" == "dns" && "$2" -le 1 ]]; then
|
||||
if [ "$(ifconfig | grep -c wan)" = 0 ]; then
|
||||
bakdns "$2"
|
||||
exit 0
|
||||
fi
|
||||
if [[ "$(getdns 0)" =~ ^127\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
getdns "$2" inactive
|
||||
elif [[ "$(getdns "$2")" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
getdns "$2"
|
||||
else
|
||||
bakdns "$2"
|
||||
fi
|
||||
fi
|
@ -1,45 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
# shellcheck source=/dev/null
|
||||
set -o pipefail
|
||||
source /etc/mosdns/lib.sh
|
||||
|
||||
TMPDIR=$(mktemp -d) || exit 1
|
||||
getdat geosite_cn.txt
|
||||
getdat geosite_no_cn.txt
|
||||
getdat geoip_cn.txt
|
||||
if [ "$(grep -o cn "$TMPDIR"/geosite_cn.txt | wc -l)" -lt 100 ]; then
|
||||
rm -rf "$TMPDIR"/geosite_cn.txt
|
||||
fi
|
||||
if [ "$(grep -o google "$TMPDIR"/geosite_no_cn.txt | wc -l)" -eq 0 ]; then
|
||||
rm -rf "$TMPDIR"/geosite_no_cn.txt
|
||||
fi
|
||||
cp -rf "$TMPDIR"/* /etc/mosdns/rule
|
||||
rm -rf "$TMPDIR"
|
||||
|
||||
syncconfig=$(uci -q get mosdns.mosdns.syncconfig)
|
||||
if [ "$syncconfig" -eq 1 ]; then
|
||||
TMPDIR=$(mktemp -d) || exit 2
|
||||
getdat def_config_v5.yaml
|
||||
|
||||
if [ "$(grep -o plugin "$TMPDIR"/def_config_v5.yaml | wc -l)" -eq 0 ]; then
|
||||
rm -rf "$TMPDIR"/def_config_v5.yaml
|
||||
else
|
||||
mv "$TMPDIR"/def_config_v5.yaml "$TMPDIR"/def_config_orig.yaml
|
||||
fi
|
||||
cp -rf "$TMPDIR"/* /etc/mosdns
|
||||
rm -rf "$TMPDIR"
|
||||
fi
|
||||
|
||||
adblock=$(uci -q get mosdns.mosdns.adblock)
|
||||
if [ "$adblock" -eq 1 ]; then
|
||||
TMPDIR=$(mktemp -d) || exit 3
|
||||
getdat serverlist.txt
|
||||
|
||||
if [ "$(grep -o .com "$TMPDIR"/serverlist.txt | wc -l)" -lt 1000 ]; then
|
||||
rm -rf "$TMPDIR"/serverlist.txt
|
||||
fi
|
||||
cp -rf "$TMPDIR"/* /etc/mosdns/rule
|
||||
rm -rf /etc/mosdns/rule/serverlist.bak "$TMPDIR"
|
||||
fi
|
||||
|
||||
exit 0
|
0
luci-app-mosdns/root/etc/mosdns/rule/adlist.txt
Normal file
0
luci-app-mosdns/root/etc/mosdns/rule/adlist.txt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
3
luci-app-mosdns/root/etc/mosdns/rule/greylist.txt
Normal file
3
luci-app-mosdns/root/etc/mosdns/rule/greylist.txt
Normal file
@ -0,0 +1,3 @@
|
||||
domain:gstatic.com
|
||||
domain:kernel.org
|
||||
keyword:github
|
@ -1,10 +1,6 @@
|
||||
# from unbound.conf
|
||||
127.in-addr.arpa
|
||||
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
|
||||
onion
|
||||
test
|
||||
invalid
|
||||
0.in-addr.arpa
|
||||
10.in-addr.arpa
|
||||
127.in-addr.arpa
|
||||
16.172.in-addr.arpa
|
||||
17.172.in-addr.arpa
|
||||
18.172.in-addr.arpa
|
||||
@ -21,21 +17,6 @@ invalid
|
||||
29.172.in-addr.arpa
|
||||
30.172.in-addr.arpa
|
||||
31.172.in-addr.arpa
|
||||
168.192.in-addr.arpa
|
||||
0.in-addr.arpa
|
||||
254.169.in-addr.arpa
|
||||
2.0.192.in-addr.arpa
|
||||
100.51.198.in-addr.arpa
|
||||
113.0.203.in-addr.arpa
|
||||
255.255.255.255.in-addr.arpa
|
||||
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
|
||||
d.f.ip6.arpa
|
||||
8.e.f.ip6.arpa
|
||||
9.e.f.ip6.arpa
|
||||
a.e.f.ip6.arpa
|
||||
b.e.f.ip6.arpa
|
||||
8.b.d.0.1.0.0.2.ip6.arpa
|
||||
# 100.64.0.0/10 保留地址
|
||||
64.100.in-addr.arpa
|
||||
65.100.in-addr.arpa
|
||||
66.100.in-addr.arpa
|
||||
@ -99,4 +80,8 @@ b.e.f.ip6.arpa
|
||||
124.100.in-addr.arpa
|
||||
125.100.in-addr.arpa
|
||||
126.100.in-addr.arpa
|
||||
127.100.in-addr.arpa
|
||||
127.100.in-addr.arpa
|
||||
2.0.192.in-addr.arpa
|
||||
168.192.in-addr.arpa
|
||||
255.255.255.255.in-addr.arpa
|
||||
domain:ip6.arpa
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,29 +1,24 @@
|
||||
tracking.miui.com
|
||||
tracking.intl.miui.com
|
||||
api.intl.miui.com
|
||||
stat.xiaomi.com
|
||||
checkip.synology.com
|
||||
checkipv6.synology.com
|
||||
checkport.synology.com
|
||||
ddns.synology.com
|
||||
account.synology.com
|
||||
whatismyip.akamai.com
|
||||
checkip.dyndns.org
|
||||
teamviewer.com
|
||||
bing.com
|
||||
api.ipify.org
|
||||
epicgames.com
|
||||
emby.kyarucloud.moe
|
||||
ntp.aliyun.com
|
||||
ntp.tencent.com
|
||||
cn.ntp.org.cn
|
||||
ntp.ntsc.ac.cn
|
||||
keyword:sglong
|
||||
keyword:sgshort
|
||||
keyword:sgminorshort
|
||||
keyword:sgaxshort
|
||||
keyword:sgfindershort
|
||||
keyword:apple
|
||||
domain:bing.com
|
||||
domain:live.com
|
||||
domain:msn.com
|
||||
domain:ntp.org
|
||||
domain:office.com
|
||||
domain:qlogo.cn
|
||||
domain:qq.com
|
||||
domain:redhat.com
|
||||
keyword:aaplimg
|
||||
keyword:itunes
|
||||
keyword:aicdn
|
||||
keyword:akadns
|
||||
keyword:akamai
|
||||
keyword:apple
|
||||
keyword:douyin
|
||||
keyword:fclouddns
|
||||
keyword:icloud
|
||||
keyword:itunes
|
||||
keyword:microsoft
|
||||
keyword:mzstatic
|
||||
keyword:ssrcdn
|
||||
keyword:windows
|
||||
keyword:xxpkg
|
||||
keyword:yximgs
|
||||
keyword:yxygslb
|
||||
|
@ -1,75 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck source=/dev/null
|
||||
source /etc/mosdns/lib.sh
|
||||
|
||||
if uci_ext ssrp; then
|
||||
if [ "$1" = "unset" ]; then
|
||||
uci set shadowsocksr.@global[0].pdnsd_enable='1'
|
||||
uci set shadowsocksr.@global[0].tunnel_forward="$WAN_DNS0:53"
|
||||
elif [ "$1" = "" ]; then
|
||||
if [ "$(uci -q get mosdns.mosdns.listen_port)" -eq 5335 ]; then
|
||||
uci set shadowsocksr.@global[0].pdnsd_enable='0'
|
||||
uci del shadowsocksr.@global[0].tunnel_forward
|
||||
uci del shadowsocksr.@global[0].adblock_url
|
||||
else
|
||||
uci set shadowsocksr.@global[0].pdnsd_enable='1'
|
||||
uci set shadowsocksr.@global[0].tunnel_forward="127.0.0.1:$(uci -q get mosdns.mosdns.listen_port)"
|
||||
fi
|
||||
fi
|
||||
uci commit shadowsocksr
|
||||
if [ "$(pid ssrplus)" ]; then
|
||||
/etc/init.d/shadowsocksr restart
|
||||
fi
|
||||
fi
|
||||
if uci_ext pw; then
|
||||
if [ "$1" = "unset" ]; then
|
||||
uci set passwall.@global[0].dns_mode='dns2tcp'
|
||||
uci set passwall.@global[0].dns_forward="$WAN_DNS1"
|
||||
uci set passwall.@global[0].remote_dns="$WAN_DNS1"
|
||||
uci set passwall.@global[0].dns_cache='1'
|
||||
uci set passwall.@global[0].chinadns_ng='1'
|
||||
elif [ "$1" = "" ]; then
|
||||
uci set passwall.@global[0].dns_mode='udp'
|
||||
uci set passwall.@global[0].dns_forward="127.0.0.1:$(uci -q get mosdns.mosdns.listen_port)"
|
||||
uci set passwall.@global[0].remote_dns="127.0.0.1:$(uci -q get mosdns.mosdns.listen_port)"
|
||||
uci del passwall.@global[0].dns_cache
|
||||
uci del passwall.@global[0].chinadns_ng
|
||||
fi
|
||||
uci commit passwall
|
||||
if [ "$(pid passwall)" ]; then
|
||||
/etc/init.d/passwall restart
|
||||
fi
|
||||
fi
|
||||
|
||||
if uci_ext pw2; then
|
||||
if [ "$1" = "unset" ]; then
|
||||
uci set passwall2.@global[0].direct_dns_protocol='auto'
|
||||
uci del passwall2.@global[0].direct_dns
|
||||
uci set passwall2.@global[0].remote_dns="$WAN_DNS0"
|
||||
uci set passwall2.@global[0].dns_query_strategy='UseIPv4'
|
||||
elif [ "$1" = "" ]; then
|
||||
uci set passwall2.@global[0].direct_dns_protocol='udp'
|
||||
uci set passwall2.@global[0].direct_dns="127.0.0.1:$(uci -q get mosdns.mosdns.listen_port)"
|
||||
uci set passwall2.@global[0].remote_dns_protocol='udp'
|
||||
uci set passwall2.@global[0].remote_dns="127.0.0.1:$(uci -q get mosdns.mosdns.listen_port)"
|
||||
uci set passwall2.@global[0].dns_query_strategy='UseIP'
|
||||
fi
|
||||
uci commit passwall2
|
||||
if [ "$(pid passwall2)" ]; then
|
||||
/etc/init.d/passwall2 restart
|
||||
fi
|
||||
fi
|
||||
|
||||
if uci_ext vssr; then
|
||||
if [ "$1" = "unset" ]; then
|
||||
uci set vssr.@global[0].pdnsd_enable='1'
|
||||
elif [ "$1" = "" ]; then
|
||||
uci set vssr.@global[0].pdnsd_enable='0'
|
||||
fi
|
||||
uci commit vssr
|
||||
if [ "$(pid vssr)" ]; then
|
||||
/etc/init.d/vssr restart
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
193
luci-app-mosdns/root/usr/share/mosdns/default.yaml
Normal file
193
luci-app-mosdns/root/usr/share/mosdns/default.yaml
Normal file
@ -0,0 +1,193 @@
|
||||
log:
|
||||
level: log_level
|
||||
file: "log_file"
|
||||
|
||||
include: []
|
||||
|
||||
data_providers:
|
||||
- tag: geoip
|
||||
file: "/usr/share/v2ray/geoip.dat"
|
||||
auto_reload: true
|
||||
|
||||
- tag: geosite
|
||||
file: "/usr/share/v2ray/geosite.dat"
|
||||
auto_reload: true
|
||||
|
||||
- tag: whitelist
|
||||
file: "/etc/mosdns/rule/whitelist.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: blocklist
|
||||
file: "/etc/mosdns/rule/blocklist.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: greylist
|
||||
file: "/etc/mosdns/rule/greylist.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: hosts
|
||||
file: "/etc/mosdns/rule/hosts.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: redirect
|
||||
file: "/etc/mosdns/rule/redirect.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: local_ptr
|
||||
file: "/etc/mosdns/rule/local-ptr.txt"
|
||||
auto_reload: true
|
||||
|
||||
- tag: adlist
|
||||
file: "/etc/mosdns/rule/adlist.txt"
|
||||
auto_reload: true
|
||||
|
||||
plugins:
|
||||
- tag: lazy_cache
|
||||
type: cache
|
||||
args:
|
||||
size: cache_size
|
||||
lazy_cache_ttl: cache_survival_time
|
||||
|
||||
- tag: modify_ttl
|
||||
type: ttl
|
||||
args:
|
||||
minimal_ttl: minimal_ttl_custom
|
||||
maximum_ttl: maximum_ttl_custom
|
||||
|
||||
- tag: "forward_local"
|
||||
type: forward
|
||||
args:
|
||||
upstream:
|
||||
- addr: local_dns
|
||||
bootstrap:
|
||||
- "bootstrap_dns"
|
||||
|
||||
- tag: "forward_remote"
|
||||
type: fast_forward
|
||||
args:
|
||||
upstream:
|
||||
- addr: remote_dns
|
||||
|
||||
- tag: query_is_whitelist_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:whitelist"
|
||||
|
||||
- tag: query_is_blocklist_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:blocklist"
|
||||
|
||||
- tag: query_is_greylist_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:greylist"
|
||||
|
||||
- tag: query_is_hosts_domain
|
||||
type: hosts
|
||||
args:
|
||||
hosts:
|
||||
- "provider:hosts"
|
||||
|
||||
- tag: query_is_redirect_domain
|
||||
type: redirect
|
||||
args:
|
||||
rule:
|
||||
- "provider:redirect"
|
||||
|
||||
- tag: query_is_local_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:geosite:cn"
|
||||
|
||||
- tag: query_is_non_local_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "provider:geosite:geolocation-!cn"
|
||||
|
||||
- tag: response_has_local_ip
|
||||
type: response_matcher
|
||||
args:
|
||||
ip:
|
||||
- "provider:geoip:cn"
|
||||
|
||||
- tag: query_is_ad_domain
|
||||
type: query_matcher
|
||||
args:
|
||||
domain:
|
||||
- "adblock"
|
||||
|
||||
- tag: match_local_ptr
|
||||
type: query_matcher
|
||||
args:
|
||||
qtype: [12]
|
||||
domain:
|
||||
- "provider:local_ptr"
|
||||
|
||||
- tag: match_qtype65
|
||||
type: query_matcher
|
||||
args:
|
||||
qtype: [65]
|
||||
|
||||
- tag: "main_sequence"
|
||||
type: "sequence"
|
||||
args:
|
||||
exec:
|
||||
- _misc_optm
|
||||
- query_is_hosts_domain
|
||||
- query_is_redirect_domain
|
||||
|
||||
- if: query_is_whitelist_domain
|
||||
exec:
|
||||
- forward_local
|
||||
- modify_ttl
|
||||
- _return
|
||||
|
||||
- if: "query_is_blocklist_domain || query_is_ad_domain || match_local_ptr || match_qtype65"
|
||||
exec:
|
||||
- _new_nxdomain_response
|
||||
- _return
|
||||
|
||||
- lazy_cache
|
||||
|
||||
- if: query_is_greylist_domain
|
||||
exec:
|
||||
- forward_remote
|
||||
- modify_ttl
|
||||
- _return
|
||||
|
||||
- if: query_is_local_domain
|
||||
exec:
|
||||
- forward_local
|
||||
- modify_ttl
|
||||
- _return
|
||||
|
||||
- if: query_is_non_local_domain
|
||||
exec:
|
||||
- _prefer_ipv4
|
||||
- forward_remote
|
||||
- modify_ttl
|
||||
- _return
|
||||
- primary:
|
||||
- forward_local
|
||||
- if: "(! response_has_local_ip) && [_response_valid_answer]"
|
||||
exec:
|
||||
- _drop_response
|
||||
secondary:
|
||||
- _prefer_ipv4
|
||||
- forward_remote
|
||||
- modify_ttl
|
||||
fast_fallback: 200
|
||||
|
||||
servers:
|
||||
- exec: main_sequence
|
||||
listeners:
|
||||
- protocol: udp
|
||||
addr: ":listen_port"
|
||||
- protocol: tcp
|
||||
addr: ":listen_port"
|
102
luci-app-mosdns/root/usr/share/mosdns/mosdns.sh
Executable file
102
luci-app-mosdns/root/usr/share/mosdns/mosdns.sh
Executable file
@ -0,0 +1,102 @@
|
||||
#!/bin/sh
|
||||
|
||||
script_action=${1}
|
||||
|
||||
logfile_path() (
|
||||
configfile=$(uci -q get mosdns.config.configfile)
|
||||
if [ "$configfile" = "/etc/mosdns/config.yaml" ]; then
|
||||
uci -q get mosdns.config.logfile
|
||||
else
|
||||
[ ! -f /etc/mosdns/config_custom.yaml ] && exit 1
|
||||
awk '/^log:/{f=1;next}f==1{if($0~/file:/){print;exit}if($0~/^[^ ]/)exit}' /etc/mosdns/config_custom.yaml | grep -Eo "/[^'\"]+"
|
||||
fi
|
||||
)
|
||||
|
||||
interface_dns() (
|
||||
if [ "$(uci -q get mosdns.config.custom_local_dns)" -eq 1 ]; then
|
||||
uci -q get mosdns.config.local_dns
|
||||
else
|
||||
peerdns=$(uci -q get network.wan.peerdns)
|
||||
proto=$(uci -q get network.wan.proto)
|
||||
if [ "$peerdns" = 0 ] || [ "$proto" = "static" ]; then
|
||||
uci -q get network.wan.dns
|
||||
else
|
||||
interface_status=$(ubus call network.interface.wan status)
|
||||
echo $interface_status | jsonfilter -e "@['dns-server'][0]"
|
||||
echo $interface_status | jsonfilter -e "@['dns-server'][1]"
|
||||
fi
|
||||
[ $? -ne 0 ] && echo "119.29.29.29"
|
||||
fi
|
||||
)
|
||||
|
||||
ad_block() (
|
||||
adblock=$(uci -q get mosdns.config.adblock)
|
||||
if [ "$adblock" -eq 1 ]; then
|
||||
ad_source=$(uci -q get mosdns.config.ad_source)
|
||||
if [ "$ad_source" = "geosite.dat" ]; then
|
||||
echo "provider:geosite:category-ads-all"
|
||||
else
|
||||
echo "provider:adlist"
|
||||
fi
|
||||
else
|
||||
echo "full:disable-category-ads-all.null"
|
||||
fi
|
||||
)
|
||||
|
||||
adlist_update() (
|
||||
ad_source=$(uci -q get mosdns.config.ad_source)
|
||||
[ "$ad_source" = "geosite.dat" ] || [ -z "$ad_source" ] && exit 0
|
||||
AD_TMPDIR=$(mktemp -d) || exit 1
|
||||
if echo "$ad_source" | grep -Eq "^https://raw.githubusercontent.com" ; then
|
||||
google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204)
|
||||
[ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/"
|
||||
fi
|
||||
echo -e "\e[1;32mDownloading $mirror$ad_source\e[0m"
|
||||
curl --connect-timeout 60 -m 90 --ipv4 -fSLo "$AD_TMPDIR/adlist.txt" "$mirror$ad_source"
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -rf "$AD_TMPDIR"
|
||||
exit 1
|
||||
else
|
||||
\cp "$AD_TMPDIR/adlist.txt" /etc/mosdns/rule/adlist.txt
|
||||
echo "$ad_source" > /etc/mosdns/rule/.ad_source
|
||||
rm -rf "$AD_TMPDIR"
|
||||
fi
|
||||
)
|
||||
|
||||
geodat_update() (
|
||||
geodat_download() (
|
||||
google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204)
|
||||
[ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/"
|
||||
echo -e "\e[1;32mDownloading "$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1\e[0m"
|
||||
curl --connect-timeout 60 -m 900 --ipv4 -fSLo "$TMPDIR/$1" ""$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1"
|
||||
)
|
||||
TMPDIR=$(mktemp -d) || exit 1
|
||||
geodat_download geoip.dat && geodat_download geosite.dat
|
||||
if [ $? -ne 0 ]; then
|
||||
rm -rf "$TMPDIR"
|
||||
exit 1
|
||||
fi
|
||||
cp -f "$TMPDIR"/* /usr/share/v2ray
|
||||
rm -rf "$TMPDIR"
|
||||
)
|
||||
|
||||
case $script_action in
|
||||
"dns")
|
||||
interface_dns
|
||||
;;
|
||||
"ad")
|
||||
ad_block
|
||||
;;
|
||||
"geodata")
|
||||
geodat_update && adlist_update
|
||||
;;
|
||||
"logfile")
|
||||
logfile_path
|
||||
;;
|
||||
"adlist_update")
|
||||
adlist_update
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
@ -1,4 +1,6 @@
|
||||
# LuCI Theme Ifit Freedom
|
||||
# LuCI Theme Infinity Freedom
|
||||
#
|
||||
#
|
||||
# Licensed under the Apache License v2.0
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
@ -8,7 +10,8 @@ THEME_NAME:=ifit
|
||||
THEME_TITLE:=ifit
|
||||
|
||||
PKG_NAME:=luci-theme-$(THEME_NAME)
|
||||
PKG_VERSION:=1.6
|
||||
PKG_VERSION:=1.5.2
|
||||
|
||||
PKG_RELEASE:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -18,7 +21,7 @@ define Package/luci-theme-$(THEME_NAME)
|
||||
CATEGORY:=LuCI
|
||||
SUBMENU:=4. Themes
|
||||
DEPENDS:=+libc
|
||||
TITLE:=Ifit by kenzo
|
||||
TITLE:=Ifit Theme
|
||||
URL:=https://github.com/kenzok8/luci-theme-ifit
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
@ -1,7 +1,8 @@
|
||||
/**
|
||||
* InfinityFreedom is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
* ifit is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
*
|
||||
* luci-theme-ifit
|
||||
* Copyright 2020-2023 Richard Yu <xiaoqingfengatgm@gmail.com>
|
||||
*
|
||||
* Have a bug? Please create an issue here on GitHub!
|
||||
* https://github.com/kenzok8/luci-theme-ifit/issues
|
||||
@ -1763,6 +1764,15 @@ small {
|
||||
background-color: #9876AA;
|
||||
}
|
||||
|
||||
.cbi-button-selectAll,
|
||||
.cbi-button-test {
|
||||
display: inline-block;
|
||||
min-width: 0;
|
||||
padding: 0.2rem 0.3rem;
|
||||
font-size: 10pt;
|
||||
background-color: #9876AA;
|
||||
}
|
||||
|
||||
.cbi-optionals {
|
||||
padding: 1rem 1rem 0 1rem;
|
||||
border-top: 1px solid #CCC;
|
||||
@ -2209,6 +2219,7 @@ div#cbi-passwall.cbi-map fieldset > fieldset > div#add_link_div
|
||||
position: fixed;
|
||||
width: 55rem;
|
||||
height: 20rem;
|
||||
background-color: rgba(7,34,62,.95);
|
||||
}
|
||||
|
||||
#add_link_div > div:nth-child(1) > label
|
||||
|
@ -1,7 +1,8 @@
|
||||
/**
|
||||
* InfinityFreedom is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
* ifit is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
*
|
||||
* luci-theme-ifit
|
||||
*
|
||||
*
|
||||
* Have a bug? Please create an issue here on GitHub!
|
||||
* https://github.com/kenzok8/luci-theme-ifit/issues
|
||||
|
@ -1,8 +1,9 @@
|
||||
<%#
|
||||
|
||||
InfinityFreedom is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
ifit is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
|
||||
luci-theme-ifit
|
||||
|
||||
|
||||
Have a bug? Please create an issue here on GitHub!
|
||||
https://github.com/kenzok8/luci-theme-ifit/issues
|
||||
|
@ -1,8 +1,9 @@
|
||||
<%#
|
||||
|
||||
InfinityFreedom is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
ifit is a clean HTML5 theme for LuCI. It is based on luci-theme-material.
|
||||
|
||||
luci-theme-ifit
|
||||
|
||||
|
||||
Have a bug? Please create an issue here on GitHub!
|
||||
https://github.com/kenzok8/luci-theme-ifit/issues
|
||||
|
@ -5,86 +5,41 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mosdns
|
||||
PKG_VERSION:=5.0.1
|
||||
PKG_VERSION:=4.5.3
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=mosdns-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/IrineSistiana/mosdns/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=036007a5e38f1853203c038f34c966a8cc3cb05d06624e73c4bf705938989b56
|
||||
PKG_HASH:=2a13b1b1d862731cf946a8ceaa99523a0eb0eaae56045dd31207b61a5a6d47ae
|
||||
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
PKG_LICENSE_FILE:=LICENSE
|
||||
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_MOSDNS_COMPRESS_GOPROXY \
|
||||
CONFIG_MOSDNS_COMPRESS_UPX
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host upx/host
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
GO_PKG:=github.com/IrineSistiana/mosdns
|
||||
GO_PKG_LDFLAGS:=-s -w
|
||||
GO_PKG_LDFLAGS_X:=main.version=$(PKG_VERSION)
|
||||
GO_PKG_LDFLAGS_X:=main.version=v$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
|
||||
|
||||
define Package/mosdns/Default
|
||||
define Package/mosdns
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=IP Addresses and Names
|
||||
TITLE:=A plug-in DNS forwarder/splitter
|
||||
URL:=https://github.com/IrineSistiana/mosdns
|
||||
endef
|
||||
|
||||
define Package/mosdns
|
||||
$(call Package/mosdns/Default)
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS)
|
||||
endef
|
||||
|
||||
define Package/mosdns-v5
|
||||
$(call Package/mosdns/Default)
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS)
|
||||
endef
|
||||
|
||||
define Package/mosdns/config
|
||||
config MOSDNS_COMPRESS_GOPROXY
|
||||
bool "Compiling with GOPROXY proxy"
|
||||
default n
|
||||
|
||||
config MOSDNS_COMPRESS_UPX
|
||||
bool "Compress executable files with UPX"
|
||||
default y
|
||||
endef
|
||||
|
||||
ifeq ($(CONFIG_MOSDNS_COMPRESS_GOPROXY),y)
|
||||
export GO111MODULE=on
|
||||
export GOPROXY=https://mirrors.aliyun.com/goproxy/
|
||||
endif
|
||||
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle
|
||||
endef
|
||||
|
||||
GO_PKG_TARGET_VARS:=$(filter-out CGO_ENABLED=%,$(GO_PKG_TARGET_VARS)) CGO_ENABLED=0
|
||||
|
||||
define Build/Compile
|
||||
$(call GoPackage/Build/Compile)
|
||||
ifneq ($(CONFIG_MOSDNS_COMPRESS_UPX),)
|
||||
$(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/mosdns
|
||||
endif
|
||||
endef
|
||||
|
||||
define Package/mosdns/install
|
||||
$(call GoPackage/Package/Install/Bin,$(1))
|
||||
endef
|
||||
|
||||
define Package/mosdns-v5/install
|
||||
$(call GoPackage/Package/Install/Bin,$(1))
|
||||
endef
|
||||
|
||||
$(eval $(call GoBinPackage,mosdns))
|
||||
$(eval $(call BuildPackage,mosdns))
|
||||
$(eval $(call BuildPackage,mosdns-v5))
|
||||
|
Loading…
Reference in New Issue
Block a user