mirror of
https://github.com/kenzok8/small-package
synced 2025-01-07 07:06:58 +08:00
update 2024-10-11 04:21:53
This commit is contained in:
parent
4d0d9e7843
commit
083fe874bb
@ -160,6 +160,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
|
||||
|
||||
@ -177,6 +180,42 @@ 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"),"<font color='red'>" .. translate("To send noise packets, select \"Noise\" in Xray Settings.") .. "</font>")
|
||||
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
|
||||
|
@ -18,6 +18,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/domains_excluded", appname)
|
||||
local content = fs.readfile(path)
|
||||
@ -44,10 +58,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
|
||||
@ -132,7 +148,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,
|
||||
@ -679,7 +695,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
|
||||
@ -698,7 +714,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
|
||||
@ -863,10 +879,17 @@ 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)
|
||||
if outbound then
|
||||
set_outbound_detour(_node, outbound, outbounds, rule_name)
|
||||
table.insert(outbounds, outbound)
|
||||
if rule_name == "default" then
|
||||
table.insert(outbounds, 1, outbound)
|
||||
else
|
||||
table.insert(outbounds, outbound)
|
||||
end
|
||||
rule_outboundTag = rule_name
|
||||
end
|
||||
end
|
||||
@ -1054,7 +1077,7 @@ function gen_config(var)
|
||||
sys.call("touch /tmp/etc/passwall2/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
|
||||
local default_outTag = set_outbound_detour(node, outbound, outbounds)
|
||||
table.insert(outbounds, outbound)
|
||||
@ -1421,17 +1444,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 = {
|
||||
|
@ -1516,6 +1516,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。"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user