mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-15 13:03:00 +08:00
🎨 Sync 2026-04-09 04:06:07
This commit is contained in:
1 parent
06a2472ce6
commit
6b5055cf91
10 files changed
+199
-135
No files matched your search
@@ -12,6 +12,10 @@ local ech_domain = {}
|
||||
local local_version = api.get_app_version("sing-box"):match("[^v]+")
|
||||
local version_ge_1_13_0 = api.compare_versions(local_version, ">=", "1.13.0")
|
||||
|
||||
local GLOBAL = {
|
||||
DNS_SERVER = {}
|
||||
}
|
||||
|
||||
local GEO_VAR = {
|
||||
OK = nil,
|
||||
DIR = nil,
|
||||
@@ -159,6 +163,29 @@ 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
|
||||
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
|
||||
GLOBAL.DNS_SERVER[node_id] = {
|
||||
server = {
|
||||
tag = dns_tag,
|
||||
type = dns_proto,
|
||||
server = server_address,
|
||||
server_port = server_port,
|
||||
detour = "direct"
|
||||
},
|
||||
domain = node.address
|
||||
}
|
||||
result.domain_resolver.server = dns_tag
|
||||
end
|
||||
|
||||
local tls = nil
|
||||
if node.protocol == "hysteria" or node.protocol == "hysteria2" or node.protocol == "tuic" or node.protocol == "naive" then
|
||||
node.tls = "1"
|
||||
@@ -1695,6 +1722,15 @@ function gen_config(var)
|
||||
reverse_mapping = true, -- After responding to a DNS query, a reverse mapping of the IP address is stored to provide the domain name for routing purposes.
|
||||
}
|
||||
|
||||
for i, v in pairs(GLOBAL.DNS_SERVER) do
|
||||
table.insert(dns.servers, v.server)
|
||||
table.insert(dns.rules, {
|
||||
action = "route",
|
||||
server = v.server.tag,
|
||||
domain = v.domain,
|
||||
})
|
||||
end
|
||||
|
||||
table.insert(dns.servers, {
|
||||
type = "local",
|
||||
tag = "local"
|
||||
@@ -1855,42 +1891,6 @@ function gen_config(var)
|
||||
})
|
||||
end
|
||||
|
||||
local dnsmasq_server_domain = api.get_dnsmasq_server_domain()
|
||||
if next(dnsmasq_server_domain) then
|
||||
local new_dns_servers = {}
|
||||
for domain, v in pairs(dnsmasq_server_domain) do
|
||||
if not new_dns_servers[v.dnsmasq_dns] then
|
||||
new_dns_servers[v.dnsmasq_dns] = {
|
||||
server = {
|
||||
tag = v.dnsmasq_dns,
|
||||
type = "udp",
|
||||
server = v.server,
|
||||
server_port = v.port,
|
||||
detour = "direct",
|
||||
},
|
||||
rule = {
|
||||
action = "route",
|
||||
domain_suffix = {},
|
||||
server = v.dnsmasq_dns,
|
||||
strategy = direct_strategy,
|
||||
},
|
||||
}
|
||||
end
|
||||
table.insert(new_dns_servers[v.dnsmasq_dns].rule.domain_suffix, domain)
|
||||
end
|
||||
for k, v in pairs(new_dns_servers) do
|
||||
table.insert(dns.servers, v.server)
|
||||
table.insert(dns.rules, 1, v.rule)
|
||||
table.insert(route.rules, 1, {
|
||||
action = "route",
|
||||
network = v.server.type,
|
||||
ip_cidr = v.server.server,
|
||||
port = v.server.server_port,
|
||||
outbound = "direct",
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local default_dns_flag = "remote"
|
||||
if node_id and redir_port then
|
||||
local node = get_node_by_id(node_id)
|
||||
@@ -2083,7 +2083,10 @@ function gen_config(var)
|
||||
if not value["_flag_proxy_tag"] and not value.detour and value["_id"] and value.server and value.server_port and not no_run then
|
||||
sys.call(string.format("echo '%s' >> %s", value["_id"], api.TMP_PATH .. "/direct_node_list"))
|
||||
end
|
||||
if value.detour then
|
||||
if not value.detour and value.type ~= "direct" then
|
||||
value.detour = "direct"
|
||||
end
|
||||
if value.server and not api.datatypes.hostname(value.server) then
|
||||
value.domain_resolver = nil
|
||||
end
|
||||
for k, v in pairs(config.outbounds[index]) do
|
||||
|
||||
Reference in new issue
Block a user