Skip to content

Commit 5a5e312

Browse files
committed
chore: remove unused xhttp options in download-settings
1 parent 1f4cde8 commit 5a5e312

3 files changed

Lines changed: 31 additions & 135 deletions

File tree

adapter/outbound/vless.go

Lines changed: 11 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -115,27 +115,10 @@ type XHTTPReuseSettings struct {
115115

116116
type XHTTPDownloadSettings struct {
117117
// xhttp part
118-
Path *string `proxy:"path,omitempty"`
119-
Host *string `proxy:"host,omitempty"`
120-
Headers *map[string]string `proxy:"headers,omitempty"`
121-
NoGRPCHeader *bool `proxy:"no-grpc-header,omitempty"`
122-
XPaddingBytes *string `proxy:"x-padding-bytes,omitempty"`
123-
XPaddingObfsMode *bool `proxy:"x-padding-obfs-mode,omitempty"`
124-
XPaddingKey *string `proxy:"x-padding-key,omitempty"`
125-
XPaddingHeader *string `proxy:"x-padding-header,omitempty"`
126-
XPaddingPlacement *string `proxy:"x-padding-placement,omitempty"`
127-
XPaddingMethod *string `proxy:"x-padding-method,omitempty"`
128-
UplinkHTTPMethod *string `proxy:"uplink-http-method,omitempty"`
129-
SessionPlacement *string `proxy:"session-placement,omitempty"`
130-
SessionKey *string `proxy:"session-key,omitempty"`
131-
SeqPlacement *string `proxy:"seq-placement,omitempty"`
132-
SeqKey *string `proxy:"seq-key,omitempty"`
133-
UplinkDataPlacement *string `proxy:"uplink-data-placement,omitempty"`
134-
UplinkDataKey *string `proxy:"uplink-data-key,omitempty"`
135-
UplinkChunkSize *string `proxy:"uplink-chunk-size,omitempty"`
136-
ScMaxEachPostBytes *string `proxy:"sc-max-each-post-bytes,omitempty"`
137-
ScMinPostsIntervalMs *string `proxy:"sc-min-posts-interval-ms,omitempty"`
138-
ReuseSettings *XHTTPReuseSettings `proxy:"reuse-settings,omitempty"` // aka XMUX
118+
Path *string `proxy:"path,omitempty"`
119+
Host *string `proxy:"host,omitempty"`
120+
Headers *map[string]string `proxy:"headers,omitempty"`
121+
ReuseSettings *XHTTPReuseSettings `proxy:"reuse-settings,omitempty"` // aka XMUX
139122
// proxy part
140123
Server *string `proxy:"server,omitempty"`
141124
Port *int `proxy:"port,omitempty"`
@@ -690,9 +673,13 @@ func NewVless(option VlessOption) (*Vless, error) {
690673

691674
downloadHKeepAlivePeriod := hKeepAlivePeriod
692675

693-
downloadReuseCfg := reuseCfg
676+
downloadCfg := *cfg // make a copy
677+
downloadCfg.Host = downloadHost
678+
downloadCfg.Path = lo.FromPtrOr(ds.Path, v.option.XHTTPOpts.Path)
679+
downloadCfg.Headers = lo.FromPtrOr(ds.Headers, v.option.XHTTPOpts.Headers)
680+
694681
if ds.ReuseSettings != nil {
695-
downloadReuseCfg = &xhttp.ReuseConfig{
682+
downloadCfg.ReuseConfig = &xhttp.ReuseConfig{
696683
MaxConcurrency: ds.ReuseSettings.MaxConcurrency,
697684
MaxConnections: ds.ReuseSettings.MaxConnections,
698685
CMaxReuseTimes: ds.ReuseSettings.CMaxReuseTimes,
@@ -702,30 +689,7 @@ func NewVless(option VlessOption) (*Vless, error) {
702689
downloadHKeepAlivePeriod = time.Duration(ds.ReuseSettings.HKeepAlivePeriod) * time.Second
703690
}
704691

705-
cfg.DownloadConfig = &xhttp.Config{
706-
Host: downloadHost,
707-
Path: lo.FromPtrOr(ds.Path, v.option.XHTTPOpts.Path),
708-
Mode: v.option.XHTTPOpts.Mode,
709-
Headers: lo.FromPtrOr(ds.Headers, v.option.XHTTPOpts.Headers),
710-
NoGRPCHeader: lo.FromPtrOr(ds.NoGRPCHeader, v.option.XHTTPOpts.NoGRPCHeader),
711-
XPaddingBytes: lo.FromPtrOr(ds.XPaddingBytes, v.option.XHTTPOpts.XPaddingBytes),
712-
XPaddingObfsMode: lo.FromPtrOr(ds.XPaddingObfsMode, v.option.XHTTPOpts.XPaddingObfsMode),
713-
XPaddingKey: lo.FromPtrOr(ds.XPaddingKey, v.option.XHTTPOpts.XPaddingKey),
714-
XPaddingHeader: lo.FromPtrOr(ds.XPaddingHeader, v.option.XHTTPOpts.XPaddingHeader),
715-
XPaddingPlacement: lo.FromPtrOr(ds.XPaddingPlacement, v.option.XHTTPOpts.XPaddingPlacement),
716-
XPaddingMethod: lo.FromPtrOr(ds.XPaddingMethod, v.option.XHTTPOpts.XPaddingMethod),
717-
UplinkHTTPMethod: lo.FromPtrOr(ds.UplinkHTTPMethod, v.option.XHTTPOpts.UplinkHTTPMethod),
718-
SessionPlacement: lo.FromPtrOr(ds.SessionPlacement, v.option.XHTTPOpts.SessionPlacement),
719-
SessionKey: lo.FromPtrOr(ds.SessionKey, v.option.XHTTPOpts.SessionKey),
720-
SeqPlacement: lo.FromPtrOr(ds.SeqPlacement, v.option.XHTTPOpts.SeqPlacement),
721-
SeqKey: lo.FromPtrOr(ds.SeqKey, v.option.XHTTPOpts.SeqKey),
722-
UplinkDataPlacement: lo.FromPtrOr(ds.UplinkDataPlacement, v.option.XHTTPOpts.UplinkDataPlacement),
723-
UplinkDataKey: lo.FromPtrOr(ds.UplinkDataKey, v.option.XHTTPOpts.UplinkDataKey),
724-
UplinkChunkSize: lo.FromPtrOr(ds.UplinkChunkSize, v.option.XHTTPOpts.UplinkChunkSize),
725-
ScMaxEachPostBytes: lo.FromPtrOr(ds.ScMaxEachPostBytes, v.option.XHTTPOpts.ScMaxEachPostBytes),
726-
ScMinPostsIntervalMs: lo.FromPtrOr(ds.ScMinPostsIntervalMs, v.option.XHTTPOpts.ScMinPostsIntervalMs),
727-
ReuseConfig: downloadReuseCfg,
728-
}
692+
cfg.DownloadConfig = &downloadCfg
729693

730694
makeDownloadTransport = func() http.RoundTripper {
731695
return xhttp.NewTransport(

common/convert/v.go

Lines changed: 20 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -199,74 +199,74 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
199199
if v, ok := extra["xPaddingBytes"].(string); ok && v != "" {
200200
opts["x-padding-bytes"] = v
201201
}
202-
202+
203203
if v, ok := extra["xPaddingObfsMode"].(bool); ok {
204204
opts["x-padding-obfs-mode"] = v
205205
}
206-
206+
207207
if v, ok := extra["xPaddingKey"].(string); ok && v != "" {
208208
opts["x-padding-key"] = v
209209
}
210-
210+
211211
if v, ok := extra["xPaddingHeader"].(string); ok && v != "" {
212212
opts["x-padding-header"] = v
213213
}
214-
214+
215215
if v, ok := extra["xPaddingPlacement"].(string); ok && v != "" {
216216
opts["x-padding-placement"] = v
217217
}
218-
218+
219219
if v, ok := extra["xPaddingMethod"].(string); ok && v != "" {
220220
opts["x-padding-method"] = v
221221
}
222-
222+
223223
if v, ok := extra["uplinkHttpMethod"].(string); ok && v != "" {
224224
opts["uplink-http-method"] = v
225225
}
226-
226+
227227
if v, ok := extra["sessionPlacement"].(string); ok && v != "" {
228228
opts["session-placement"] = v
229229
}
230-
230+
231231
if v, ok := extra["sessionKey"].(string); ok && v != "" {
232232
opts["session-key"] = v
233233
}
234-
234+
235235
if v, ok := extra["seqPlacement"].(string); ok && v != "" {
236236
opts["seq-placement"] = v
237237
}
238-
238+
239239
if v, ok := extra["seqKey"].(string); ok && v != "" {
240240
opts["seq-key"] = v
241241
}
242-
242+
243243
if v, ok := extra["uplinkDataPlacement"].(string); ok && v != "" {
244244
opts["uplink-data-placement"] = v
245245
}
246-
246+
247247
if v, ok := extra["uplinkDataKey"].(string); ok && v != "" {
248248
opts["uplink-data-key"] = v
249249
}
250-
250+
251251
if v, ok := extra["uplinkChunkSize"].(float64); ok {
252252
opts["uplink-chunk-size"] = int(v)
253253
}
254-
254+
255255
if v, ok := extra["scMaxEachPostBytes"].(float64); ok {
256256
opts["sc-max-each-post-bytes"] = int(v)
257257
}
258-
258+
259259
if v, ok := extra["scMinPostsIntervalMs"].(float64); ok {
260260
opts["sc-min-posts-interval-ms"] = int(v)
261261
}
262-
262+
263263
// xmux in root extra → reuse-settings
264264
if xmuxAny, ok := extra["xmux"].(map[string]any); ok && len(xmuxAny) > 0 {
265265
if reuse := xmuxToReuse(xmuxAny); len(reuse) > 0 {
266266
opts["reuse-settings"] = reuse
267267
}
268268
}
269-
269+
270270
if dsAny, ok := extra["downloadSettings"].(map[string]any); ok {
271271
ds := make(map[string]any)
272272

@@ -285,7 +285,7 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
285285

286286
if sec == "tls" || sec == "reality" {
287287
ds["tls"] = true
288-
288+
289289
if tlsAny, ok := dsAny["tlsSettings"].(map[string]any); ok {
290290
if sn, ok := tlsAny["serverName"].(string); ok && sn != "" {
291291
ds["servername"] = sn
@@ -308,7 +308,7 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
308308
ds["skip-cert-verify"] = true
309309
}
310310
}
311-
311+
312312
if sec == "reality" {
313313
if realityAny, ok := dsAny["realitySettings"].(map[string]any); ok {
314314
realityOpts := make(map[string]any)
@@ -335,57 +335,6 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
335335
if headers, ok := xhttpAny["headers"].(map[string]any); ok && len(headers) > 0 {
336336
ds["headers"] = headers
337337
}
338-
if v, ok := xhttpAny["noGRPCHeader"].(bool); ok && v {
339-
ds["no-grpc-header"] = true
340-
}
341-
if v, ok := xhttpAny["xPaddingBytes"].(string); ok && v != "" {
342-
ds["x-padding-bytes"] = v
343-
}
344-
if v, ok := xhttpAny["xPaddingObfsMode"].(bool); ok {
345-
ds["x-padding-obfs-mode"] = v
346-
}
347-
if v, ok := xhttpAny["xPaddingKey"].(string); ok && v != "" {
348-
ds["x-padding-key"] = v
349-
}
350-
if v, ok := xhttpAny["xPaddingHeader"].(string); ok && v != "" {
351-
ds["x-padding-header"] = v
352-
}
353-
if v, ok := xhttpAny["xPaddingPlacement"].(string); ok && v != "" {
354-
ds["x-padding-placement"] = v
355-
}
356-
if v, ok := xhttpAny["xPaddingMethod"].(string); ok && v != "" {
357-
ds["x-padding-method"] = v
358-
}
359-
if v, ok := xhttpAny["uplinkHttpMethod"].(string); ok && v != "" {
360-
ds["uplink-http-method"] = v
361-
}
362-
if v, ok := xhttpAny["sessionPlacement"].(string); ok && v != "" {
363-
ds["session-placement"] = v
364-
}
365-
if v, ok := xhttpAny["sessionKey"].(string); ok && v != "" {
366-
ds["session-key"] = v
367-
}
368-
if v, ok := xhttpAny["seqPlacement"].(string); ok && v != "" {
369-
ds["seq-placement"] = v
370-
}
371-
if v, ok := xhttpAny["seqKey"].(string); ok && v != "" {
372-
ds["seq-key"] = v
373-
}
374-
if v, ok := xhttpAny["uplinkDataPlacement"].(string); ok && v != "" {
375-
ds["uplink-data-placement"] = v
376-
}
377-
if v, ok := xhttpAny["uplinkDataKey"].(string); ok && v != "" {
378-
ds["uplink-data-key"] = v
379-
}
380-
if v, ok := xhttpAny["uplinkChunkSize"].(float64); ok {
381-
ds["uplink-chunk-size"] = int(v)
382-
}
383-
if v, ok := xhttpAny["scMaxEachPostBytes"].(float64); ok {
384-
ds["sc-max-each-post-bytes"] = int(v)
385-
}
386-
if v, ok := xhttpAny["scMinPostsIntervalMs"].(float64); ok {
387-
ds["sc-min-posts-interval-ms"] = int(v)
388-
}
389338

390339
// xmux inside downloadSettings.xhttpSettings.extra → download-settings.reuse-settings
391340
if dsExtraAny, ok := xhttpAny["extra"].(map[string]any); ok {
@@ -401,4 +350,4 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
401350
opts["download-settings"] = ds
402351
}
403352
}
404-
}
353+
}

docs/config.yaml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -853,23 +853,6 @@ proxies: # socks5
853853
# host: xxx.com
854854
# headers:
855855
# X-Forwarded-For: ""
856-
# no-grpc-header: false
857-
# x-padding-bytes: "100-1000"
858-
# x-padding-obfs-mode: false
859-
# x-padding-key: x_padding
860-
# x-padding-header: Referer
861-
# x-padding-placement: queryInHeader # Available: queryInHeader, cookie, header, query
862-
# x-padding-method: repeat-x # Available: repeat-x, tokenish
863-
# uplink-http-method: POST # Available: POST, PUT, PATCH, DELETE
864-
# session-placement: path # Available: path, query, cookie, header
865-
# session-key: ""
866-
# seq-placement: path # Available: path, query, cookie, header
867-
# seq-key: ""
868-
# uplink-data-placement: body # Available: body, cookie, header
869-
# uplink-data-key: ""
870-
# uplink-chunk-size: 0 # only applicable when uplink-data-placement is not body
871-
# sc-max-each-post-bytes: 1000000
872-
# sc-min-posts-interval-ms: 30
873856
# reuse-settings: # aka XMUX
874857
# max-concurrency: "16-32"
875858
# max-connections: "0"

0 commit comments

Comments
 (0)