fix: websocket host and httpupgrade support for trojan and more

This commit is contained in:
Dicky Mulia Fiqri 2024-12-28 18:01:32 +07:00
parent a9ce5da09d
commit 02c9086d9d
2 changed files with 17 additions and 5 deletions

View file

@ -178,15 +178,23 @@ func ConvertsV2Ray(buf []byte) ([]map[string]any, error) {
}
switch network {
case "ws":
case "ws", "httpupgrade":
headers := make(map[string]any)
wsOpts := make(map[string]any)
headers["User-Agent"] = RandUserAgent()
if host := query.Get("host"); host != "" {
headers["Host"] = host
}
wsOpts["path"] = query.Get("path")
wsOpts["headers"] = headers
if network == "httpupgrade" {
wsOpts["v2ray-http-upgrade"] = true
wsOpts["v2ray-http-upgrade-fast-open"] = true
}
trojan["ws-opts"] = wsOpts
case "grpc":
@ -350,6 +358,7 @@ func ConvertsV2Ray(buf []byte) ([]map[string]any, error) {
wsOpts["max-early-data"] = med
wsOpts["early-data-header-name"] = "Sec-WebSocket-Protocol"
case "httpupgrade":
wsOpts["v2ray-http-upgrade"] = true
wsOpts["v2ray-http-upgrade-fast-open"] = true
}
query.Del("ed")
@ -443,10 +452,12 @@ func ConvertsV2Ray(buf []byte) ([]map[string]any, error) {
} else if strings.Contains(pluginName, "v2ray-plugin") {
ss["plugin"] = "v2ray-plugin"
ss["plugin-opts"] = map[string]any{
"mode": pluginInfo.Get("mode"),
"host": pluginInfo.Get("host"),
"path": pluginInfo.Get("path"),
"tls": strings.Contains(plugin, "tls"),
"mode": pluginInfo.Get("mode"),
"host": pluginInfo.Get("host"),
"path": pluginInfo.Get("path"),
"tls": strings.Contains(plugin, "tls"),
"mux": pluginInfo.Get("mux") != "0",
"v2ray-http-upgrade": strings.Contains(plugin, "httpupgrade"),
}
}
}

View file

@ -118,6 +118,7 @@ func handleVShareLink(names map[string]int, url *url.URL, scheme string, proxy m
wsOpts["max-early-data"] = med
wsOpts["early-data-header-name"] = "Sec-WebSocket-Protocol"
case "httpupgrade":
wsOpts["v2ray-http-upgrade"] = true
wsOpts["v2ray-http-upgrade-fast-open"] = true
}
}