1
0

reverse.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package conf
  2. import (
  3. "github.com/golang/protobuf/proto"
  4. "github.com/xtls/xray-core/app/reverse"
  5. )
  6. type BridgeConfig struct {
  7. Tag string `json:"tag"`
  8. Domain string `json:"domain"`
  9. }
  10. func (c *BridgeConfig) Build() (*reverse.BridgeConfig, error) {
  11. return &reverse.BridgeConfig{
  12. Tag: c.Tag,
  13. Domain: c.Domain,
  14. }, nil
  15. }
  16. type PortalConfig struct {
  17. Tag string `json:"tag"`
  18. Domain string `json:"domain"`
  19. }
  20. func (c *PortalConfig) Build() (*reverse.PortalConfig, error) {
  21. return &reverse.PortalConfig{
  22. Tag: c.Tag,
  23. Domain: c.Domain,
  24. }, nil
  25. }
  26. type ReverseConfig struct {
  27. Bridges []BridgeConfig `json:"bridges"`
  28. Portals []PortalConfig `json:"portals"`
  29. }
  30. func (c *ReverseConfig) Build() (proto.Message, error) {
  31. config := &reverse.Config{}
  32. for _, bconfig := range c.Bridges {
  33. b, err := bconfig.Build()
  34. if err != nil {
  35. return nil, err
  36. }
  37. config.BridgeConfig = append(config.BridgeConfig, b)
  38. }
  39. for _, pconfig := range c.Portals {
  40. p, err := pconfig.Build()
  41. if err != nil {
  42. return nil, err
  43. }
  44. config.PortalConfig = append(config.PortalConfig, p)
  45. }
  46. return config, nil
  47. }