transport.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package conf
  2. import (
  3. "v2ray.com/core/common/errors"
  4. "v2ray.com/core/transport"
  5. "v2ray.com/core/transport/internet"
  6. )
  7. type TransportConfig struct {
  8. TCPConfig *TCPConfig `json:"tcpSettings"`
  9. KCPConfig *KCPConfig `json:"kcpSettings"`
  10. WSConfig *WebSocketConfig `json:"wsSettings"`
  11. }
  12. func (v *TransportConfig) Build() (*transport.Config, error) {
  13. config := new(transport.Config)
  14. if v.TCPConfig != nil {
  15. ts, err := v.TCPConfig.Build()
  16. if err != nil {
  17. return nil, errors.Base(err).Message("Config: Failed to build TCP config.")
  18. }
  19. config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{
  20. Protocol: internet.TransportProtocol_TCP,
  21. Settings: ts,
  22. })
  23. }
  24. if v.KCPConfig != nil {
  25. ts, err := v.KCPConfig.Build()
  26. if err != nil {
  27. return nil, errors.Base(err).Message("Config: Failed to build mKCP config.")
  28. }
  29. config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{
  30. Protocol: internet.TransportProtocol_MKCP,
  31. Settings: ts,
  32. })
  33. }
  34. if v.WSConfig != nil {
  35. ts, err := v.WSConfig.Build()
  36. if err != nil {
  37. return nil, errors.Base(err).Message("Config: Failed to build WebSocket config.")
  38. }
  39. config.TransportSettings = append(config.TransportSettings, &internet.TransportConfig{
  40. Protocol: internet.TransportProtocol_WebSocket,
  41. Settings: ts,
  42. })
  43. }
  44. return config, nil
  45. }