luci: fix Xray remote DNS detour

This commit is contained in:
xiaorouji 2025-04-22 13:10:49 +08:00
parent e22af704a2
commit 4ab06d3637

View File

@ -1368,7 +1368,7 @@ function gen_config(var)
default_dns_server = api.clone(value) default_dns_server = api.clone(value)
default_dns_server.server.tag = default_dns_tag default_dns_server.server.tag = default_dns_tag
if value.server.tag == remote_dns_tag then if value.server.tag == remote_dns_tag then
default_dns_server.outboundTag = COMMON.default_outbound_tag default_dns_server.outboundTag = value.outboundTag or COMMON.default_outbound_tag
default_dns_server.balancerTag = COMMON.default_balancer_tag default_dns_server.balancerTag = COMMON.default_balancer_tag
end end
table.insert(dns_servers, 1, default_dns_server) table.insert(dns_servers, 1, default_dns_server)
@ -1381,6 +1381,8 @@ function gen_config(var)
for index, value in ipairs(dns_domain_rules) do for index, value in ipairs(dns_domain_rules) do
if value.domain and (value.outboundTag or value.balancerTag) then if value.domain and (value.outboundTag or value.balancerTag) then
local dns_server = nil local dns_server = nil
local dns_outboundTag = value.outboundTag
local dns_balancerTag = value.balancerTag
if value.outboundTag == "direct" then if value.outboundTag == "direct" then
dns_server = api.clone(_direct_dns) dns_server = api.clone(_direct_dns)
else else
@ -1388,6 +1390,10 @@ function gen_config(var)
dns_server = api.clone(_remote_fakedns) dns_server = api.clone(_remote_fakedns)
else else
dns_server = api.clone(_remote_dns) dns_server = api.clone(_remote_dns)
if remote_dns_detour == "direct" then
dns_outboundTag = "direct"
dns_balancerTag = nil
end
end end
end end
dns_server.domains = value.domain dns_server.domains = value.domain
@ -1397,8 +1403,8 @@ function gen_config(var)
if dns_server then if dns_server then
table.insert(dns_servers, { table.insert(dns_servers, {
outboundTag = value.outboundTag, outboundTag = dns_outboundTag,
balancerTag = value.balancerTag, balancerTag = dns_balancerTag,
server = dns_server server = dns_server
}) })
end end