From 98ba3a13f081eba3d5f9fbb00837f0e9832bfaaa Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sat, 4 Sep 2021 17:19:18 +0100 Subject: [PATCH] added protobuf config builder for stream --- infra/conf/v5cfg/stream.go | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 infra/conf/v5cfg/stream.go diff --git a/infra/conf/v5cfg/stream.go b/infra/conf/v5cfg/stream.go new file mode 100644 index 000000000..d907a6843 --- /dev/null +++ b/infra/conf/v5cfg/stream.go @@ -0,0 +1,44 @@ +package v5cfg + +import ( + "context" + "github.com/golang/protobuf/proto" + "github.com/v2fly/v2ray-core/v4/common/serial" + "github.com/v2fly/v2ray-core/v4/transport/internet" +) + +func (s StreamConfig) BuildV5(ctx context.Context) (proto.Message, error) { + config := &internet.StreamConfig{} + + if s.Transport == "" { + s.Transport = "tcp" + } + if s.Security == "" { + s.Security = "none" + } + + transportConfigPack, err := loadHeterogeneousConfigFromRawJson("transport", s.Transport, s.TransportSettings) + if err != nil { + return nil, newError("unable to load transport config").Base(err) + } + + config.ProtocolName = s.Transport + config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{ + ProtocolName: s.Transport, + Settings: serial.ToTypedMessage(transportConfigPack), + }) + + securityConfigPack, err := loadHeterogeneousConfigFromRawJson("security", s.Security, s.SecuritySettings) + if err != nil { + return nil, newError("unable to load security config").Base(err) + } + config.SecurityType = s.Security + config.SecuritySettings = append(config.SecuritySettings, serial.ToTypedMessage(securityConfigPack)) + + config.SocketSettings, err = s.SocketSettings.Build() + if err != nil { + return nil, newError("unable to build socket config").Base(err) + } + + return config, nil +}