Skip to content

Commit 16edad4

Browse files
committed
update xhttp
1 parent 1b0c2b1 commit 16edad4

3 files changed

Lines changed: 83 additions & 1 deletion

File tree

app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayFmt.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,10 +703,24 @@ fun buildSingBoxOutboundStreamSettings(bean: StandardV2RayBean): V2RayTransportO
703703
val allowedKeys = arrayOf(
704704
"download",
705705
"xmux",
706+
"headers",
706707
"x_padding_bytes",
707708
"no_grpc_header",
708709
"sc_max_each_post_bytes",
709-
"sc_min_posts_interval_ms"
710+
"sc_min_posts_interval_ms",
711+
"x_padding_obfs_mode",
712+
"x_padding_key",
713+
"x_padding_header",
714+
"x_padding_placement",
715+
"x_padding_method",
716+
"uplink_http_method",
717+
"session_placement",
718+
"session_key",
719+
"seq_placement",
720+
"seq_key",
721+
"uplink_data_placement",
722+
"uplink_data_key",
723+
"uplink_chunk_size"
710724
)
711725
allowedKeys.forEach { key ->
712726
if (extraJson.has(key)) {

app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/XhttpExtraConverter.kt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@ object XhttpExtraConverter {
1515
convertField(xray, singBox, "scMaxEachPostBytes", "sc_max_each_post_bytes")
1616
convertField(xray, singBox, "scMinPostsIntervalMs", "sc_min_posts_interval_ms")
1717
convertField(xray, singBox, "noGRPCHeader", "no_grpc_header")
18+
convertField(xray, singBox, "headers", "headers")
19+
convertField(xray, singBox, "xPaddingObfsMode", "x_padding_obfs_mode")
20+
convertField(xray, singBox, "xPaddingKey", "x_padding_key")
21+
convertField(xray, singBox, "xPaddingHeader", "x_padding_header")
22+
convertField(xray, singBox, "xPaddingPlacement", "x_padding_placement")
23+
convertField(xray, singBox, "xPaddingMethod", "x_padding_method")
24+
convertField(xray, singBox, "uplinkHttpMethod", "uplink_http_method")
25+
convertField(xray, singBox, "sessionIdPosition", "session_placement")
26+
convertField(xray, singBox, "sessionIdName", "session_key")
27+
convertField(xray, singBox, "seqPosition", "seq_placement")
28+
convertField(xray, singBox, "seqName", "seq_key")
29+
convertField(xray, singBox, "dataUpPlacement", "uplink_data_placement")
30+
convertField(xray, singBox, "dataUpName", "uplink_data_key")
31+
convertField(xray, singBox, "dataUpSplitSize", "uplink_chunk_size")
1832

1933
if (xray.has("xmux")) {
2034
val xrayXmux = xray.getJSONObject("xmux")
@@ -101,6 +115,19 @@ object XhttpExtraConverter {
101115
convertField(extra, singBoxDown, "scMaxEachPostBytes", "sc_max_each_post_bytes")
102116
convertField(extra, singBoxDown, "scMinPostsIntervalMs", "sc_min_posts_interval_ms")
103117
convertField(extra, singBoxDown, "noGRPCHeader", "no_grpc_header")
118+
convertField(extra, singBoxDown, "xPaddingObfsMode", "x_padding_obfs_mode")
119+
convertField(extra, singBoxDown, "xPaddingKey", "x_padding_key")
120+
convertField(extra, singBoxDown, "xPaddingHeader", "x_padding_header")
121+
convertField(extra, singBoxDown, "xPaddingPlacement", "x_padding_placement")
122+
convertField(extra, singBoxDown, "xPaddingMethod", "x_padding_method")
123+
convertField(extra, singBoxDown, "uplinkHttpMethod", "uplink_http_method")
124+
convertField(extra, singBoxDown, "sessionIdPosition", "session_placement")
125+
convertField(extra, singBoxDown, "sessionIdName", "session_key")
126+
convertField(extra, singBoxDown, "seqPosition", "seq_placement")
127+
convertField(extra, singBoxDown, "seqName", "seq_key")
128+
convertField(extra, singBoxDown, "dataUpPlacement", "uplink_data_placement")
129+
convertField(extra, singBoxDown, "dataUpName", "uplink_data_key")
130+
convertField(extra, singBoxDown, "dataUpSplitSize", "uplink_chunk_size")
104131
}
105132

106133
if (singBoxDown.length() > 0) singBox.put("download", singBoxDown)
@@ -124,6 +151,20 @@ object XhttpExtraConverter {
124151
convertField(singBox, xray, "sc_max_each_post_bytes", "scMaxEachPostBytes")
125152
convertField(singBox, xray, "sc_min_posts_interval_ms", "scMinPostsIntervalMs")
126153
convertField(singBox, xray, "no_grpc_header", "noGRPCHeader")
154+
convertField(singBox, xray, "headers", "headers")
155+
convertField(singBox, xray, "x_padding_obfs_mode", "xPaddingObfsMode")
156+
convertField(singBox, xray, "x_padding_key", "xPaddingKey")
157+
convertField(singBox, xray, "x_padding_header", "xPaddingHeader")
158+
convertField(singBox, xray, "x_padding_placement", "xPaddingPlacement")
159+
convertField(singBox, xray, "x_padding_method", "xPaddingMethod")
160+
convertField(singBox, xray, "uplink_http_method", "uplinkHttpMethod")
161+
convertField(singBox, xray, "session_placement", "sessionIdPosition")
162+
convertField(singBox, xray, "session_key", "sessionIdName")
163+
convertField(singBox, xray, "seq_placement", "seqPosition")
164+
convertField(singBox, xray, "seq_key", "seqName")
165+
convertField(singBox, xray, "uplink_data_placement", "dataUpPlacement")
166+
convertField(singBox, xray, "uplink_data_key", "dataUpName")
167+
convertField(singBox, xray, "uplink_chunk_size", "dataUpSplitSize")
127168

128169
if (singBox.has("xmux")) {
129170
val singBoxXmux = singBox.getJSONObject("xmux")
@@ -184,6 +225,19 @@ object XhttpExtraConverter {
184225
convertField(singBoxDown, xhttpExtra, "sc_max_each_post_bytes", "scMaxEachPostBytes")
185226
convertField(singBoxDown, xhttpExtra, "sc_min_posts_interval_ms", "scMinPostsIntervalMs")
186227
convertField(singBoxDown, xhttpExtra, "no_grpc_header", "noGRPCHeader")
228+
convertField(singBoxDown, xhttpExtra, "x_padding_obfs_mode", "xPaddingObfsMode")
229+
convertField(singBoxDown, xhttpExtra, "x_padding_key", "xPaddingKey")
230+
convertField(singBoxDown, xhttpExtra, "x_padding_header", "xPaddingHeader")
231+
convertField(singBoxDown, xhttpExtra, "x_padding_placement", "xPaddingPlacement")
232+
convertField(singBoxDown, xhttpExtra, "x_padding_method", "xPaddingMethod")
233+
convertField(singBoxDown, xhttpExtra, "uplink_http_method", "uplinkHttpMethod")
234+
convertField(singBoxDown, xhttpExtra, "session_placement", "sessionIdPosition")
235+
convertField(singBoxDown, xhttpExtra, "session_key", "sessionIdName")
236+
convertField(singBoxDown, xhttpExtra, "seq_placement", "seqPosition")
237+
convertField(singBoxDown, xhttpExtra, "seq_key", "seqName")
238+
convertField(singBoxDown, xhttpExtra, "uplink_data_placement", "dataUpPlacement")
239+
convertField(singBoxDown, xhttpExtra, "uplink_data_key", "dataUpName")
240+
convertField(singBoxDown, xhttpExtra, "uplink_chunk_size", "dataUpSplitSize")
187241

188242
if (singBoxDown.has("xmux")) {
189243
val singBoxDownXmux = singBoxDown.getJSONObject("xmux")

app/src/main/java/moe/matsuri/nb4a/SingBoxOptions.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4674,10 +4674,24 @@ public static class V2RayTransportOptions_XHTTPOptions extends V2RayTransportOpt
46744674
// Advanced field from extra config
46754675
public com.google.gson.JsonElement download;
46764676
public com.google.gson.JsonElement xmux;
4677+
public Map<String, String> headers;
46774678
public com.google.gson.JsonElement x_padding_bytes;
46784679
public com.google.gson.JsonElement no_grpc_header;
46794680
public com.google.gson.JsonElement sc_max_each_post_bytes;
46804681
public com.google.gson.JsonElement sc_min_posts_interval_ms;
4682+
public com.google.gson.JsonElement x_padding_obfs_mode;
4683+
public com.google.gson.JsonElement x_padding_key;
4684+
public com.google.gson.JsonElement x_padding_header;
4685+
public com.google.gson.JsonElement x_padding_placement;
4686+
public com.google.gson.JsonElement x_padding_method;
4687+
public com.google.gson.JsonElement uplink_http_method;
4688+
public com.google.gson.JsonElement session_placement;
4689+
public com.google.gson.JsonElement session_key;
4690+
public com.google.gson.JsonElement seq_placement;
4691+
public com.google.gson.JsonElement seq_key;
4692+
public com.google.gson.JsonElement uplink_data_placement;
4693+
public com.google.gson.JsonElement uplink_data_key;
4694+
public com.google.gson.JsonElement uplink_chunk_size;
46814695

46824696
}
46834697

0 commit comments

Comments
 (0)