mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
56 lines
1.1 KiB
package conf |
|
|
|
import ( |
|
"github.com/golang/protobuf/proto" |
|
"github.com/xtls/xray-core/v1/app/reverse" |
|
) |
|
|
|
type BridgeConfig struct { |
|
Tag string `json:"tag"` |
|
Domain string `json:"domain"` |
|
} |
|
|
|
func (c *BridgeConfig) Build() (*reverse.BridgeConfig, error) { |
|
return &reverse.BridgeConfig{ |
|
Tag: c.Tag, |
|
Domain: c.Domain, |
|
}, nil |
|
} |
|
|
|
type PortalConfig struct { |
|
Tag string `json:"tag"` |
|
Domain string `json:"domain"` |
|
} |
|
|
|
func (c *PortalConfig) Build() (*reverse.PortalConfig, error) { |
|
return &reverse.PortalConfig{ |
|
Tag: c.Tag, |
|
Domain: c.Domain, |
|
}, nil |
|
} |
|
|
|
type ReverseConfig struct { |
|
Bridges []BridgeConfig `json:"bridges"` |
|
Portals []PortalConfig `json:"portals"` |
|
} |
|
|
|
func (c *ReverseConfig) Build() (proto.Message, error) { |
|
config := &reverse.Config{} |
|
for _, bconfig := range c.Bridges { |
|
b, err := bconfig.Build() |
|
if err != nil { |
|
return nil, err |
|
} |
|
config.BridgeConfig = append(config.BridgeConfig, b) |
|
} |
|
|
|
for _, pconfig := range c.Portals { |
|
p, err := pconfig.Build() |
|
if err != nil { |
|
return nil, err |
|
} |
|
config.PortalConfig = append(config.PortalConfig, p) |
|
} |
|
|
|
return config, nil |
|
}
|
|
|