diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua index b5fd6906e..662a6c49c 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua @@ -438,6 +438,7 @@ o = s:option(ListValue, option_name("transport"), translate("Transport")) o:value("tcp", "TCP") o:value("http", "HTTP") o:value("ws", "WebSocket") +o:value("httpupgrade", "HTTPUpgrade") if singbox_tags:find("with_quic") then o:value("quic", "QUIC") end @@ -509,6 +510,14 @@ o:depends({ [option_name("ws_enableEarlyData")] = true }) o = s:option(Value, option_name("ws_earlyDataHeaderName"), translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol")) o:depends({ [option_name("ws_enableEarlyData")] = true }) +-- [[ HTTPUpgrade部分 ]]-- +o = s:option(Value, option_name("httpupgrade_host"), translate("HTTPUpgrade Host")) +o:depends({ [option_name("transport")] = "httpupgrade" }) + +o = s:option(Value, option_name("httpupgrade_path"), translate("HTTPUpgrade Path")) +o.placeholder = "/" +o:depends({ [option_name("transport")] = "httpupgrade" }) + -- [[ gRPC部分 ]]-- o = s:option(Value, option_name("grpc_serviceName"), "ServiceName") o:depends({ [option_name("transport")] = "grpc" }) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua index a5c3f16d4..dd9b3e87c 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua @@ -310,6 +310,7 @@ o = s:option(ListValue, option_name("transport"), translate("Transport")) o:value("tcp", "TCP") o:value("http", "HTTP") o:value("ws", "WebSocket") +o:value("httpupgrade", "HTTPUpgrade") o:value("quic", "QUIC") o:value("grpc", "gRPC") o:depends({ [option_name("protocol")] = "shadowsocks" }) @@ -333,6 +334,14 @@ o:depends({ [option_name("transport")] = "ws" }) o = s:option(Value, option_name("ws_path"), translate("WebSocket Path")) o:depends({ [option_name("transport")] = "ws" }) +-- [[ HTTPUpgrade部分 ]]-- + +o = s:option(Value, option_name("httpupgrade_host"), translate("HTTPUpgrade Host")) +o:depends({ [option_name("transport")] = "httpupgrade" }) + +o = s:option(Value, option_name("httpupgrade_path"), translate("HTTPUpgrade Path")) +o:depends({ [option_name("transport")] = "httpupgrade" }) + -- [[ gRPC部分 ]]-- o = s:option(Value, option_name("grpc_serviceName"), "ServiceName") o:depends({ [option_name("transport")] = "grpc" }) diff --git a/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua b/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua index 91ad75230..64602abc1 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua @@ -165,6 +165,14 @@ function gen_outbound(flag, node, tag, proxy_table) } end + if node.transport == "httpupgrade" then + v2ray_transport = { + type = "httpupgrade", + host = node.httpupgrade_host, + path = node.httpupgrade_path or "/", + } + end + if node.transport == "quic" then v2ray_transport = { type = "quic" @@ -440,6 +448,14 @@ function gen_config_server(node) } end + if node.transport == "httpupgrade" then + v2ray_transport = { + type = "httpupgrade", + host = node.httpupgrade_host, + path = node.httpupgrade_path or "/", + } + end + if node.transport == "quic" then v2ray_transport = { type = "quic"