mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2026-04-22 16:17:16 +08:00
chore: remove unused xhttp options in download-settings
This commit is contained in:
+11
-47
@@ -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
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user