From b2977f09783a2976d6df285dd728c7f81f6b145c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 23:40:01 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Sync=202024-09-26=2023:40:01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hickory-dns/Makefile | 2 +- hickory-dns/files/etc/init.d/hickory-dns | 3 +- .../model/cbi/passwall/client/other.lua | 38 +++++++++++++++++++ .../luasrc/passwall/util_xray.lua | 36 ++++++++++++++---- luci-app-passwall/po/zh-cn/passwall.po | 18 +++++++++ 5 files changed, 86 insertions(+), 11 deletions(-) diff --git a/hickory-dns/Makefile b/hickory-dns/Makefile index b5ae83cde..8220ee840 100644 --- a/hickory-dns/Makefile +++ b/hickory-dns/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hickory-dns PKG_VERSION:=master -PKG_RELEASE:=35 +PKG_RELEASE:=36 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/hickory-dns/hickory-dns.git diff --git a/hickory-dns/files/etc/init.d/hickory-dns b/hickory-dns/files/etc/init.d/hickory-dns index 56e325e3f..832d9138a 100755 --- a/hickory-dns/files/etc/init.d/hickory-dns +++ b/hickory-dns/files/etc/init.d/hickory-dns @@ -8,8 +8,7 @@ CONF=/etc/hickory-dns/forwarder.toml start_service() { procd_open_instance hickory-dns - procd_set_param command $PROG -c $CONF -p 5335 - procd_set_param env RUST_LOG=error + procd_set_param command $PROG -c $CONF -p 5335 -q procd_set_param user root procd_set_param stdout 1 procd_set_param stderr 1 diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index a54102131..5dd95324e 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -174,6 +174,9 @@ if has_xray then o.default = "10-20" o:depends("fragment", true) + o = s_xray:option(Flag, "noise", translate("Noise"), translate("UDP noise. Under some circumstances it can bypass some udp based protocol restrictions.")) + o.default = 0 + o = s_xray:option(Flag, "sniffing_override_dest", translate("Override the connection destination address"), translate("Override the connection destination address with the sniffed domain.")) o.default = 0 @@ -187,6 +190,41 @@ if has_xray then o = s_xray:option(Value, "buffer_size", translate("Buffer Size"), translate("Buffer size for every connection (kB)")) o.datatype = "uinteger" + + s_xray_noise = m:section(TypedSection, "xray_noise_packets", translate("Xray Noise Packets"),"" .. translate("To send noise packets, select \"Noise\" in Xray Settings.") .. "") + s_xray_noise.template = "cbi/tblsection" + s_xray_noise.sortable = true + s_xray_noise.anonymous = true + s_xray_noise.addremove = true + + s_xray_noise.create = function(e, t) + TypedSection.create(e, api.gen_short_uuid()) + end + + s_xray_noise.remove = function(self, section) + for k, v in pairs(self.children) do + v.rmempty = true + v.validate = nil + end + TypedSection.remove(self, section) + end + + o = s_xray_noise:option(Flag, "enabled", translate("Enable")) + o.default = 1 + o.rmempty = false + + o = s_xray_noise:option(ListValue, "type", translate("Type")) + o:value("rand", "rand") + o:value("str", "str") + o:value("base64", "base64") + + o = s_xray_noise:option(Value, "packet", translate("Packet")) + o.datatype = "minlength(1)" + o.rmempty = false + + o = s_xray_noise:option(Value, "delay", translate("Delay (ms)")) + o.datatype = "or(uinteger,portrange)" + o.rmempty = false end if has_singbox then diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index fbd858425..fa11fe37f 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -17,6 +17,20 @@ local function get_new_port() return new_port end +local function get_noise_packets() + local noises = {} + uci:foreach(appname, "xray_noise_packets", function(n) + local noise = (n.enabled == "1") and { + type = n.type, + packet = n.packet, + delay = string.find(n.delay, "-") and n.delay or tonumber(n.delay) + } or nil + table.insert(noises, noise) + end) + if #noises == 0 then noises = nil end + return noises +end + local function get_domain_excluded() local path = string.format("/usr/share/%s/rules/domains_excluded", appname) local content = fs.readfile(path) @@ -43,10 +57,12 @@ function gen_outbound(flag, node, tag, proxy_table) local proxy = 0 local proxy_tag = "nil" local fragment = nil + local noise = nil if proxy_table ~= nil and type(proxy_table) == "table" then proxy = proxy_table.proxy or 0 proxy_tag = proxy_table.tag or "nil" fragment = proxy_table.fragment or nil + noise = proxy_table.noise or nil end if node.type == "Xray" then @@ -135,7 +151,7 @@ function gen_outbound(flag, node, tag, proxy_table) mark = 255, tcpMptcp = (node.tcpMptcp == "1") and true or nil, tcpNoDelay = (node.tcpNoDelay == "1") and true or nil, - dialerProxy = fragment and "fragment" or nil + dialerProxy = (fragment or noise) and "dialerproxy" or nil }, network = node.transport, security = node.stream_security, @@ -690,7 +706,7 @@ function gen_config(var) end if is_new_blc_node then local blc_node = uci:get_all(appname, blc_node_id) - local outbound = gen_outbound(flag, blc_node, blc_node_tag, { fragment = xray_settings.fragment == "1" or nil }) + local outbound = gen_outbound(flag, blc_node, blc_node_tag, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil }) if outbound then table.insert(outbounds, outbound) valid_nodes[#valid_nodes + 1] = blc_node_tag @@ -713,7 +729,7 @@ function gen_config(var) if is_new_node then local fallback_node = uci:get_all(appname, fallback_node_id) if fallback_node.protocol ~= "_balancing" then - local outbound = gen_outbound(flag, fallback_node, fallback_node_id, { fragment = xray_settings.fragment == "1" or nil }) + local outbound = gen_outbound(flag, fallback_node, fallback_node_id, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.noise == "1" or nil }) if outbound then table.insert(outbounds, outbound) else @@ -862,6 +878,9 @@ function gen_config(var) if xray_settings.fragment == "1" and not proxy_table.tag then proxy_table.fragment = true end + if xray_settings.noise == "1" and not proxy_table.tag then + proxy_table.noise = true + end local outbound = gen_outbound(flag, _node, rule_name, proxy_table) local outbound_tag if outbound then @@ -1047,7 +1066,7 @@ function gen_config(var) sys.call("touch /tmp/etc/passwall/iface/" .. node.iface) end else - local outbound = gen_outbound(flag, node, nil, { fragment = xray_settings.fragment == "1" or nil }) + local outbound = gen_outbound(flag, node, nil, { fragment = xray_settings.fragment == "1" or nil, noise = xray_settings.fragment == "1" or nil }) if outbound then set_outbound_detour(node, outbound, outbounds) table.insert(outbounds, outbound) @@ -1290,17 +1309,18 @@ function gen_config(var) } } - if xray_settings.fragment == "1" then + if xray_settings.fragment == "1" or xray_settings.noise == "1" then table.insert(outbounds, { protocol = "freedom", - tag = "fragment", + tag = "dialerproxy", settings = { domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP", - fragment = { + fragment = (xray_settings.fragment == "1") and { packets = (xray_settings.fragment_packets and xray_settings.fragment_packets ~= "") and xray_settings.fragment_packets, length = (xray_settings.fragment_length and xray_settings.fragment_length ~= "") and xray_settings.fragment_length, interval = (xray_settings.fragment_interval and xray_settings.fragment_interval ~= "") and xray_settings.fragment_interval - } + } or nil, + noises = (xray_settings.noise == "1") and get_noise_packets() or nil }, streamSettings = { sockopt = { diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index b31dddb2e..59b553671 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -1657,6 +1657,24 @@ msgstr "分片间隔" msgid "Fragmentation interval (ms)" msgstr "分片间隔(ms)" +msgid "Noise" +msgstr "噪声" + +msgid "UDP noise. Under some circumstances it can bypass some udp based protocol restrictions." +msgstr "UDP噪声。在某些情况下,它可以绕过一些针对UDP协议的限制。" + +msgid "To send noise packets, select \"Noise\" in Xray Settings." +msgstr "在 Xray 设置中勾选 “噪声” 以发送噪声包。" + +msgid "Xray Noise Packets" +msgstr "Xray 噪声数据包" + +msgid "Packet" +msgstr "数据包" + +msgid "Delay (ms)" +msgstr "延迟(ms)" + msgid "If is domain name, The requested domain name will be resolved to IP before connect." msgstr "如果是域名,域名将在请求发出之前解析为 IP。"