🎁 Sync 2026-04-09 04:39:26

This commit is contained in:
github-actions[bot] committed 2026-04-09 04:39:26 +08:00
1 parent a9bf61bd5e
commit a4e69b8f7b
7 files changed
+69 -24

No files matched your search

@@ -722,6 +722,7 @@ o = s:option(ListValue, _n("domain_resolver"), translate("Domain DNS Resolve"),
o:value("", translate("Auto"))
o:value("tcp", "TCP")
o:value("udp", "UDP")
o:value("https", "HTTPS")
o = s:option(Value, _n("domain_resolver_dns"), "DNS")
o.datatype = "or(ipaddr,ipaddrport)"
@@ -731,6 +732,12 @@ o.default = o.keylist[1]
o:depends({ [_n("domain_resolver")] = "tcp" })
o:depends({ [_n("domain_resolver")] = "udp" })
o = s:option(Value, _n("domain_resolver_dns_https"), "DNS")
o:value("https://120.53.53.53/dns-query", "DNSPod")
o:value("https://223.5.5.5/dns-query", "AliDNS")
o.default = o.keylist[1]
o:depends({ [_n("domain_resolver")] = "https" })
o = s:option(ListValue, _n("domain_strategy"), translate("Domain Strategy"), translate("If is domain name, The requested domain name will be resolved to IP before connect."))
o.default = ""
o:value("", translate("Auto"))
@@ -780,6 +780,7 @@ o = s:option(ListValue, _n("domain_resolver"), translate("Domain DNS Resolve"),
o:value("", translate("Auto"))
o:value("tcp", "TCP")
o:value("udp", "UDP")
o:value("https", "HTTPS")
o = s:option(Value, _n("domain_resolver_dns"), "DNS")
o.datatype = "or(ipaddr,ipaddrport)"
@@ -789,6 +790,12 @@ o.default = o.keylist[1]
o:depends({ [_n("domain_resolver")] = "tcp" })
o:depends({ [_n("domain_resolver")] = "udp" })
o = s:option(Value, _n("domain_resolver_dns_https"), "DNS")
o:value("https://120.53.53.53/dns-query", "DNSPod")
o:value("https://223.5.5.5/dns-query", "AliDNS")
o.default = o.keylist[1]
o:depends({ [_n("domain_resolver")] = "https" })
o = s:option(ListValue, _n("domain_strategy"), translate("Domain Strategy"), translate("If is domain name, The requested domain name will be resolved to IP before connect."))
o.default = ""
o:value("", translate("Auto"))
@@ -163,15 +163,31 @@ function gen_outbound(flag, node, tag, proxy_table)
detour = node.detour,
}
if api.datatypes.hostname(node.address) and (node.domain_resolver == "tcp" or node.domain_resolver == "udp") and node.domain_resolver_dns then
if api.datatypes.hostname(node.address) and node.domain_resolver and (node.domain_resolver_dns or node.domain_resolver_dns_https) then
local dns_tag = node_id .. "_dns"
local dns_proto = node.domain_resolver
local server_address = node.domain_resolver_dns
local server_port = 53
local split = api.split(server_address, ":")
if #split > 1 then
server_address = split[1]
server_port = tonumber(split[#split])
local server_address
local server_port
local server_path
if dns_proto == "https" then
local _a = api.parseURL(node.domain_resolver_dns_https)
if _a then
server_address = _a.hostname
if _a.port then
server_port = _a.port
else
server_port = 443
end
server_path = _a.pathname
end
else
server_address = node.domain_resolver_dns
server_port = 53
local split = api.split(server_address, ":")
if #split > 1 then
server_address = split[1]
server_port = tonumber(split[#split])
end
end
GLOBAL.DNS_SERVER[node_id] = {
server = {
@@ -179,6 +195,8 @@ function gen_outbound(flag, node, tag, proxy_table)
type = dns_proto,
server = server_address,
server_port = server_port,
path = server_path,
domain_resolver = "local",
detour = "direct"
},
domain = node.address
@@ -399,25 +399,39 @@ function gen_outbound(flag, node, tag, proxy_table)
end
end
if api.datatypes.hostname(node.address) and (node.domain_resolver == "tcp" or node.domain_resolver == "udp") and node.domain_resolver_dns then
if api.datatypes.hostname(node.address) and node.domain_resolver and (node.domain_resolver_dns or node.domain_resolver_dns_https) then
local dns_tag = node_id .. "_dns"
local dns_proto = node.domain_resolver
local server_address = node.domain_resolver_dns
local server_port = 53
local split = api.split(server_address, ":")
if #split > 1 then
server_address = split[1]
server_port = tonumber(split[#split])
end
local config_address = server_address
if dns_proto == "tcp" then
config_address = dns_proto .. "://" .. server_address .. ":" .. server_port
local config_address
local config_port
if dns_proto == "https" then
local _a = api.parseURL(node.domain_resolver_dns_https)
if _a then
config_address = node.domain_resolver_dns_https
if _a.port then
config_port = _a.port
else
config_port = 443
end
end
else
local server_address = node.domain_resolver_dns
local config_port = 53
local split = api.split(server_address, ":")
if #split > 1 then
server_address = split[1]
config_port = tonumber(split[#split])
end
config_address = server_address
if dns_proto == "tcp" then
config_address = dns_proto .. "://" .. server_address .. ":" .. config_port
end
end
GLOBAL.DNS_SERVER[node_id] = {
tag = dns_tag,
queryStrategy = node.domain_strategy or "UseIP",
address = config_address,
port = server_port,
port = config_port,
domains = {"full:" .. node.address}
}
end
@@ -1674,7 +1688,6 @@ function gen_config(var)
dns_server = nil
end
if dns_server then
dns_server.finalQuery = true
dns_server.domains = value.domain
if value.shunt_rule_name then
dns_server.tag = "dns-in-" .. value.shunt_rule_name