mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 19:02:51 +08:00
🎄 Sync 2026-08-30 03:21:07
This commit is contained in:
1 parent
c2438b27c7
commit
85339c08e1
30 files changed
+647
-93
No files matched your search
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall2
|
||||
PKG_VERSION:=26.8.27
|
||||
PKG_RELEASE:=104
|
||||
PKG_RELEASE:=105
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
|
||||
@@ -685,6 +685,8 @@ function rollback_rules()
|
||||
local geo_dir = (uci_get("@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/")
|
||||
fs.move(bak_dir .. arg_type .. ".dat", geo_dir .. arg_type .. ".dat")
|
||||
fs.rmdir(bak_dir)
|
||||
uci_set("@global[0]", "flush_set", "1")
|
||||
uci_save(true)
|
||||
http_write_json_ok()
|
||||
end
|
||||
|
||||
|
||||
@@ -164,6 +164,22 @@ node_socks_bind_local:depends({ node = "", ["!reverse"] = true })
|
||||
|
||||
s:tab("DNS", translate("DNS"))
|
||||
|
||||
o = s:taboption("DNS", ListValue, "direct_dns_protocol", translate("Direct DNS Protocol"))
|
||||
o:value("", translate("Auto"))
|
||||
--o:value("tcp", "TCP")
|
||||
o:value("udp", "UDP")
|
||||
|
||||
o = s:taboption("DNS", Value, "direct_dns", translate("Direct DNS"))
|
||||
o.datatype = "or(ipaddr,ipaddrport(1))"
|
||||
o.default = "223.5.5.5"
|
||||
o:value("223.5.5.5")
|
||||
o:value("223.6.6.6")
|
||||
o:value("114.114.114.114")
|
||||
o:value("119.29.29.29")
|
||||
o:value("180.76.76.76")
|
||||
o:depends("direct_dns_protocol", "tcp")
|
||||
o:depends("direct_dns_protocol", "udp")
|
||||
|
||||
o = s:taboption("DNS", ListValue, "direct_dns_query_strategy", translate("Direct Query Strategy"))
|
||||
o.default = "UseIP"
|
||||
o:value("UseIP")
|
||||
|
||||
@@ -419,6 +419,10 @@ if singbox_tags:find("with_quic") then
|
||||
o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" }
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."))
|
||||
o.default = "0"
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Value, "hysteria2_auth_password", translate("Auth Password"))
|
||||
o.password = true
|
||||
o:depends({ protocol = "hysteria2"})
|
||||
|
||||
@@ -355,6 +355,10 @@ o = s:option(DynamicList, "hysteria2_realm_stun", translate("Realm STUN"))
|
||||
o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" }
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."))
|
||||
o.default = "0"
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Value, "hysteria2_auth_password", translate("Auth Password"))
|
||||
o.password = true
|
||||
o:depends({ protocol = "hysteria2"})
|
||||
|
||||
@@ -183,6 +183,10 @@ if singbox_tags:find("with_quic") then
|
||||
o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" }
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."))
|
||||
o.default = "0"
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(ListValue, "hysteria2_obfs_type", translate("Obfs Type"))
|
||||
o:value("", translate("Disable"))
|
||||
o:value("salamander")
|
||||
|
||||
@@ -148,6 +148,10 @@ o = s:option(DynamicList, "hysteria2_realm_stun", translate("Realm STUN"))
|
||||
o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" }
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."))
|
||||
o.default = "0"
|
||||
o:depends({ hysteria2_realms = "1" })
|
||||
|
||||
o = s:option(ListValue, "hysteria2_obfs_type", translate("Obfs Type"))
|
||||
o:value("", translate("Disable"))
|
||||
o:value("salamander")
|
||||
|
||||
@@ -68,13 +68,6 @@ local function convert_geofile()
|
||||
end
|
||||
local function convert(file_path, prefix, tags)
|
||||
if next(tags) and fs.access(file_path) then
|
||||
local md5_file = GEO_VAR.TO_SRS_PATH .. prefix .. ".dat.md5"
|
||||
local new_md5 = sys.exec("md5sum " .. file_path .. " 2>/dev/null | awk '{print $1}'"):gsub("\n", "")
|
||||
local old_md5 = sys.exec("[ -f " .. md5_file .. " ] && head -n 1 " .. md5_file .. " | tr -d ' \t\n' || echo ''")
|
||||
if new_md5 ~= "" and new_md5 ~= old_md5 then
|
||||
sys.call("printf '%s' " .. new_md5 .. " > " .. md5_file)
|
||||
sys.call("rm -rf " .. GEO_VAR.TO_SRS_PATH .. prefix .. "-*.srs" )
|
||||
end
|
||||
for k in pairs(tags) do
|
||||
geo_convert_srs({
|
||||
["geo_path"] = file_path,
|
||||
@@ -624,6 +617,7 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
realm.scheme = nil
|
||||
realm.address = nil
|
||||
realm.port = nil
|
||||
realm.port_mapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil
|
||||
return realm
|
||||
end
|
||||
return nil
|
||||
@@ -980,6 +974,7 @@ function gen_config_server(node)
|
||||
realm.address = nil
|
||||
realm.port = nil
|
||||
realm.stun_domain_resolver = "direct"
|
||||
realm.port_mapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil
|
||||
return realm
|
||||
end
|
||||
return nil
|
||||
@@ -1122,6 +1117,8 @@ function gen_config(var)
|
||||
local dns_listen_port = var["dns_listen_port"]
|
||||
local direct_dns_udp_server = var["direct_dns_udp_server"]
|
||||
local direct_dns_udp_port = var["direct_dns_udp_port"]
|
||||
local direct_dns_tcp_server = var["direct_dns_tcp_server"]
|
||||
local direct_dns_tcp_port = var["direct_dns_tcp_port"]
|
||||
local direct_dns_query_strategy = var["direct_dns_query_strategy"]
|
||||
local direct_ipset = var["direct_ipset"]
|
||||
local direct_nftset = var["direct_nftset"]
|
||||
@@ -1834,10 +1831,18 @@ function gen_config(var)
|
||||
server_port = tonumber(direct_dns_udp_port) or 53,
|
||||
detour = "direct",
|
||||
})
|
||||
elseif direct_dns_tcp_server then
|
||||
table.insert(dns.servers, {
|
||||
tag = "direct",
|
||||
type = "tcp",
|
||||
server = direct_dns_tcp_server,
|
||||
server_port = tonumber(direct_dns_tcp_port) or 53,
|
||||
detour = "direct",
|
||||
})
|
||||
end
|
||||
|
||||
for i, v in pairs(GLOBAL.DNS_SERVER) do
|
||||
if direct_dns_udp_server then
|
||||
if direct_dns_udp_server or direct_dns_tcp_server then
|
||||
v.server.domain_resolver = "direct"
|
||||
end
|
||||
table.insert(dns.servers, v.server)
|
||||
@@ -1902,7 +1907,7 @@ function gen_config(var)
|
||||
end
|
||||
end
|
||||
|
||||
if direct_dns_udp_server then
|
||||
if direct_dns_udp_server or direct_dns_tcp_server then
|
||||
local nodes_domain = {}
|
||||
local nodes_domain_text = sys.exec('uci show passwall2 | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u')
|
||||
string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w)
|
||||
@@ -2089,6 +2094,7 @@ function gen_config(var)
|
||||
fakedns_dns_rule.query_type = { "A", "AAAA" }
|
||||
end
|
||||
fakedns_dns_rule.server = fakedns_tag
|
||||
fakedns_dns_rule.rewrite_ttl = 1
|
||||
fakedns_dns_rule.disable_cache = true
|
||||
fakedns_dns_rule.client_subnet = nil
|
||||
table.insert(dns.rules, fakedns_dns_rule)
|
||||
@@ -2125,7 +2131,7 @@ function gen_config(var)
|
||||
query_type = dns_rule_query_type,
|
||||
server = fakedns_tag,
|
||||
disable_cache = true,
|
||||
rewrite_ttl = tonumber(remote_rewrite_ttl)
|
||||
rewrite_ttl = 1
|
||||
}
|
||||
table.insert(dns.rules, fakedns_dns_rule)
|
||||
end
|
||||
|
||||
@@ -318,7 +318,8 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
type = "realm",
|
||||
settings = {
|
||||
url = url,
|
||||
stunServers = stun
|
||||
stunServers = stun,
|
||||
portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil
|
||||
}
|
||||
}
|
||||
udp[#udp+1] = r
|
||||
@@ -788,7 +789,8 @@ function gen_config_server(node)
|
||||
type = "realm",
|
||||
settings = {
|
||||
url = url,
|
||||
stunServers = stun
|
||||
stunServers = stun,
|
||||
portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil
|
||||
}
|
||||
}
|
||||
udp[#udp+1] = r
|
||||
@@ -887,6 +889,8 @@ function gen_config(var)
|
||||
local dns_listen_port = var["dns_listen_port"]
|
||||
local direct_dns_udp_server = var["direct_dns_udp_server"]
|
||||
local direct_dns_udp_port = var["direct_dns_udp_port"]
|
||||
local direct_dns_tcp_server = var["direct_dns_tcp_server"]
|
||||
local direct_dns_tcp_port = var["direct_dns_tcp_port"]
|
||||
local direct_dns_query_strategy = var["direct_dns_query_strategy"]
|
||||
local direct_ipset = var["direct_ipset"]
|
||||
local direct_nftset = var["direct_nftset"]
|
||||
@@ -1560,13 +1564,24 @@ function gen_config(var)
|
||||
port = tonumber(direct_dns_udp_port) or 53,
|
||||
queryStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP"
|
||||
}
|
||||
|
||||
if _direct_dns.address then
|
||||
table.insert(dns_servers, {
|
||||
outboundTag = "direct",
|
||||
server = _direct_dns
|
||||
})
|
||||
table.insert(dns_servers, {
|
||||
outboundTag = "direct",
|
||||
server = _direct_dns
|
||||
})
|
||||
elseif direct_dns_tcp_server then
|
||||
if api.is_ipv6(direct_dns_tcp_server) then
|
||||
direct_dns_tcp_server = api.get_ipv6_full(direct_dns_tcp_server)
|
||||
end
|
||||
_direct_dns = {
|
||||
tag = direct_dns_tag,
|
||||
address = "tcp://" .. direct_dns_tcp_server .. ":" .. tonumber(direct_dns_tcp_port) or 53,
|
||||
port = tonumber(direct_dns_tcp_port) or 53,
|
||||
queryStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP"
|
||||
}
|
||||
table.insert(dns_servers, {
|
||||
outboundTag = "direct",
|
||||
server = _direct_dns
|
||||
})
|
||||
end
|
||||
|
||||
if next(GLOBAL.DNS_HOSTNAME) then
|
||||
@@ -1687,7 +1702,7 @@ function gen_config(var)
|
||||
})
|
||||
end
|
||||
|
||||
if direct_dns_udp_server then
|
||||
if direct_dns_udp_server or direct_dns_tcp_server then
|
||||
local domain = {}
|
||||
local nodes_domain_text = sys.exec('uci show passwall2 | grep ".address=" | cut -d "\'" -f 2 | grep "[a-zA-Z]$" | sort -u')
|
||||
string.gsub(nodes_domain_text, '[^' .. "\r\n" .. ']+', function(w)
|
||||
|
||||
@@ -23,8 +23,8 @@ local map = self.map
|
||||
<% if luci.http.formvalue("cbi.apply") == "1" and map.is_js_luci then -%>
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("luci-loaded", function() {
|
||||
L.env.apply_display = 2; //Write whatever you want, it's all just a fake progress bar anyway.
|
||||
L.env.apply_holdoff = 1;
|
||||
//L.env.apply_display = 2; //Write whatever you want, it's all just a fake progress bar anyway.
|
||||
//L.env.apply_holdoff = 1;
|
||||
|
||||
let tt;
|
||||
let flag = 2;
|
||||
@@ -50,10 +50,12 @@ local map = self.map
|
||||
}
|
||||
|
||||
window.setTimeout(() => {
|
||||
<% if not map.redirect then -%>
|
||||
if (tt)
|
||||
window.clearTimeout(tt);
|
||||
L.ui.changes.displayStatus(false);
|
||||
window.location = window.location.href.split('#')[0];
|
||||
L.ui.changes.displayStatus(false);
|
||||
<% if not map.redirect then -%>
|
||||
//window.location = window.location.href.split('#')[0];
|
||||
window.location = "<%=map.api.url("log")%>";
|
||||
<%- else %>
|
||||
window.location.href = "<%=map.redirect%>";
|
||||
<%- end %>
|
||||
|
||||
@@ -2420,6 +2420,9 @@ msgstr "اندازه بسته Gecko (دقیقه)"
|
||||
msgid "Gecko Packet Size (max)"
|
||||
msgstr "اندازه بسته Gecko (حداکثر)"
|
||||
|
||||
msgid "Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."
|
||||
msgstr "برای بهبود موفقیت در پانچ کردن حفره، نگاشت پورت UPnP/NAT-PMP را روی گیتوی خود فعال کنید."
|
||||
|
||||
msgid "valid time (hh:mm)"
|
||||
msgstr "زمان معتبر (ساعت:میلیمتر)"
|
||||
|
||||
|
||||
@@ -2418,6 +2418,9 @@ msgstr "Размер упаковки Gecko (мин)"
|
||||
msgid "Gecko Packet Size (max)"
|
||||
msgstr "Размер упаковки Gecko (макс)"
|
||||
|
||||
msgid "Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."
|
||||
msgstr "Включите сопоставление портов UPnP/NAT-PMP на вашем шлюзе, чтобы повысить вероятность успешного выполнения операций "пробивания дыр"."
|
||||
|
||||
msgid "valid time (hh:mm)"
|
||||
msgstr "Время действия (чч:мм)"
|
||||
|
||||
|
||||
@@ -2406,6 +2406,9 @@ msgstr "Gecko 包大小(最小)"
|
||||
msgid "Gecko Packet Size (max)"
|
||||
msgstr "Gecko 包大小(最大)"
|
||||
|
||||
msgid "Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."
|
||||
msgstr "在网关上启用 UPnP/NAT-PMP 端口映射以提升打洞成功率。"
|
||||
|
||||
msgid "valid time (hh:mm)"
|
||||
msgstr "有效时间(hh:mm)"
|
||||
|
||||
|
||||
@@ -2412,6 +2412,9 @@ msgstr "Gecko 包大小(最小)"
|
||||
msgid "Gecko Packet Size (max)"
|
||||
msgstr "Gecko 包大小(最大)"
|
||||
|
||||
msgid "Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success."
|
||||
msgstr "在網關上啟用 UPnP/NAT-PMP 連接埠對映以提升打洞成功率。"
|
||||
|
||||
msgid "valid time (hh:mm)"
|
||||
msgstr "有效時間(hh:mm)"
|
||||
|
||||
|
||||
@@ -99,8 +99,11 @@ run_xray() {
|
||||
json_add_string "local_http_password" "${http_password}"
|
||||
}
|
||||
}
|
||||
local direct_dns_proto=${DIRECT_DNS_PROTO}
|
||||
local direct_dns_server=${DIRECT_DNS_SERVER}
|
||||
local direct_dns_port=${DIRECT_DNS_PORT}
|
||||
[ -n "$dns_listen_port" ] && {
|
||||
local dns_msg="DNS[${dns_listen_port}]:($(i18n "Direct DNS: %s" "${AUTO_DNS}")"
|
||||
local dns_msg="DNS[${dns_listen_port}]:($(i18n "Direct DNS: %s" "${direct_dns_proto}://${direct_dns_server}:${direct_dns_port}")"
|
||||
json_add_string "dns_listen_port" "${dns_listen_port}"
|
||||
[ -n "$dns_cache" ] && json_add_string "dns_cache" "${dns_cache}"
|
||||
[ "${node_protocol}" = "_shunt" ] && local write_ipset_direct=$(config_n_get $node write_ipset_direct 0)
|
||||
@@ -116,9 +119,10 @@ run_xray() {
|
||||
local direct_ipset6="psw2_${node}_white6"
|
||||
local direct_ipset="${direct_ipset4},${direct_ipset6}"
|
||||
fi
|
||||
run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} server_dns=${AUTO_DNS} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf}
|
||||
DIRECT_DNS_UDP_PORT=${direct_dnsmasq_listen_port}
|
||||
DIRECT_DNS_UDP_SERVER="127.0.0.1"
|
||||
run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} proto=${direct_dns_proto} server_dns="${direct_dns_server}#${direct_dns_port}" ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf}
|
||||
direct_dns_proto="udp"
|
||||
direct_dns_server="127.0.0.1"
|
||||
direct_dns_port=${direct_dnsmasq_listen_port}
|
||||
[ -n "${direct_ipset}" ] && {
|
||||
json_add_string "direct_ipset" "${direct_ipset}"
|
||||
set_cache_var "node_${node}_direct_ipset4" "${direct_ipset4}"
|
||||
@@ -168,8 +172,8 @@ run_xray() {
|
||||
[ -n "$remote_dns_client_ip" ] && json_add_string "remote_dns_client_ip" "${remote_dns_client_ip}"
|
||||
log_out="${dns_msg})"
|
||||
}
|
||||
json_add_string "direct_dns_udp_port" "${DIRECT_DNS_UDP_PORT}"
|
||||
json_add_string "direct_dns_udp_server" "${DIRECT_DNS_UDP_SERVER}"
|
||||
json_add_string "direct_dns_${direct_dns_proto}_server" "${direct_dns_server}"
|
||||
json_add_string "direct_dns_${direct_dns_proto}_port" "${direct_dns_port}"
|
||||
json_add_string "direct_dns_query_strategy" "${direct_dns_query_strategy}"
|
||||
|
||||
[ -n "${redir_port}" ] && {
|
||||
@@ -241,8 +245,11 @@ run_singbox() {
|
||||
json_add_string "local_http_password" "${http_password}"
|
||||
}
|
||||
}
|
||||
local direct_dns_proto=${DIRECT_DNS_PROTO}
|
||||
local direct_dns_server=${DIRECT_DNS_SERVER}
|
||||
local direct_dns_port=${DIRECT_DNS_PORT}
|
||||
[ -n "$dns_listen_port" ] && {
|
||||
local dns_msg="DNS[${dns_listen_port}]:($(i18n "Direct DNS: %s" "${AUTO_DNS}")"
|
||||
local dns_msg="DNS[${dns_listen_port}]:($(i18n "Direct DNS: %s" "${direct_dns_proto}://${direct_dns_server}:${direct_dns_port}")"
|
||||
json_add_string "dns_listen_port" "${dns_listen_port}"
|
||||
[ -n "$dns_cache" ] && json_add_string "dns_cache" "${dns_cache}"
|
||||
[ "${node_protocol}" = "_shunt" ] && local write_ipset_direct=$(config_n_get $node write_ipset_direct 0)
|
||||
@@ -258,9 +265,10 @@ run_singbox() {
|
||||
local direct_ipset6="psw2_${node}_white6"
|
||||
local direct_ipset="${direct_ipset4},${direct_ipset6}"
|
||||
fi
|
||||
run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} server_dns=${AUTO_DNS} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf}
|
||||
DIRECT_DNS_UDP_PORT=${direct_dnsmasq_listen_port}
|
||||
DIRECT_DNS_UDP_SERVER="127.0.0.1"
|
||||
run_ipset_dns_server listen_port=${direct_dnsmasq_listen_port} proto=${direct_dns_proto} server_dns="${direct_dns_server}#${direct_dns_port}" ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf}
|
||||
direct_dns_proto="udp"
|
||||
direct_dns_server="127.0.0.1"
|
||||
direct_dns_port=${direct_dnsmasq_listen_port}
|
||||
[ -n "${direct_ipset}" ] && {
|
||||
json_add_string "direct_ipset" "${direct_ipset}"
|
||||
set_cache_var "node_${node}_direct_ipset4" "${direct_ipset4}"
|
||||
@@ -318,8 +326,8 @@ run_singbox() {
|
||||
[ -n "$remote_rewrite_ttl" ] && json_add_string "remote_rewrite_ttl" "${remote_rewrite_ttl}"
|
||||
log_out="${dns_msg})"
|
||||
}
|
||||
json_add_string "direct_dns_udp_port" "${DIRECT_DNS_UDP_PORT}"
|
||||
json_add_string "direct_dns_udp_server" "${DIRECT_DNS_UDP_SERVER}"
|
||||
json_add_string "direct_dns_${direct_dns_proto}_server" "${direct_dns_server}"
|
||||
json_add_string "direct_dns_${direct_dns_proto}_port" "${direct_dns_port}"
|
||||
json_add_string "direct_dns_query_strategy" "${direct_dns_query_strategy}"
|
||||
|
||||
[ -n "${redir_port}" ] && {
|
||||
@@ -423,8 +431,8 @@ run_socks() {
|
||||
json_add_string "flag" "${flag}"
|
||||
json_add_string "local_socks_address" "${bind}"
|
||||
json_add_string "local_socks_port" "${socks_port}"
|
||||
json_add_string "direct_dns_udp_port" "${DIRECT_DNS_UDP_PORT}"
|
||||
json_add_string "direct_dns_udp_server" "${DIRECT_DNS_UDP_SERVER}"
|
||||
json_add_string "direct_dns_${DIRECT_DNS_PROTO}_server" "${DIRECT_DNS_SERVER}"
|
||||
json_add_string "direct_dns_${DIRECT_DNS_PROTO}_port" "${DIRECT_DNS_PORT}"
|
||||
json_add_string "direct_dns_query_strategy" "${DIRECT_DNS_QUERY_STRATEGY}"
|
||||
local _json_arg="$(json_dump)"
|
||||
lua $UTIL_SINGBOX gen_config "${_json_arg}" > $config_file
|
||||
@@ -450,8 +458,8 @@ run_socks() {
|
||||
json_add_string "flag" "${flag}"
|
||||
json_add_string "local_socks_address" "${bind}"
|
||||
json_add_string "local_socks_port" "${socks_port}"
|
||||
json_add_string "direct_dns_udp_port" "${DIRECT_DNS_UDP_PORT}"
|
||||
json_add_string "direct_dns_udp_server" "${DIRECT_DNS_UDP_SERVER}"
|
||||
json_add_string "direct_dns_${DIRECT_DNS_PROTO}_server" "${DIRECT_DNS_SERVER}"
|
||||
json_add_string "direct_dns_${DIRECT_DNS_PROTO}_port" "${DIRECT_DNS_PORT}"
|
||||
json_add_string "direct_dns_query_strategy" "${DIRECT_DNS_QUERY_STRATEGY}"
|
||||
local _json_arg="$(json_dump)"
|
||||
lua $UTIL_XRAY gen_config "${_json_arg}" > $config_file
|
||||
@@ -759,7 +767,7 @@ run_ipset_dns_server() {
|
||||
}
|
||||
|
||||
run_ipset_chinadns_ng() {
|
||||
local listen_port server_dns ipset nftset config_file
|
||||
local listen_port proto server_dns ipset nftset config_file
|
||||
eval_set_val $@
|
||||
[ ! -s "$TMP_ACL_PATH/vpslist" ] && {
|
||||
node_servers=$(uci show "${CONFIG}" | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2)
|
||||
@@ -777,14 +785,14 @@ run_ipset_chinadns_ng() {
|
||||
cat <<-EOF > $config_file
|
||||
bind-addr 127.0.0.1
|
||||
bind-port ${listen_port}
|
||||
china-dns ${server_dns}
|
||||
trust-dns ${server_dns}
|
||||
china-dns ${proto}://${server_dns}
|
||||
trust-dns ${proto}://${server_dns}
|
||||
filter-qtype 65
|
||||
add-tagchn-ip ${set_names}
|
||||
default-tag chn
|
||||
group vpslist
|
||||
group-dnl $TMP_ACL_PATH/vpslist
|
||||
group-upstream ${server_dns}
|
||||
group-upstream ${proto}://${server_dns}
|
||||
group-ipset ${vps_set_names}
|
||||
EOF
|
||||
ln_run 0 "$(first_type chinadns-ng)" "chinadns-ng" "/dev/null" -C $config_file -v
|
||||
@@ -1004,13 +1012,27 @@ get_direct_dns() {
|
||||
DEFAULT_DNS="${DNSMASQ_UPSTREAM_DNS}"
|
||||
[ -z "${DEFAULT_DNS}" ] && DEFAULT_DNS=$(echo -n $ISP_DNS | tr ' ' '\n' | head -2 | tr '\n' ',' | sed 's/,$//')
|
||||
AUTO_DNS=${DEFAULT_DNS:-119.29.29.29}
|
||||
RETURN_DNS=${AUTO_DNS}
|
||||
|
||||
local AUTO_DNS_1=$(echo ${AUTO_DNS} | awk -F ',' '{print $1}')
|
||||
local AUTO_DNS_2=$(echo ${AUTO_DNS} | awk -F ',' '{print $2}')
|
||||
local AUTO_DNS_ADDRESS=$(echo ${AUTO_DNS_1} | awk -F '#' '{print $1}')
|
||||
local AUTO_DNS_PORT=$(echo ${AUTO_DNS_1} | awk -F '#' '{print $2}')
|
||||
DIRECT_DNS_UDP_SERVER=${AUTO_DNS_ADDRESS}
|
||||
DIRECT_DNS_UDP_PORT=${AUTO_DNS_PORT}
|
||||
|
||||
DIRECT_DNS_PROTO="udp"
|
||||
DIRECT_DNS_SERVER=$(echo ${AUTO_DNS_1} | awk -F '#' '{print $1}')
|
||||
DIRECT_DNS_PORT=$(echo ${AUTO_DNS_1} | awk -F '#' '{print $2}')
|
||||
DIRECT_DNS_PORT=${DIRECT_DNS_PORT:-53}
|
||||
|
||||
local direct_dns_protocol=$(config_n_get @global[0] direct_dns_protocol)
|
||||
if [ "${direct_dns_protocol}" = "tcp" ] || [ "${direct_dns_protocol}" = "udp" ]; then
|
||||
local DIRECT_DNS=$(config_n_get @global[0] direct_dns)
|
||||
local result=$(lua_api "parseDNS(\"${DIRECT_DNS}\")")
|
||||
[ "${result}" != "nil" ] && {
|
||||
DIRECT_DNS_PROTO="${direct_dns_protocol}"
|
||||
DIRECT_DNS_SERVER=$(echo ${result} | awk '{print $1}')
|
||||
DIRECT_DNS_PORT=$(echo ${result} | awk '{print $2}')
|
||||
RETURN_DNS="${RETURN_DNS},${DIRECT_DNS_SERVER}#${DIRECT_DNS_PORT}#${DIRECT_DNS_PROTO}"
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
get_config() {
|
||||
|
||||
@@ -809,15 +809,17 @@ add_firewall_rule() {
|
||||
$ip6t_m -A PSW2_OUTPUT $(dst $IPSET_VPS6) -j RETURN
|
||||
$ip6t_m -A PSW2_OUTPUT -m conntrack --ctdir REPLY -j RETURN
|
||||
|
||||
[ -n "$AUTO_DNS" ] && {
|
||||
for auto_dns in $(echo $AUTO_DNS | tr ',' ' '); do
|
||||
local dns_address=$(echo $auto_dns | awk -F '#' '{print $1}')
|
||||
local dns_port=$(echo $auto_dns | awk -F '#' '{print $2}')
|
||||
[ -n "$RETURN_DNS" ] && {
|
||||
for _dns in $(echo $RETURN_DNS | tr ',' ' '); do
|
||||
local dns_address=$(echo $_dns | awk -F '#' '{print $1}')
|
||||
local dns_port=$(echo $_dns | awk -F '#' '{print $2}')
|
||||
local dns_proto=$(echo $_dns | awk -F '#' '{print $3}')
|
||||
dns_proto=${dns_proto:-udp}
|
||||
if [[ "$dns_address" == *::* ]]; then
|
||||
$ip6t_m -I PSW2_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN
|
||||
$ip6t_m -I PSW2_OUTPUT -p ${dns_proto} -d ${dns_address} --dport ${dns_port:-53} -j RETURN
|
||||
log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "ip6tables" "[${dns_address}]:${dns_port:-53}")"
|
||||
else
|
||||
$ipt_m -I PSW2_OUTPUT -p udp -d ${dns_address} --dport ${dns_port:-53} -j RETURN
|
||||
$ipt_m -I PSW2_OUTPUT -p ${dns_proto} -d ${dns_address} --dport ${dns_port:-53} -j RETURN
|
||||
log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "iptables" "${dns_address}:${dns_port:-53}")"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -862,15 +862,17 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 ct direction reply counter return"
|
||||
nft "add rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta mark 255 counter return"
|
||||
|
||||
[ -n "$AUTO_DNS" ] && {
|
||||
for auto_dns in $(echo $AUTO_DNS | tr ',' ' '); do
|
||||
local dns_address=$(echo $auto_dns | awk -F '#' '{print $1}')
|
||||
local dns_port=$(echo $auto_dns | awk -F '#' '{print $2}')
|
||||
[ -n "$RETURN_DNS" ] && {
|
||||
for _dns in $(echo $RETURN_DNS | tr ',' ' '); do
|
||||
local dns_address=$(echo $_dns | awk -F '#' '{print $1}')
|
||||
local dns_port=$(echo $_dns | awk -F '#' '{print $2}')
|
||||
local dns_proto=$(echo $_dns | awk -F '#' '{print $3}')
|
||||
dns_proto=${dns_proto:-udp}
|
||||
if [[ "$dns_address" == *::* ]]; then
|
||||
nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return"
|
||||
nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE_V6 meta l4proto ${dns_proto} ip6 daddr ${dns_address} $(factor ${dns_port:-53} "${dns_proto} dport") counter return"
|
||||
log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "nftables" "[${dns_address}]:${dns_port:-53}")"
|
||||
else
|
||||
nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol udp ip daddr ${dns_address} $(factor ${dns_port:-53} "udp dport") counter return"
|
||||
nft "insert rule $NFTABLE_NAME PSW2_OUTPUT_MANGLE ip protocol ${dns_proto} ip daddr ${dns_address} $(factor ${dns_port:-53} "${dns_proto} dport") counter return"
|
||||
log_i18n 1 "$(i18n "Add direct DNS to %s: %s" "nftables" "${dns_address}:${dns_port:-53}")"
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in new issue
Block a user