From 09e3feb5e70206d4128fba90a9fc87ea65f658a3 Mon Sep 17 00:00:00 2001 From: action Date: Wed, 24 Jun 2026 22:17:35 +0800 Subject: [PATCH] update 2026-06-24 22:17:35 --- .../cbi/passwall/client/type/hysteria2.lua | 6 + .../model/cbi/passwall/client/type/ray.lua | 6 + .../cbi/passwall/client/type/sing-box.lua | 6 + .../cbi/passwall/server/type/hysteria2.lua | 6 + .../model/cbi/passwall/server/type/ray.lua | 6 + .../cbi/passwall/server/type/sing-box.lua | 6 + luci-app-passwall/luasrc/passwall/api.lua | 22 ++- luci-app-passwall/po/zh-cn/passwall.po | 3 + .../model/cbi/shadowsocksr/advanced.lua | 44 ++++- luci-app-ssr-plus/po/templates/ssr-plus.pot | 156 ++++++++++-------- luci-app-ssr-plus/po/zh_Hans/ssr-plus.po | 156 ++++++++++-------- .../usr/share/shadowsocksr/gen_config.lua | 68 +++++++- 12 files changed, 325 insertions(+), 160 deletions(-) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua index fc0886df..53f06f01 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/hysteria2.lua @@ -49,6 +49,12 @@ o.rewrite_option = o.option o = s:option(Value, _n("realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o.rewrite_option = o.option o:depends({ [_n("realms")] = "1" }) +o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") +end o = s:option(DynamicList, _n("realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua index 96357546..fe9b7458 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/ray.lua @@ -351,6 +351,12 @@ end o = s:option(Value, _n("hysteria2_realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o:depends({ [_n("hysteria2_realms")] = "1" }) +o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") +end o = s:option(DynamicList, _n("hysteria2_realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua index 172fe20b..5ebab8fc 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua @@ -375,6 +375,12 @@ if singbox_tags:find("with_quic") then o = s:option(Value, _n("hysteria2_realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o:depends({ [_n("hysteria2_realms")] = "1" }) + o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") + end o = s:option(DynamicList, _n("hysteria2_realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua index a59c78b1..6d80af23 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/hysteria2.lua @@ -36,6 +36,12 @@ o:depends({ [_n("custom")] = false }) o = s:option(Value, _n("realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o.rewrite_option = o.option o:depends({ [_n("realms")] = "1" }) +o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") +end o = s:option(DynamicList, _n("realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua index c36ad6e1..85499e0b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua @@ -130,6 +130,12 @@ o:depends({ [_n("protocol")] = "hysteria2"}) o = s:option(Value, _n("hysteria2_realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o:depends({ [_n("hysteria2_realms")] = "1" }) +o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") +end o = s:option(DynamicList, _n("hysteria2_realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua index 562e9035..572478ac 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua @@ -163,6 +163,12 @@ if singbox_tags:find("with_quic") then o = s:option(Value, _n("hysteria2_realm_url"), translate("Realm URL"), translate("Example:") .. "realm://public@realm.hy2.io/your-realm-name") o:depends({ [_n("hysteria2_realms")] = "1" }) + o.validate = function(self, value) + value = api.trim(value) + local realm = api.parse_realm_uri(value) + if realm then return value end + return nil, translate("Invalid Realm URL.") + end o = s:option(DynamicList, _n("hysteria2_realm_stun"), translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } diff --git a/luci-app-passwall/luasrc/passwall/api.lua b/luci-app-passwall/luasrc/passwall/api.lua index bcd98e69..372133a3 100644 --- a/luci-app-passwall/luasrc/passwall/api.lua +++ b/luci-app-passwall/luasrc/passwall/api.lua @@ -1605,12 +1605,20 @@ function vps_domain_exclude(domain) end function parse_realm_uri(uri) - if type(uri) ~= "string" then return nil end + uri = trim(uri) + if uri == "" then return nil end -- realm[+http]://token@server/realm_id?query - local scheme, token, server_url, realm_id, query = trim(uri):match("^(realm%+http|realm)://([^@]+)@([^/]+)/([^?]*)%??(.*)$") - if not scheme or not token or not server_url or not realm_id then return nil end + local scheme = (uri:match("^realm%+http://") and "realm+http") or (uri:match("^realm://") and "realm") + if not scheme then return nil end + uri = uri:gsub("^realm%+http://", ""):gsub("^realm://", "") + local token, server_url, realm_id, query = uri:match("^([^@]+)@([^/]+)/([^?]*)%??(.*)$") + if not token or not server_url or not realm_id then return nil end realm_id = realm_id:gsub("/+$", "") - local address, port = server_url:match("^%[?([^%]]+)%]?:?(%d*)$") + local address, port = server_url:match("^%[([^%]]+)%]:(%d+)$") --ipv6:port + if not address then + address, port = server_url:match("^([^:]+):(%d+)$") --ipv4[domain]:port + end + address = address or server_url:match("^%[([^%]]+)%]$") or server_url port = tonumber(port) or (scheme == "realm+http" and 80 or 443) local realm = { scheme = scheme, @@ -1622,9 +1630,9 @@ function parse_realm_uri(uri) } -- 解析 query 中的 stun= local stun_servers - for value in (query or ""):gmatch("[?&]?[Ss][Tt][Uu][Nn]=([^&]+)") do - if not stun_servers then stun_servers = {} end - stun_servers[#stun_servers + 1] = value + for v in (query or ""):gmatch("[Ss][Tt][Uu][Nn]=([^&]+)") do + stun_servers = stun_servers or {} + stun_servers[#stun_servers + 1] = v end realm.stun_servers = stun_servers return realm diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index f810aeca..38f7f8e6 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -2125,3 +2125,6 @@ msgstr "并发隧道连接数" msgid "Processing, please wait…" msgstr "正在处理,请稍候…" + +msgid "Invalid Realm URL." +msgstr "Realm URL 不正确。" diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index 6ef1da15..eebb0b6b 100644 --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -68,6 +68,26 @@ end table.sort(key_table) +-- 获取 Xray 版本号 +if is_finded("xray") then + local version = luci.sys.exec("xray version 2>&1") + if version and version ~= "" then + xray_version = version:match("Xray%s+([%d%.]+)") + end +end + +-- 将 Xray 版本号转换为数字 +if xray_version and xray_version ~= "" then + local major, minor, patch = + xray_version:match("(%d+)%.?(%d*)%.?(%d*)") + + major = tonumber(major) or 0 + minor = tonumber(minor) or 0 + patch = tonumber(patch) or 0 + + xray_version_val = major * 10000 + minor * 100 + patch +end + m = Map("shadowsocksr") -- [[ global ]]-- s = m:section(TypedSection, "global", translate("Server failsafe auto swith and custom update settings")) @@ -237,15 +257,31 @@ if is_finded("xray") then o:value("1-5", "1-5") o:depends("fragment", true) - o = s:option(Value, "fragment_length", translate("Fragment Length"), translate("Fragmented packet length (byte)")) - o.datatype = "or(uinteger,portrange)" + o = s:option(Value, "fragment_length", translate("Fragment Length")) + if xray_version_val <= 260601 then + o.datatype = "or(uinteger,portrange)" + end o.default = "100-200" o:depends("fragment", true) + o.description = translate( + "" + ) - o = s:option(Value, "fragment_delay", translate("Fragment Delay"), translate("Fragmentation interval (ms)")) - o.datatype = "or(uinteger,portrange)" + o = s:option(Value, "fragment_delay", translate("Fragment Delay")) + if xray_version_val <= 260601 then + o.datatype = "or(uinteger,portrange)" + end o.default = "10-20" o:depends("fragment", true) + o.description = translate( + "" + ) o = s:option(Value, "fragment_maxSplit", translate("Max Split"), translate("Limit the maximum number of splits.")) o.datatype = "or(uinteger,portrange)" diff --git a/luci-app-ssr-plus/po/templates/ssr-plus.pot b/luci-app-ssr-plus/po/templates/ssr-plus.pot index 64b70ed6..df9ea447 100644 --- a/luci-app-ssr-plus/po/templates/ssr-plus.pot +++ b/luci-app-ssr-plus/po/templates/ssr-plus.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:231 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:251 msgid "" "\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 " "data writes by the client. \"tlshello\" is for TLS client hello packet " @@ -64,7 +64,7 @@ msgstr "" msgid "8 Threads" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:296 msgid "" msgstr "" @@ -80,6 +80,8 @@ msgid "" "etc." msgstr "" +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:267 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:280 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1588 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1601 @@ -206,7 +208,7 @@ msgstr "" msgid "Anti-pollution DNS Server" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:148 msgid "Apple Domains DNS" msgstr "" @@ -214,11 +216,11 @@ msgstr "" msgid "Apple Domains Data" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:123 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:143 msgid "Apple Domains Update url" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:119 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 msgid "Apple domains optimization" msgstr "" @@ -366,7 +368,7 @@ msgstr "" msgid "Check Server Port" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:94 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:114 msgid "Check Try Count" msgstr "" @@ -381,7 +383,7 @@ msgid "" "release page." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:89 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:109 msgid "Check timout(second)" msgstr "" @@ -403,15 +405,15 @@ msgstr "" msgid "ChinaDNS-NG query protocol" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:113 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:133 msgid "Chnroute Update url" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:114 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:134 msgid "Clang.CN" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:115 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:135 msgid "Clang.CN.CIDR" msgstr "" @@ -454,7 +456,7 @@ msgstr "" msgid "Clear logs" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:264 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:300 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1097 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1452 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1479 @@ -663,7 +665,7 @@ msgstr "" msgid "Default" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:101 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:121 msgid "Default Node Local Port" msgstr "" @@ -704,7 +706,7 @@ msgid "" "entries before the original Clash rules." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:302 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:338 msgid "Delay (ms)" msgstr "" @@ -766,7 +768,7 @@ msgstr "" msgid "DoT upstream (Need use wolfssl version)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:289 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:325 msgid "Domain Strategy" msgstr "" @@ -816,9 +818,9 @@ msgstr "" msgid "Edit ShadowSocksR Server" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:157 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:198 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:278 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:218 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:314 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:54 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua:101 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:581 @@ -835,7 +837,7 @@ msgstr "" msgid "Enable Authentication" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:80 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:100 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1739 msgid "Enable Auto Switch" msgstr "" @@ -890,7 +892,7 @@ msgstr "" msgid "Enable V3 protocol." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:134 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:154 msgid "Enable adblock" msgstr "" @@ -906,7 +908,7 @@ msgstr "" msgid "Enabled Kernel virtual NIC TUN(optional)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:181 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:201 msgid "Enabled Mixed" msgstr "" @@ -1048,13 +1050,13 @@ msgstr "" msgid "Flow" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:119 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 msgid "" "For Apple domains equipped with Chinese mainland CDN, always responsive to " "Chinese CDN IP addresses" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:262 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:298 msgid "For specific usage, see:" msgstr "" @@ -1064,27 +1066,27 @@ msgid "" "(,)." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:248 msgid "Fragment" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:273 msgid "Fragment Delay" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:240 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 msgid "Fragment Length" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:231 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:251 msgid "Fragment Packets" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:281 msgid "Fragmentation interval (ms)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:240 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:268 msgid "Fragmented packet length (byte)" msgstr "" @@ -1134,7 +1136,7 @@ msgstr "" msgid "Global Client" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:194 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:214 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua:213 msgid "Global HTTP/HTTPS Proxy Server" msgstr "" @@ -1143,7 +1145,7 @@ msgstr "" msgid "Global Mode" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:152 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:172 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua:204 msgid "Global SOCKS5 Proxy Server" msgstr "" @@ -1195,7 +1197,7 @@ msgstr "" msgid "HTTP" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:202 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:222 msgid "HTTP Auth Mode" msgstr "" @@ -1204,7 +1206,7 @@ msgstr "" msgid "HTTP Host" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:212 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:232 msgid "HTTP Password" msgstr "" @@ -1213,11 +1215,11 @@ msgstr "" msgid "HTTP Path" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:208 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 msgid "HTTP User" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:202 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:222 msgid "HTTP proxy auth method, default:none." msgstr "" @@ -1280,7 +1282,7 @@ msgstr "" msgid "IP Stack Preference" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:148 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)" msgstr "" @@ -1479,7 +1481,7 @@ msgstr "" msgid "Level 3 Public DNS-3 (4.2.2.3-4)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:250 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:286 msgid "Limit the maximum number of splits." msgstr "" @@ -1498,8 +1500,8 @@ msgstr "" msgid "Loading..." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:187 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:217 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:207 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:237 msgid "Local Port" msgstr "" @@ -1519,11 +1521,11 @@ msgstr "" msgid "Loop Mode" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:109 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:129 msgid "Loukky/gfwlist-by-loukky" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:108 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 msgid "Loyalsoldier/v2ray-rules-dat" msgstr "" @@ -1558,7 +1560,7 @@ msgstr "" msgid "Max Early Data" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:250 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:286 msgid "Max Split" msgstr "" @@ -1611,7 +1613,7 @@ msgstr "" msgid "Missing xz support" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:181 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:201 msgid "Mixed as an alias of socks, default:Enabled." msgstr "" @@ -1644,7 +1646,7 @@ msgstr "" msgid "Mux" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:138 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:158 msgid "NEO DEV HOST" msgstr "" @@ -1730,7 +1732,7 @@ msgid "" "the table." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:255 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:291 msgid "Noise" msgstr "" @@ -1768,6 +1770,18 @@ msgid "" "compatibility issues." msgstr "" +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:282 +msgid "" +"Note: When version is higher than 26.6.1, input multiple fragment intervals " +"saperate with ','." +msgstr "" + +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:269 +msgid "" +"Note: When version is higher than 26.6.1, input multiple fragment lengths " +"saperate with ','." +msgstr "" + #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1644 msgid "Number of early established connections to reduce latency." msgstr "" @@ -1804,19 +1818,19 @@ msgstr "" msgid "Only Common Ports" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:208 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 msgid "Only when HTTP Auth Mode is password valid, Mandatory." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:212 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:232 msgid "Only when HTTP Auth Mode is password valid, Not mandatory." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:170 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:190 msgid "Only when Socks5 Auth Mode is password valid, Mandatory." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:175 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:195 msgid "Only when Socks5 Auth Mode is password valid, Not mandatory." msgstr "" @@ -1838,11 +1852,11 @@ msgstr "" msgid "Package Name" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:261 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:297 msgid "Packet or Rand length as a string, e.g., 10-20." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:298 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:334 msgid "Packet | Rand Length" msgstr "" @@ -2129,7 +2143,7 @@ msgstr "" msgid "Reset saved Mihomo proxy-group selections and restore YAML defaults?" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:144 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:164 msgid "Reset to defaults" msgstr "" @@ -2258,7 +2272,7 @@ msgstr "" msgid "Server Type" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:73 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:93 msgid "Server failsafe auto swith and custom update settings" msgstr "" @@ -2368,7 +2382,7 @@ msgstr "" msgid "Socks Version" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:163 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:183 msgid "Socks protocol auth methods, default:noauth." msgstr "" @@ -2377,15 +2391,15 @@ msgstr "" msgid "Socks5" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:163 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:183 msgid "Socks5 Auth Mode" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:175 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:195 msgid "Socks5 Password" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:170 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:190 msgid "Socks5 User" msgstr "" @@ -2466,7 +2480,7 @@ msgstr "" msgid "Successfully retrieved certificate name:" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:142 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:162 msgid "Support AdGuardHome and DNSMASQ format list" msgstr "" @@ -2480,7 +2494,7 @@ msgid "" "a maximum length of 3 bytes." msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:84 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:104 msgid "Switch check cycly(second)" msgstr "" @@ -2509,7 +2523,7 @@ msgstr "" msgid "TCP Fast Open" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:248 msgid "" "TCP fragments, which can deceive the censorship system in some cases, such " "as bypassing SNI blacklists." @@ -2644,7 +2658,7 @@ msgstr "" msgid "Timeout for establishing a connection to server(second)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:296 msgid "To send noise packets, select \"Noise\" in Xray Settings." msgstr "" @@ -2675,7 +2689,7 @@ msgstr "" msgid "Try Count" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:282 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:318 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:695 msgid "Type" msgstr "" @@ -2684,7 +2698,7 @@ msgstr "" msgid "UDP" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:255 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:291 msgid "" "UDP noise, Under some circumstances it can bypass some UDP based protocol " "restrictions." @@ -3009,11 +3023,11 @@ msgstr "" msgid "Xray" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:225 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 msgid "Xray Fragment Settings" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:258 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:294 msgid "Xray Noise Packets" msgstr "" @@ -3032,7 +3046,7 @@ msgstr "" msgid "YAML Reloaded!" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:137 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:157 msgid "adblock_url" msgstr "" @@ -3060,7 +3074,7 @@ msgstr "" msgid "android" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:159 msgid "anti-AD" msgstr "" @@ -3068,7 +3082,7 @@ msgstr "" msgid "chacha20-poly1305" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:116 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:136 msgid "china-operator-ip" msgstr "" @@ -3114,7 +3128,7 @@ msgstr "" msgid "edge" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:124 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:144 msgid "felixonmars/dnsmasq-china-list" msgstr "" @@ -3135,11 +3149,11 @@ msgstr "" msgid "gRPC Service Name" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:106 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:126 msgid "gfwlist Update url" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:110 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:130 msgid "gfwlist/gfwlist" msgstr "" @@ -3235,7 +3249,7 @@ msgstr "" msgid "spiderX" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:107 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:127 msgid "v2fly/domain-list-community" msgstr "" diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po index cc997cbb..e362c4ba 100644 --- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8\n" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:231 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:251 msgid "" "\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 " "data writes by the client. \"tlshello\" is for TLS client hello packet " @@ -66,7 +66,7 @@ msgstr "" msgid "8 Threads" msgstr "8 线程" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:296 msgid "" msgstr "" @@ -84,6 +84,8 @@ msgstr "" "

支持 SS/SSR/V2RAY/XRAY/TROJAN/TUIC/HYSTERIA2/NAIVEPROXY/SOCKS5/CLASH 等协" "议。

" +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:267 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:280 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1588 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1601 @@ -210,7 +212,7 @@ msgstr "JSON 格式的 FinalMaskObject,用来实现分享。" msgid "Anti-pollution DNS Server" msgstr "访问国外域名 DNS 服务器" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:148 msgid "Apple Domains DNS" msgstr "Apple 域名 DNS" @@ -218,11 +220,11 @@ msgstr "Apple 域名 DNS" msgid "Apple Domains Data" msgstr "【Apple 域名】数据库" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:123 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:143 msgid "Apple Domains Update url" msgstr "Apple 域名更新 URL" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:119 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 msgid "Apple domains optimization" msgstr "Apple 域名解析优化" @@ -370,7 +372,7 @@ msgstr "检查服务器" msgid "Check Server Port" msgstr "【服务器端口】检查" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:94 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:114 msgid "Check Try Count" msgstr "切换检查重试次数" @@ -385,7 +387,7 @@ msgid "" "release page." msgstr "检测已安装组件版本,并从上游发布页在线升级。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:89 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:109 msgid "Check timout(second)" msgstr "切换检查超时时间(秒)" @@ -407,15 +409,15 @@ msgstr "【中国大陆 IP 段】数据库" msgid "ChinaDNS-NG query protocol" msgstr "ChinaDNS-NG 查询协议" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:113 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:133 msgid "Chnroute Update url" msgstr "中国大陆 IP 段更新 URL" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:114 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:134 msgid "Clang.CN" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:115 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:135 msgid "Clang.CN.CIDR" msgstr "" @@ -458,7 +460,7 @@ msgstr "清空所有自定义客户端代理规则,并恢复为空白状态吗 msgid "Clear logs" msgstr "清空日志" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:264 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:300 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1097 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1452 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1479 @@ -668,7 +670,7 @@ msgstr "解密" msgid "Default" msgstr "默认" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:101 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:121 msgid "Default Node Local Port" msgstr "节点默认本地端口" @@ -713,7 +715,7 @@ msgstr "" "为每个客户端指定 Mihomo 代理目标。规则会以 SRC-IP-CIDR 形式注入到原始 Clash " "规则之前。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:302 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:338 msgid "Delay (ms)" msgstr "延迟(ms)" @@ -775,7 +777,7 @@ msgstr "是否要恢复客户端默认配置?" msgid "DoT upstream (Need use wolfssl version)" msgstr "DoT 上游(需使用 wolfssl 版本)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:289 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:325 msgid "Domain Strategy" msgstr "域名解析策略" @@ -825,9 +827,9 @@ msgstr "编辑" msgid "Edit ShadowSocksR Server" msgstr "编辑服务器配置" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:157 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:198 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:278 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:218 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:314 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:54 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server.lua:101 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:581 @@ -844,7 +846,7 @@ msgstr "客户端启用 0-RTT QUIC 连接握手" msgid "Enable Authentication" msgstr "启用用户名/密码认证" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:80 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:100 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1739 msgid "Enable Auto Switch" msgstr "启用自动切换" @@ -899,7 +901,7 @@ msgstr "开启 V2 协议。" msgid "Enable V3 protocol." msgstr "开启 V3 协议。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:134 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:154 msgid "Enable adblock" msgstr "启用广告屏蔽" @@ -915,7 +917,7 @@ msgstr "启用此选项配置 XHTTP 附加项(JSON 格式)。" msgid "Enabled Kernel virtual NIC TUN(optional)" msgstr "启用内核的虚拟网卡 TUN(可选)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:181 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:201 msgid "Enabled Mixed" msgstr "启用 Mixed" @@ -1057,13 +1059,13 @@ msgstr "指纹伪造" msgid "Flow" msgstr "流控(Flow)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:119 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 msgid "" "For Apple domains equipped with Chinese mainland CDN, always responsive to " "Chinese CDN IP addresses" msgstr "配备中国大陆 CDN 的 Apple 域名,始终应答中国大陆 CDN 地址" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:262 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:298 msgid "For specific usage, see:" msgstr "具体使用方法,具体请参见:" @@ -1073,27 +1075,27 @@ msgid "" "(,)." msgstr "格式为:10000:20000 或 10000-20000 多组时用逗号(,)隔开。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:248 msgid "Fragment" msgstr "分片" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:273 msgid "Fragment Delay" msgstr "分片延迟" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:240 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 msgid "Fragment Length" msgstr "分片包长" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:231 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:251 msgid "Fragment Packets" msgstr "分片方式" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:281 msgid "Fragmentation interval (ms)" msgstr "分片间隔(ms)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:240 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:268 msgid "Fragmented packet length (byte)" msgstr "分片包长 (byte)" @@ -1143,7 +1145,7 @@ msgstr "GitHub 直连" msgid "Global Client" msgstr "TCP 透明代理" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:194 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:214 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua:213 msgid "Global HTTP/HTTPS Proxy Server" msgstr "HTTP/HTTPS 代理服务端(全局)" @@ -1152,7 +1154,7 @@ msgstr "HTTP/HTTPS 代理服务端(全局)" msgid "Global Mode" msgstr "全局模式" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:152 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:172 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua:204 msgid "Global SOCKS5 Proxy Server" msgstr "SOCKS5 代理服务端(全局)" @@ -1204,7 +1206,7 @@ msgstr "H2/gRPC 健康检查" msgid "HTTP" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:202 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:222 msgid "HTTP Auth Mode" msgstr "HTTP 认证模式" @@ -1213,7 +1215,7 @@ msgstr "HTTP 认证模式" msgid "HTTP Host" msgstr "HTTP 主机名" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:212 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:232 msgid "HTTP Password" msgstr "HTTP 密码" @@ -1222,11 +1224,11 @@ msgstr "HTTP 密码" msgid "HTTP Path" msgstr "HTTP 路径" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:208 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 msgid "HTTP User" msgstr "HTTP 用户名" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:202 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:222 msgid "HTTP proxy auth method, default:none." msgstr "HTTP 代理认证方式,默认:none。" @@ -1289,7 +1291,7 @@ msgstr "绕过中国大陆 IP 模式" msgid "IP Stack Preference" msgstr "IP 栈优先级" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:148 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)" msgstr "如果为空,则不更改 Apple 域名解析 DNS(默认为空)" @@ -1489,7 +1491,7 @@ msgstr "" msgid "Level 3 Public DNS-3 (4.2.2.3-4)" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:250 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:286 msgid "Limit the maximum number of splits." msgstr "限制分片的最大数量。" @@ -1508,8 +1510,8 @@ msgstr "仅监听指定的接口,未指定则监听全部。" msgid "Loading..." msgstr "加载中..." -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:187 -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:217 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:207 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:237 msgid "Local Port" msgstr "本地端口" @@ -1529,11 +1531,11 @@ msgstr "日志" msgid "Loop Mode" msgstr "循环模式" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:109 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:129 msgid "Loukky/gfwlist-by-loukky" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:108 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:128 msgid "Loyalsoldier/v2ray-rules-dat" msgstr "" @@ -1570,7 +1572,7 @@ msgstr "未找到匹配的发布资产" msgid "Max Early Data" msgstr "最大前置数据" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:250 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:286 msgid "Max Split" msgstr "最大分片数" @@ -1625,7 +1627,7 @@ msgstr "缺少 unzip 支持" msgid "Missing xz support" msgstr "缺少 xz 支持" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:181 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:201 msgid "Mixed as an alias of socks, default:Enabled." msgstr "Mixed 作为 SOCKS 的别名,默认:启用。" @@ -1658,7 +1660,7 @@ msgstr "必须是 JSON 文本内容!" msgid "Mux" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:138 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:158 msgid "NEO DEV HOST" msgstr "" @@ -1745,7 +1747,7 @@ msgid "" msgstr "" "节点顺序可用鼠标拖拉后立即生效,服务器节点自动切换顺序和表中节点顺序一致。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:255 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:291 msgid "Noise" msgstr "噪声" @@ -1783,6 +1785,18 @@ msgid "" "compatibility issues." msgstr "注意:不同版本间的配置恢复可能会导致兼容性问题。" +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:282 +msgid "" +"Note: When version is higher than 26.6.1, input multiple fragment intervals " +"saperate with ','." +msgstr "注意:当版本高于 26.6.1 时,可以输入多个分片间隔,并用英文 ',' 分隔。" + +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:269 +msgid "" +"Note: When version is higher than 26.6.1, input multiple fragment lengths " +"saperate with ','." +msgstr "注意:当版本高于 26.6.1 时,可以输入多个分片长度,并用英文 ',' 分隔。" + #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1644 msgid "Number of early established connections to reduce latency." msgstr "预连接的数量,用于降低延迟。" @@ -1819,19 +1833,19 @@ msgstr "设置后,仅在服务器证书链指纹匹配时连接。" msgid "Only Common Ports" msgstr "仅常用端口(不走 P2P 流量到代理)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:208 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 msgid "Only when HTTP Auth Mode is password valid, Mandatory." msgstr "仅当 HTTP 认证模式为 password 时有效,必填。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:212 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:232 msgid "Only when HTTP Auth Mode is password valid, Not mandatory." msgstr "仅当 HTTP 认证模式为 password 时有效,非必填。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:170 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:190 msgid "Only when Socks5 Auth Mode is password valid, Mandatory." msgstr "仅当 Socks5 认证方式为 Password 时有效,必填。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:175 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:195 msgid "Only when Socks5 Auth Mode is password valid, Not mandatory." msgstr "仅当 Socks5 认证方式为 Password 时有效,非必填。" @@ -1853,11 +1867,11 @@ msgstr "" msgid "Package Name" msgstr "组件包名称" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:261 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:297 msgid "Packet or Rand length as a string, e.g., 10-20." msgstr "数据包或 Rand 长度以字符串形式输入,例如:10-20。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:298 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:334 msgid "Packet | Rand Length" msgstr "数据包 | Rand 长度" @@ -2144,7 +2158,7 @@ msgstr "重置完成" msgid "Reset saved Mihomo proxy-group selections and restore YAML defaults?" msgstr "要清空已保存的 Mihomo 分组选择,并恢复为 YAML 默认值吗?" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:144 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:164 msgid "Reset to defaults" msgstr "恢复出厂设置" @@ -2274,7 +2288,7 @@ msgstr "服务端配置" msgid "Server Type" msgstr "服务端类型" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:73 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:93 msgid "Server failsafe auto swith and custom update settings" msgstr "服务器节点故障自动切换/广告屏蔽/中国大陆 IP 段数据库更新设置" @@ -2384,7 +2398,7 @@ msgstr "" msgid "Socks Version" msgstr "Socks 版本" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:163 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:183 msgid "Socks protocol auth methods, default:noauth." msgstr "Socks 协议的认证方式,默认值:noauth。" @@ -2393,15 +2407,15 @@ msgstr "Socks 协议的认证方式,默认值:noauth。" msgid "Socks5" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:163 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:183 msgid "Socks5 Auth Mode" msgstr "Socks5 认证方式" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:175 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:195 msgid "Socks5 Password" msgstr "Socks5 密码" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:170 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:190 msgid "Socks5 User" msgstr "Socks5 用户名" @@ -2482,7 +2496,7 @@ msgstr "已成功获取证书指纹:" msgid "Successfully retrieved certificate name:" msgstr "已成功获取证书名称:" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:142 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:162 msgid "Support AdGuardHome and DNSMASQ format list" msgstr "同时支持 AdGuard Home 和 DNSMASQ 格式的过滤列表" @@ -2498,7 +2512,7 @@ msgstr "" "支持以“,”分隔的十进制数字,或者经过 Base64 编码的字符串,其最大长度为 3 个字" "节。" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:84 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:104 msgid "Switch check cycly(second)" msgstr "自动切换检查周期(秒)" @@ -2527,7 +2541,7 @@ msgstr "TCP 伪装类型" msgid "TCP Fast Open" msgstr "TCP 快速打开" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:228 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:248 msgid "" "TCP fragments, which can deceive the censorship system in some cases, such " "as bypassing SNI blacklists." @@ -2670,7 +2684,7 @@ msgstr "超时" msgid "Timeout for establishing a connection to server(second)" msgstr "连接超时时间(单位:秒)" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:260 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:296 msgid "To send noise packets, select \"Noise\" in Xray Settings." msgstr "在 Xray 设置中勾选 “噪声” 以发送噪声包。" @@ -2701,7 +2715,7 @@ msgstr "Trojan 密码" msgid "Try Count" msgstr "重试次数" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:282 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:318 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:695 msgid "Type" msgstr "类型" @@ -2710,7 +2724,7 @@ msgstr "类型" msgid "UDP" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:255 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:291 msgid "" "UDP noise, Under some circumstances it can bypass some UDP based protocol " "restrictions." @@ -3037,11 +3051,11 @@ msgstr "" msgid "Xray" msgstr "Xray" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:225 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:245 msgid "Xray Fragment Settings" msgstr "Xray 分片设置" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:258 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:294 msgid "Xray Noise Packets" msgstr "Xray 噪声数据包" @@ -3060,7 +3074,7 @@ msgstr "YAML 重载失败!" msgid "YAML Reloaded!" msgstr "YAML 已重载!" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:137 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:157 msgid "adblock_url" msgstr "广告屏蔽更新 URL" @@ -3088,7 +3102,7 @@ msgstr "allowedIPs(可选)" msgid "android" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:139 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:159 msgid "anti-AD" msgstr "" @@ -3096,7 +3110,7 @@ msgstr "" msgid "chacha20-poly1305" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:116 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:136 msgid "china-operator-ip" msgstr "" @@ -3142,7 +3156,7 @@ msgstr "例如:/etc/ssl/private.key" msgid "edge" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:124 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:144 msgid "felixonmars/dnsmasq-china-list" msgstr "" @@ -3163,11 +3177,11 @@ msgstr "gRPC 模式" msgid "gRPC Service Name" msgstr "gRPC 服务名称" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:106 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:126 msgid "gfwlist Update url" msgstr "GFW 列表更新 URL" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:110 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:130 msgid "gfwlist/gfwlist" msgstr "" @@ -3264,7 +3278,7 @@ msgstr "" msgid "spiderX" msgstr "" -#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:107 +#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:127 msgid "v2fly/domain-list-community" msgstr "" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua index f293c243..66d001d2 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua @@ -59,10 +59,14 @@ local function parse_realm_uri(uri) local scheme, token, server_url, realm_id, query = trim(uri):match("^(realm%+http|realm)://([^@]+)@([^/]+)/([^?]*)%??(.*)$") if not scheme or not token or not server_url or not realm_id then return nil end realm_id = realm_id:gsub("/+$", "") + local address, port = server_url:match("^%[?([^%]]+)%]?:?(%d*)$") + port = tonumber(port) or (scheme == "realm+http" and 80 or 443) local realm = { scheme = scheme, token = token, server_url = server_url, + address = address, + port = port, realm_id = realm_id } -- 解析 query 中的 stun= @@ -292,6 +296,15 @@ function xray_hysteria2() address = server.server, port = tonumber(server.server_port) } + + -- Realm 支持:使用 Realm 服务器地址覆盖默认地址 + if server.v2ray_protocol == "hysteria2" and server.hysteria2_realms then + local realm = parse_realm_uri(server.hysteria2_realm_url) + if realm then + outbound_settings.address = realm.address + outbound_settings.port = realm.port + end + end end local outbound = {} function outbound:new(o) @@ -703,15 +716,56 @@ Xray.outbounds = { local n_maxsplit = xray_fragment.fragment_maxSplit --local domainstr = xray_noise.domainStrategy finalmask.tcp = finalmask.tcp or {} + + -- 辅助函数:将逗号分隔的字符串拆分为数组 + local function split_to_array(str) + if not str or str == "" then return nil end + local result = {} + for value in string.gmatch(str, "[^,]+") do + value = value:gsub("^%s*(.-)%s*$", "%1") -- 去除首尾空格 + if value ~= "" then + table.insert(result, value) + end + end + return #result > 0 and result or nil + end + + -- 构建 fragment settings + local fragment_settings = { + packets = (n_packets and n_packets ~= "") and n_packets or nil, + maxSplit = (n_maxsplit and n_maxsplit ~= "") and n_maxsplit or nil + } + + -- 根据 Xray 版本决定使用旧格式还是新格式 + if xray_version_val <= 260601 then + -- 旧版本:使用 length 和 delay(单个值) + if n_length and n_length ~= "" then + fragment_settings.length = n_length + end + if n_delay and n_delay ~= "" then + if type(n_delay) == "string" and n_delay:find("-", 1, true) then + fragment_settings.delay = n_delay + else + fragment_settings.delay = tonumber(n_delay) + end + end + else + -- 新版本:使用 lengths 和 delays(数组) + -- 拆分逗号分隔的字符串 + local lengths_array = split_to_array(n_length) + if lengths_array then + fragment_settings.lengths = lengths_array + end + + local delays_array = split_to_array(n_delay) + if delays_array then + fragment_settings.delays = delays_array + end + end + finalmask.tcp[#finalmask.tcp + 1] = { type = "fragment", - settings = { - --domainStrategy = (xray_fragment.noise == "1" and xray_noise.enabled == "1") and domainstr or nil, - packets = (n_packets and n_packets ~= "") and n_packets or nil, - length = (n_length and n_length ~= "") and n_length or nil, - delay = (type(n_delay) == "string" and string.find(n_delay, "-")) and n_delay or (n_delay and tonumber(n_delay)), - maxSplit = (n_maxsplit and n_maxsplit ~= "") and n_maxsplit or nil - } + settings = fragment_settings } end if xray_fragment.noise == "1" and (TP == "kcp" or (TP == "xhttp" and (server.tls_alpn == "h3" or server.tls_alpn == "h3,h2"))) then