mirror of https://github.com/XTLS/Xray-core
Browse Source
https://github.com/XTLS/Xray-core/pull/3751#issuecomment-2329564039 --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>pull/3762/head
mmmray
3 months ago
committed by
yuhan6665
4 changed files with 8 additions and 337 deletions
@ -1,106 +0,0 @@
|
||||
package conf |
||||
|
||||
import ( |
||||
"github.com/xtls/xray-core/common/errors" |
||||
"github.com/xtls/xray-core/common/serial" |
||||
"github.com/xtls/xray-core/transport/global" |
||||
"github.com/xtls/xray-core/transport/internet" |
||||
) |
||||
|
||||
type TransportConfig struct { |
||||
TCPConfig *TCPConfig `json:"tcpSettings"` |
||||
KCPConfig *KCPConfig `json:"kcpSettings"` |
||||
WSConfig *WebSocketConfig `json:"wsSettings"` |
||||
HTTPConfig *HTTPConfig `json:"httpSettings"` |
||||
GRPCConfig *GRPCConfig `json:"grpcSettings"` |
||||
GUNConfig *GRPCConfig `json:"gunSettings"` |
||||
HTTPUPGRADEConfig *HttpUpgradeConfig `json:"httpupgradeSettings"` |
||||
SplitHTTPConfig *SplitHTTPConfig `json:"splithttpSettings"` |
||||
} |
||||
|
||||
// Build implements Buildable.
|
||||
func (c *TransportConfig) Build() (*global.Config, error) { |
||||
config := new(global.Config) |
||||
|
||||
if c.TCPConfig != nil { |
||||
ts, err := c.TCPConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("failed to build TCP config").Base(err).AtError() |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "tcp", |
||||
Settings: serial.ToTypedMessage(ts), |
||||
}) |
||||
} |
||||
|
||||
if c.KCPConfig != nil { |
||||
ts, err := c.KCPConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("failed to build mKCP config").Base(err).AtError() |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "mkcp", |
||||
Settings: serial.ToTypedMessage(ts), |
||||
}) |
||||
} |
||||
|
||||
if c.WSConfig != nil { |
||||
ts, err := c.WSConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("failed to build WebSocket config").Base(err) |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "websocket", |
||||
Settings: serial.ToTypedMessage(ts), |
||||
}) |
||||
} |
||||
|
||||
if c.HTTPConfig != nil { |
||||
ts, err := c.HTTPConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("Failed to build HTTP config.").Base(err) |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "http", |
||||
Settings: serial.ToTypedMessage(ts), |
||||
}) |
||||
} |
||||
|
||||
if c.GRPCConfig == nil { |
||||
c.GRPCConfig = c.GUNConfig |
||||
} |
||||
if c.GRPCConfig != nil { |
||||
gs, err := c.GRPCConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("Failed to build gRPC config.").Base(err) |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "grpc", |
||||
Settings: serial.ToTypedMessage(gs), |
||||
}) |
||||
} |
||||
|
||||
if c.HTTPUPGRADEConfig != nil { |
||||
hs, err := c.HTTPUPGRADEConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("failed to build HttpUpgrade config").Base(err) |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "httpupgrade", |
||||
Settings: serial.ToTypedMessage(hs), |
||||
}) |
||||
} |
||||
|
||||
if c.SplitHTTPConfig != nil { |
||||
shs, err := c.SplitHTTPConfig.Build() |
||||
if err != nil { |
||||
return nil, errors.New("failed to build SplitHTTP config").Base(err) |
||||
} |
||||
config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ |
||||
ProtocolName: "splithttp", |
||||
Settings: serial.ToTypedMessage(shs), |
||||
}) |
||||
} |
||||
|
||||
return config, nil |
||||
} |
Loading…
Reference in new issue