fix(sub): include xhttp mode in extra JSON for karing compatibility (#4365)
- Add mode to buildXhttpExtra() so clients reading xtra param (karing, etc.) receive the xhttp mode alongside other bidirectional SplitHTTP fields. Previously mode was only a flat URL param and was silently dropped when xtra was present. - Add xhttp case to streamData() to strip acceptProxyProtocol and server-only fields (noSSEHeader, scMaxBufferedPosts, scStreamUpServerSecs, serverMaxHeaderBytes) from JSON sub configs. - Sync frontend buildXhttpExtra() with the same mode addition. Closes #4364
This commit is contained in:
@@ -1595,6 +1595,10 @@ export class Inbound extends XrayCommonClass {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof xhttp.mode === 'string' && xhttp.mode.length > 0) {
|
||||||
|
extra.mode = xhttp.mode;
|
||||||
|
}
|
||||||
|
|
||||||
const stringFields = [
|
const stringFields = [
|
||||||
"sessionPlacement", "sessionKey",
|
"sessionPlacement", "sessionKey",
|
||||||
"seqPlacement", "seqKey",
|
"seqPlacement", "seqKey",
|
||||||
|
|||||||
@@ -265,6 +265,14 @@ func (s *SubJsonService) streamData(stream string) map[string]any {
|
|||||||
streamSettings["wsSettings"] = s.removeAcceptProxy(streamSettings["wsSettings"])
|
streamSettings["wsSettings"] = s.removeAcceptProxy(streamSettings["wsSettings"])
|
||||||
case "httpupgrade":
|
case "httpupgrade":
|
||||||
streamSettings["httpupgradeSettings"] = s.removeAcceptProxy(streamSettings["httpupgradeSettings"])
|
streamSettings["httpupgradeSettings"] = s.removeAcceptProxy(streamSettings["httpupgradeSettings"])
|
||||||
|
case "xhttp":
|
||||||
|
streamSettings["xhttpSettings"] = s.removeAcceptProxy(streamSettings["xhttpSettings"])
|
||||||
|
if xhttp, ok := streamSettings["xhttpSettings"].(map[string]any); ok {
|
||||||
|
delete(xhttp, "noSSEHeader")
|
||||||
|
delete(xhttp, "scMaxBufferedPosts")
|
||||||
|
delete(xhttp, "scStreamUpServerSecs")
|
||||||
|
delete(xhttp, "serverMaxHeaderBytes")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return streamSettings
|
return streamSettings
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1025,6 +1025,10 @@ func buildXhttpExtra(xhttp map[string]any) map[string]any {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if mode, ok := xhttp["mode"].(string); ok && len(mode) > 0 {
|
||||||
|
extra["mode"] = mode
|
||||||
|
}
|
||||||
|
|
||||||
stringFields := []string{
|
stringFields := []string{
|
||||||
"sessionPlacement", "sessionKey",
|
"sessionPlacement", "sessionKey",
|
||||||
"seqPlacement", "seqKey",
|
"seqPlacement", "seqKey",
|
||||||
|
|||||||
Reference in New Issue
Block a user