diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua index a81b48c14..b10af7828 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua @@ -18,7 +18,7 @@ local function _n(name) end local ss_method_list = { - "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "xchacha20-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" + "aes-128-gcm", "aes-256-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" } local security_list = { "none", "auto", "aes-128-gcm", "chacha20-poly1305", "zero" } diff --git a/luci-app-passwall2/luasrc/passwall2/util_xray.lua b/luci-app-passwall2/luasrc/passwall2/util_xray.lua index 028dc7c7b..68cc72ff4 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_xray.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_xray.lua @@ -243,7 +243,9 @@ function gen_outbound(flag, node, tag, proxy_table) { address = node.address, port = tonumber(node.port), - method = node.method or nil, + method = (node.method == "chacha20-ietf-poly1305" and "chacha20-poly1305") or + (node.method == "xchacha20-ietf-poly1305" and "xchacha20-poly1305") or + (node.method ~= "" and node.method) or nil, ivCheck = (node.protocol == "shadowsocks") and node.iv_check == "1" or nil, uot = (node.protocol == "shadowsocks") and node.uot == "1" or nil, password = node.password or "", diff --git a/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm b/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm index 227824ca5..2cd22fb76 100644 --- a/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm +++ b/luci-app-passwall2/luasrc/view/passwall2/node_list/link_share_man.htm @@ -747,17 +747,19 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin dom_prefix = "xray_" opt.set('type', "Xray"); opt.set(dom_prefix + 'protocol', "shadowsocks"); - method = method.toLowerCase() === "chacha20-ietf-poly1305" ? "chacha20-poly1305" : method; } else { if (["2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305"].includes(method)) { dom_prefix = "ssrust_" opt.set('type', "SS-Rust"); - method = method.toLowerCase() === "chacha20-poly1305" ? "chacha20-ietf-poly1305" : method; } else { dom_prefix = "ss_" opt.set('type', "SS"); } } + if (ss_type !== "xray") { + method = method.toLowerCase() === "chacha20-poly1305" ? "chacha20-ietf-poly1305" : method; + method = method.toLowerCase() === "xchacha20-poly1305" ? "xchacha20-ietf-poly1305" : method; + } opt.set(dom_prefix + 'address', server); opt.set(dom_prefix + 'port', port); opt.set(dom_prefix + 'password', password || ""); @@ -876,6 +878,7 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin var team = sstr.split('@'); var part1 = team[0].split(':'); var part2 = team[1].split(':'); + var method = part1[0] if (ss_type == "sing-box" && has_singbox) { dom_prefix = "singbox_" @@ -890,11 +893,15 @@ local hysteria2_type = map:get("@global_subscribe[0]", "hysteria2_type") or "sin opt.set('type', "SS"); } + if (ss_type !== "xray") { + method = method.toLowerCase() === "chacha20-poly1305" ? "chacha20-ietf-poly1305" : method; + method = method.toLowerCase() === "xchacha20-poly1305" ? "xchacha20-ietf-poly1305" : method; + } opt.set(dom_prefix + 'address', part2[0]); opt.set(dom_prefix + 'port', part2[1]); opt.set(dom_prefix + 'password', part1[1]); - opt.set(dom_prefix + 'method', part1[0]); - opt.set(dom_prefix + 'ss_method', part1[0]); + opt.set(dom_prefix + 'method', method); + opt.set(dom_prefix + 'ss_method', method); opt.set(dom_prefix + 'plugin', "none"); //opt.set(dom_prefix + 'plugin_opts', ""); if (param !== undefined) { diff --git a/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua b/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua index f0aaf7b4b..57d928caf 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua +++ b/luci-app-passwall2/root/usr/share/passwall2/subscribe.lua @@ -630,12 +630,9 @@ local function processData(szType, content, add_mode, add_from) result.protocol = 'shadowsocks' end - if result.type == "SS-Rust" and method:lower() == "chacha20-poly1305" then - result.method = "chacha20-ietf-poly1305" - end - - if result.type == "Xray" and method:lower() == "chacha20-ietf-poly1305" then - result.method = "chacha20-poly1305" + if result.type ~= "Xray" then + result.method = (method:lower() == "chacha20-poly1305" and "chacha20-ietf-poly1305") or + (method:lower() == "xchacha20-poly1305" and "xchacha20-ietf-poly1305") or method end if result.plugin then