mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-12 12:37:51 +08:00
🦄 Sync 2026-04-11 02:41:05
This commit is contained in:
1 parent
c6d54c1769
commit
f118665d70
9 files changed
+203
-66
No files matched your search
@@ -12,7 +12,8 @@ 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 = {}
|
||||
DNS_SERVER = {},
|
||||
VPS_EXCLUDE = {}
|
||||
}
|
||||
|
||||
local GEO_VAR = {
|
||||
@@ -159,7 +160,6 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
}
|
||||
|
||||
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
|
||||
local server_port
|
||||
@@ -168,12 +168,8 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
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
|
||||
server_port = _a.port or 443
|
||||
server_path = _a.pathname or ""
|
||||
end
|
||||
else
|
||||
server_address = node.domain_resolver_dns
|
||||
@@ -184,19 +180,28 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
server_port = tonumber(split[#split])
|
||||
end
|
||||
end
|
||||
GLOBAL.DNS_SERVER[node_id] = {
|
||||
server = {
|
||||
tag = dns_tag,
|
||||
type = dns_proto,
|
||||
server = server_address,
|
||||
server_port = server_port,
|
||||
path = server_path,
|
||||
domain_resolver = "direct",
|
||||
detour = "direct"
|
||||
},
|
||||
domain = node.address
|
||||
}
|
||||
result.domain_resolver.server = dns_tag
|
||||
local dns_key = dns_proto .. "|" .. tostring(server_address) .. "|" .. tostring(server_port) .. "|" .. tostring(server_path or "")
|
||||
if not GLOBAL.DNS_SERVER[dns_key] then
|
||||
GLOBAL.DNS_SERVER[dns_key] = {
|
||||
server = {
|
||||
tag = "dns-node-" .. api.gen_short_uuid(),
|
||||
type = dns_proto,
|
||||
server = server_address,
|
||||
server_port = server_port,
|
||||
path = server_path,
|
||||
domain_resolver = "direct",
|
||||
detour = "direct"
|
||||
},
|
||||
domain = {}
|
||||
}
|
||||
end
|
||||
local exists
|
||||
for _, d in ipairs(GLOBAL.DNS_SERVER[dns_key].domain) do
|
||||
if d == node.address then exists = true; break end
|
||||
end
|
||||
if not exists then table.insert(GLOBAL.DNS_SERVER[dns_key].domain, node.address) end
|
||||
result.domain_resolver.server = GLOBAL.DNS_SERVER[dns_key].server.tag
|
||||
GLOBAL.VPS_EXCLUDE[node.address] = true
|
||||
end
|
||||
|
||||
local tls = nil
|
||||
@@ -1766,12 +1771,8 @@ function gen_config(var)
|
||||
remote_server.type = "h3"
|
||||
end
|
||||
remote_server.server = _a.hostname
|
||||
if _a.port then
|
||||
remote_server.server_port = _a.port
|
||||
else
|
||||
remote_server.server_port = 443
|
||||
end
|
||||
remote_server.path = _a.pathname
|
||||
remote_server.server_port = _a.port or 443
|
||||
remote_server.path = _a.pathname or ""
|
||||
end
|
||||
if remote_dns_doh_ip and remote_dns_doh_host ~= remote_dns_doh_ip and not api.is_ip(remote_dns_doh_host) then
|
||||
local domains = {}
|
||||
@@ -1825,9 +1826,11 @@ function gen_config(var)
|
||||
|
||||
if direct_dns_udp_server or direct_dns_tcp_server then
|
||||
local domain = {}
|
||||
local nodes_domain_text = sys.exec('uci show passwall | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u')
|
||||
local nodes_domain_text = sys.exec([[uci show passwall | sed -n "s/.*\.address='\([^']*\)'/\1/p" | sort -u]])
|
||||
string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w)
|
||||
table.insert(domain, w)
|
||||
if w and w ~= "" and api.datatypes.hostname(w) and not GLOBAL.VPS_EXCLUDE[w] then
|
||||
table.insert(domain, w)
|
||||
end
|
||||
end)
|
||||
if #domain > 0 then
|
||||
table.insert(dns_domain_rules, 1, {
|
||||
@@ -1970,9 +1973,11 @@ function gen_config(var)
|
||||
for i, v in pairs(GLOBAL.DNS_SERVER) do
|
||||
table.insert(dns.servers, v.server)
|
||||
if not dns.rules then dns.rules = {} end
|
||||
table.insert(dns.rules, {
|
||||
table.insert(dns.rules, 1, {
|
||||
action = "route",
|
||||
server = v.server.tag,
|
||||
disable_cache = false,
|
||||
rewrite_ttl = 30,
|
||||
domain = v.domain,
|
||||
})
|
||||
end
|
||||
|
||||
Reference in new issue
Block a user