chore: remove unused xhttp options in download-settings
Build / build (map[abi:1 debian:loongarch64 goarch:loong64 goos:linux goversion:custom output:loong64-abi1 rpm:loongarch64]) (push) Waiting to run
Build / build (map[abi:2 debian:loong64 goarch:loong64 goos:linux output:loong64-abi2 rpm:loong64]) (push) Waiting to run
Build / build (map[debian:amd64 goamd64:v1 goarch:amd64 goos:linux output:amd64-v1 pacman:x86_64 rpm:x86_64 test:test]) (push) Waiting to run
Build / build (map[debian:amd64 goamd64:v2 goarch:amd64 goos:linux output:amd64-v2 pacman:x86_64 rpm:x86_64]) (push) Waiting to run
Build / build (map[debian:amd64 goamd64:v3 goarch:amd64 goos:linux output:amd64 pacman:x86_64 rpm:x86_64 tarball:tarball]) (push) Waiting to run
Build / build (map[debian:amd64 goamd64:v3 goarch:amd64 goos:linux output:amd64-v3 pacman:x86_64 rpm:x86_64]) (push) Waiting to run
Build / build (map[debian:arm64 goarch:arm64 goos:linux output:arm64 pacman:aarch64 rpm:aarch64]) (push) Waiting to run
Build / build (map[debian:armel goarch:arm goarm:6 goos:linux output:armv6 rpm:armv6hl]) (push) Waiting to run
Build / build (map[debian:armhf goarch:arm goarm:7 goos:linux output:armv7 pacman:armv7hl rpm:armv7hl]) (push) Waiting to run
Build / build (map[debian:i386 go386:sse2 goarch:386 goos:linux output:386 rpm:i386]) (push) Waiting to run
Build / build (map[debian:mips64el goarch:mips64le goos:linux output:mips64le rpm:mips64el]) (push) Waiting to run
Build / build (map[debian:ppc64el goarch:ppc64le goos:linux output:ppc64le rpm:ppc64le]) (push) Waiting to run
Build / build (map[debian:riscv64 goarch:riscv64 goos:linux output:riscv64 rpm:riscv64]) (push) Waiting to run
Build / build (map[debian:s390x goarch:s390x goos:linux output:s390x rpm:s390x]) (push) Waiting to run
Build / build (map[go386:softfloat goarch:386 goos:linux output:386-softfloat]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin goversion:1.20 output:amd64-v1-go120]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin goversion:1.22 output:amd64-v1-go122]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin goversion:1.24 output:amd64-v1-go124]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin output:amd64-v1]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:freebsd output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:freebsd output:amd64-v1]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux goversion:1.20 output:amd64-v1-go120 test:test]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux goversion:1.23 output:amd64-v1-go123 test:test]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.20 output:amd64-v1-go120]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.21 output:amd64-v1-go121]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.22 output:amd64-v1-go122]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.23 output:amd64-v1-go123]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.24 output:amd64-v1-go124]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.25 output:amd64-v1-go125]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows output:amd64-v1]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:darwin goversion:1.20 output:amd64-v2-go120]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:darwin goversion:1.22 output:amd64-v2-go122]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:darwin goversion:1.24 output:amd64-v2-go124]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:darwin output:amd64-v2]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:freebsd output:amd64-v2]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:linux goversion:1.20 output:amd64-v2-go120]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:linux goversion:1.23 output:amd64-v2-go123]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.20 output:amd64-v2-go120]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.21 output:amd64-v2-go121]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.22 output:amd64-v2-go122]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.23 output:amd64-v2-go123]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.24 output:amd64-v2-go124]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows goversion:1.25 output:amd64-v2-go125]) (push) Waiting to run
Build / build (map[goamd64:v2 goarch:amd64 goos:windows output:amd64-v2]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin goversion:1.20 output:amd64-v3-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin goversion:1.22 output:amd64-v3-go122]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin goversion:1.24 output:amd64-v3-go124]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin output:amd64-v3]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin output:amd64]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:freebsd output:amd64-v3]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:freebsd output:amd64]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:linux goversion:1.20 output:amd64-v3-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:linux goversion:1.23 output:amd64-v3-go123]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.20 output:amd64-v3-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.21 output:amd64-v3-go121]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.22 output:amd64-v3-go122]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.23 output:amd64-v3-go123]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.24 output:amd64-v3-go124]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.25 output:amd64-v3-go125]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows output:amd64-v3]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows output:amd64]) (push) Waiting to run
Build / build (map[goarch:386 goos:android ndk:i686-linux-android34 output:386]) (push) Waiting to run
Build / build (map[goarch:386 goos:freebsd output:386]) (push) Waiting to run
Build / build (map[goarch:386 goos:linux goversion:1.20 output:386-go120]) (push) Waiting to run
Build / build (map[goarch:386 goos:linux goversion:1.23 output:386-go123]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.20 output:386-go120]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.21 output:386-go121]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.22 output:386-go122]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.23 output:386-go123]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.24 output:386-go124]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.25 output:386-go125]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows output:386]) (push) Waiting to run
Build / build (map[goarch:amd64 goos:android ndk:x86_64-linux-android34 output:amd64]) (push) Waiting to run
Build / build (map[goarch:arm goarm:5 goos:linux output:armv5]) (push) Waiting to run
Build / build (map[goarch:arm goos:android ndk:armv7a-linux-androideabi34 output:armv7]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:android ndk:aarch64-linux-android34 output:arm64-v8]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin goversion:1.20 output:arm64-go120]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin goversion:1.22 output:arm64-go122]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin goversion:1.24 output:arm64-go124]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin output:arm64]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:freebsd output:arm64]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:windows output:arm64]) (push) Waiting to run
Build / build (map[goarch:mips gomips:hardfloat goos:linux output:mips-hardfloat]) (push) Waiting to run
Build / build (map[goarch:mips gomips:softfloat goos:linux output:mips-softfloat]) (push) Waiting to run
Build / build (map[goarch:mips64 goos:linux output:mips64]) (push) Waiting to run
Build / build (map[goarch:mipsle gomips:hardfloat goos:linux output:mipsle-hardfloat]) (push) Waiting to run
Build / build (map[goarch:mipsle gomips:softfloat goos:linux output:mipsle-softfloat]) (push) Waiting to run
Build / Upload-Prerelease (push) Blocked by required conditions
Build / Upload-Release (push) Blocked by required conditions
Build / Docker (push) Blocked by required conditions
Test / test (1.20, macos-26-intel) (push) Waiting to run
Test / test (1.20, macos-latest) (push) Waiting to run
Test / test (1.20, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.20, ubuntu-latest) (push) Waiting to run
Test / test (1.20, windows-11-arm) (push) Waiting to run
Test / test (1.20, windows-latest) (push) Waiting to run
Test / test (1.21, macos-26-intel) (push) Waiting to run
Test / test (1.21, macos-latest) (push) Waiting to run
Test / test (1.21, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.21, ubuntu-latest) (push) Waiting to run
Test / test (1.21, windows-11-arm) (push) Waiting to run
Test / test (1.21, windows-latest) (push) Waiting to run
Test / test (1.22, macos-26-intel) (push) Waiting to run
Test / test (1.22, macos-latest) (push) Waiting to run
Test / test (1.22, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.22, ubuntu-latest) (push) Waiting to run
Test / test (1.22, windows-11-arm) (push) Waiting to run
Test / test (1.22, windows-latest) (push) Waiting to run
Test / test (1.23, macos-26-intel) (push) Waiting to run
Test / test (1.23, macos-latest) (push) Waiting to run
Test / test (1.23, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.23, ubuntu-latest) (push) Waiting to run
Test / test (1.23, windows-11-arm) (push) Waiting to run
Test / test (1.23, windows-latest) (push) Waiting to run
Test / test (1.24, macos-26-intel) (push) Waiting to run
Test / test (1.24, macos-latest) (push) Waiting to run
Test / test (1.24, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.24, ubuntu-latest) (push) Waiting to run
Test / test (1.24, windows-11-arm) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Test / test (1.25, macos-26-intel) (push) Waiting to run
Test / test (1.25, macos-latest) (push) Waiting to run
Test / test (1.25, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.25, ubuntu-latest) (push) Waiting to run
Test / test (1.25, windows-11-arm) (push) Waiting to run
Test / test (1.25, windows-latest) (push) Waiting to run
Test / test (1.26, macos-26-intel) (push) Waiting to run
Test / test (1.26, macos-latest) (push) Waiting to run
Test / test (1.26, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.26, ubuntu-latest) (push) Waiting to run
Test / test (1.26, windows-11-arm) (push) Waiting to run
Test / test (1.26, windows-latest) (push) Waiting to run
Trigger CMFA Update / trigger-CMFA-update (push) Waiting to run

This commit is contained in:
wwqgtxx
2026-04-22 14:24:37 +08:00
parent 1f4cde8588
commit 5a5e312b7d
3 changed files with 31 additions and 135 deletions
+11 -47
View File
@@ -115,27 +115,10 @@ type XHTTPReuseSettings struct {
type XHTTPDownloadSettings struct {
// xhttp part
Path *string `proxy:"path,omitempty"`
Host *string `proxy:"host,omitempty"`
Headers *map[string]string `proxy:"headers,omitempty"`
NoGRPCHeader *bool `proxy:"no-grpc-header,omitempty"`
XPaddingBytes *string `proxy:"x-padding-bytes,omitempty"`
XPaddingObfsMode *bool `proxy:"x-padding-obfs-mode,omitempty"`
XPaddingKey *string `proxy:"x-padding-key,omitempty"`
XPaddingHeader *string `proxy:"x-padding-header,omitempty"`
XPaddingPlacement *string `proxy:"x-padding-placement,omitempty"`
XPaddingMethod *string `proxy:"x-padding-method,omitempty"`
UplinkHTTPMethod *string `proxy:"uplink-http-method,omitempty"`
SessionPlacement *string `proxy:"session-placement,omitempty"`
SessionKey *string `proxy:"session-key,omitempty"`
SeqPlacement *string `proxy:"seq-placement,omitempty"`
SeqKey *string `proxy:"seq-key,omitempty"`
UplinkDataPlacement *string `proxy:"uplink-data-placement,omitempty"`
UplinkDataKey *string `proxy:"uplink-data-key,omitempty"`
UplinkChunkSize *string `proxy:"uplink-chunk-size,omitempty"`
ScMaxEachPostBytes *string `proxy:"sc-max-each-post-bytes,omitempty"`
ScMinPostsIntervalMs *string `proxy:"sc-min-posts-interval-ms,omitempty"`
ReuseSettings *XHTTPReuseSettings `proxy:"reuse-settings,omitempty"` // aka XMUX
Path *string `proxy:"path,omitempty"`
Host *string `proxy:"host,omitempty"`
Headers *map[string]string `proxy:"headers,omitempty"`
ReuseSettings *XHTTPReuseSettings `proxy:"reuse-settings,omitempty"` // aka XMUX
// proxy part
Server *string `proxy:"server,omitempty"`
Port *int `proxy:"port,omitempty"`
@@ -690,9 +673,13 @@ func NewVless(option VlessOption) (*Vless, error) {
downloadHKeepAlivePeriod := hKeepAlivePeriod
downloadReuseCfg := reuseCfg
downloadCfg := *cfg // make a copy
downloadCfg.Host = downloadHost
downloadCfg.Path = lo.FromPtrOr(ds.Path, v.option.XHTTPOpts.Path)
downloadCfg.Headers = lo.FromPtrOr(ds.Headers, v.option.XHTTPOpts.Headers)
if ds.ReuseSettings != nil {
downloadReuseCfg = &xhttp.ReuseConfig{
downloadCfg.ReuseConfig = &xhttp.ReuseConfig{
MaxConcurrency: ds.ReuseSettings.MaxConcurrency,
MaxConnections: ds.ReuseSettings.MaxConnections,
CMaxReuseTimes: ds.ReuseSettings.CMaxReuseTimes,
@@ -702,30 +689,7 @@ func NewVless(option VlessOption) (*Vless, error) {
downloadHKeepAlivePeriod = time.Duration(ds.ReuseSettings.HKeepAlivePeriod) * time.Second
}
cfg.DownloadConfig = &xhttp.Config{
Host: downloadHost,
Path: lo.FromPtrOr(ds.Path, v.option.XHTTPOpts.Path),
Mode: v.option.XHTTPOpts.Mode,
Headers: lo.FromPtrOr(ds.Headers, v.option.XHTTPOpts.Headers),
NoGRPCHeader: lo.FromPtrOr(ds.NoGRPCHeader, v.option.XHTTPOpts.NoGRPCHeader),
XPaddingBytes: lo.FromPtrOr(ds.XPaddingBytes, v.option.XHTTPOpts.XPaddingBytes),
XPaddingObfsMode: lo.FromPtrOr(ds.XPaddingObfsMode, v.option.XHTTPOpts.XPaddingObfsMode),
XPaddingKey: lo.FromPtrOr(ds.XPaddingKey, v.option.XHTTPOpts.XPaddingKey),
XPaddingHeader: lo.FromPtrOr(ds.XPaddingHeader, v.option.XHTTPOpts.XPaddingHeader),
XPaddingPlacement: lo.FromPtrOr(ds.XPaddingPlacement, v.option.XHTTPOpts.XPaddingPlacement),
XPaddingMethod: lo.FromPtrOr(ds.XPaddingMethod, v.option.XHTTPOpts.XPaddingMethod),
UplinkHTTPMethod: lo.FromPtrOr(ds.UplinkHTTPMethod, v.option.XHTTPOpts.UplinkHTTPMethod),
SessionPlacement: lo.FromPtrOr(ds.SessionPlacement, v.option.XHTTPOpts.SessionPlacement),
SessionKey: lo.FromPtrOr(ds.SessionKey, v.option.XHTTPOpts.SessionKey),
SeqPlacement: lo.FromPtrOr(ds.SeqPlacement, v.option.XHTTPOpts.SeqPlacement),
SeqKey: lo.FromPtrOr(ds.SeqKey, v.option.XHTTPOpts.SeqKey),
UplinkDataPlacement: lo.FromPtrOr(ds.UplinkDataPlacement, v.option.XHTTPOpts.UplinkDataPlacement),
UplinkDataKey: lo.FromPtrOr(ds.UplinkDataKey, v.option.XHTTPOpts.UplinkDataKey),
UplinkChunkSize: lo.FromPtrOr(ds.UplinkChunkSize, v.option.XHTTPOpts.UplinkChunkSize),
ScMaxEachPostBytes: lo.FromPtrOr(ds.ScMaxEachPostBytes, v.option.XHTTPOpts.ScMaxEachPostBytes),
ScMinPostsIntervalMs: lo.FromPtrOr(ds.ScMinPostsIntervalMs, v.option.XHTTPOpts.ScMinPostsIntervalMs),
ReuseConfig: downloadReuseCfg,
}
cfg.DownloadConfig = &downloadCfg
makeDownloadTransport = func() http.RoundTripper {
return xhttp.NewTransport(
+20 -71
View File
@@ -199,74 +199,74 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
if v, ok := extra["xPaddingBytes"].(string); ok && v != "" {
opts["x-padding-bytes"] = v
}
if v, ok := extra["xPaddingObfsMode"].(bool); ok {
opts["x-padding-obfs-mode"] = v
}
if v, ok := extra["xPaddingKey"].(string); ok && v != "" {
opts["x-padding-key"] = v
}
if v, ok := extra["xPaddingHeader"].(string); ok && v != "" {
opts["x-padding-header"] = v
}
if v, ok := extra["xPaddingPlacement"].(string); ok && v != "" {
opts["x-padding-placement"] = v
}
if v, ok := extra["xPaddingMethod"].(string); ok && v != "" {
opts["x-padding-method"] = v
}
if v, ok := extra["uplinkHttpMethod"].(string); ok && v != "" {
opts["uplink-http-method"] = v
}
if v, ok := extra["sessionPlacement"].(string); ok && v != "" {
opts["session-placement"] = v
}
if v, ok := extra["sessionKey"].(string); ok && v != "" {
opts["session-key"] = v
}
if v, ok := extra["seqPlacement"].(string); ok && v != "" {
opts["seq-placement"] = v
}
if v, ok := extra["seqKey"].(string); ok && v != "" {
opts["seq-key"] = v
}
if v, ok := extra["uplinkDataPlacement"].(string); ok && v != "" {
opts["uplink-data-placement"] = v
}
if v, ok := extra["uplinkDataKey"].(string); ok && v != "" {
opts["uplink-data-key"] = v
}
if v, ok := extra["uplinkChunkSize"].(float64); ok {
opts["uplink-chunk-size"] = int(v)
}
if v, ok := extra["scMaxEachPostBytes"].(float64); ok {
opts["sc-max-each-post-bytes"] = int(v)
}
if v, ok := extra["scMinPostsIntervalMs"].(float64); ok {
opts["sc-min-posts-interval-ms"] = int(v)
}
// xmux in root extra → reuse-settings
if xmuxAny, ok := extra["xmux"].(map[string]any); ok && len(xmuxAny) > 0 {
if reuse := xmuxToReuse(xmuxAny); len(reuse) > 0 {
opts["reuse-settings"] = reuse
}
}
if dsAny, ok := extra["downloadSettings"].(map[string]any); ok {
ds := make(map[string]any)
@@ -285,7 +285,7 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
if sec == "tls" || sec == "reality" {
ds["tls"] = true
if tlsAny, ok := dsAny["tlsSettings"].(map[string]any); ok {
if sn, ok := tlsAny["serverName"].(string); ok && sn != "" {
ds["servername"] = sn
@@ -308,7 +308,7 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
ds["skip-cert-verify"] = true
}
}
if sec == "reality" {
if realityAny, ok := dsAny["realitySettings"].(map[string]any); ok {
realityOpts := make(map[string]any)
@@ -335,57 +335,6 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
if headers, ok := xhttpAny["headers"].(map[string]any); ok && len(headers) > 0 {
ds["headers"] = headers
}
if v, ok := xhttpAny["noGRPCHeader"].(bool); ok && v {
ds["no-grpc-header"] = true
}
if v, ok := xhttpAny["xPaddingBytes"].(string); ok && v != "" {
ds["x-padding-bytes"] = v
}
if v, ok := xhttpAny["xPaddingObfsMode"].(bool); ok {
ds["x-padding-obfs-mode"] = v
}
if v, ok := xhttpAny["xPaddingKey"].(string); ok && v != "" {
ds["x-padding-key"] = v
}
if v, ok := xhttpAny["xPaddingHeader"].(string); ok && v != "" {
ds["x-padding-header"] = v
}
if v, ok := xhttpAny["xPaddingPlacement"].(string); ok && v != "" {
ds["x-padding-placement"] = v
}
if v, ok := xhttpAny["xPaddingMethod"].(string); ok && v != "" {
ds["x-padding-method"] = v
}
if v, ok := xhttpAny["uplinkHttpMethod"].(string); ok && v != "" {
ds["uplink-http-method"] = v
}
if v, ok := xhttpAny["sessionPlacement"].(string); ok && v != "" {
ds["session-placement"] = v
}
if v, ok := xhttpAny["sessionKey"].(string); ok && v != "" {
ds["session-key"] = v
}
if v, ok := xhttpAny["seqPlacement"].(string); ok && v != "" {
ds["seq-placement"] = v
}
if v, ok := xhttpAny["seqKey"].(string); ok && v != "" {
ds["seq-key"] = v
}
if v, ok := xhttpAny["uplinkDataPlacement"].(string); ok && v != "" {
ds["uplink-data-placement"] = v
}
if v, ok := xhttpAny["uplinkDataKey"].(string); ok && v != "" {
ds["uplink-data-key"] = v
}
if v, ok := xhttpAny["uplinkChunkSize"].(float64); ok {
ds["uplink-chunk-size"] = int(v)
}
if v, ok := xhttpAny["scMaxEachPostBytes"].(float64); ok {
ds["sc-max-each-post-bytes"] = int(v)
}
if v, ok := xhttpAny["scMinPostsIntervalMs"].(float64); ok {
ds["sc-min-posts-interval-ms"] = int(v)
}
// xmux inside downloadSettings.xhttpSettings.extra → download-settings.reuse-settings
if dsExtraAny, ok := xhttpAny["extra"].(map[string]any); ok {
@@ -401,4 +350,4 @@ func parseXHTTPExtra(extra map[string]any, opts map[string]any) {
opts["download-settings"] = ds
}
}
}
}
-17
View File
@@ -853,23 +853,6 @@ proxies: # socks5
# host: xxx.com
# headers:
# X-Forwarded-For: ""
# no-grpc-header: false
# x-padding-bytes: "100-1000"
# x-padding-obfs-mode: false
# x-padding-key: x_padding
# x-padding-header: Referer
# x-padding-placement: queryInHeader # Available: queryInHeader, cookie, header, query
# x-padding-method: repeat-x # Available: repeat-x, tokenish
# uplink-http-method: POST # Available: POST, PUT, PATCH, DELETE
# session-placement: path # Available: path, query, cookie, header
# session-key: ""
# seq-placement: path # Available: path, query, cookie, header
# seq-key: ""
# uplink-data-placement: body # Available: body, cookie, header
# uplink-data-key: ""
# uplink-chunk-size: 0 # only applicable when uplink-data-placement is not body
# sc-max-each-post-bytes: 1000000
# sc-min-posts-interval-ms: 30
# reuse-settings: # aka XMUX
# max-concurrency: "16-32"
# max-connections: "0"