| 1234567891011121314151617181920212223242526272829303132333435 |
- package conf
- import (
- "github.com/xtls/xray-core/common/errors"
- "github.com/xtls/xray-core/common/net"
- "github.com/xtls/xray-core/proxy/dokodemo"
- "google.golang.org/protobuf/proto"
- )
- type DokodemoConfig struct {
- Address *Address `json:"address"`
- Port uint16 `json:"port"`
- PortMap map[string]string `json:"portMap"`
- Network *NetworkList `json:"network"`
- FollowRedirect bool `json:"followRedirect"`
- UserLevel uint32 `json:"userLevel"`
- }
- func (v *DokodemoConfig) Build() (proto.Message, error) {
- config := new(dokodemo.Config)
- if v.Address != nil {
- config.Address = v.Address.Build()
- }
- config.Port = uint32(v.Port)
- config.PortMap = v.PortMap
- for _, v := range config.PortMap {
- if _, _, err := net.SplitHostPort(v); err != nil {
- return nil, errors.New("invalid portMap: ", v).Base(err)
- }
- }
- config.Networks = v.Network.Build()
- config.FollowRedirect = v.FollowRedirect
- config.UserLevel = v.UserLevel
- return config, nil
- }
|