func (v *OutboundDetourConfig) Build() (*core.OutboundConnectionConfig, error) { config := new(core.OutboundConnectionConfig) config.Tag = v.Tag if v.SendThrough != nil { address := v.SendThrough if address.Family().IsDomain() { return nil, errors.New("Point: Unable to send through: " + address.String()) } config.SendThrough = address.Build() } if v.StreamSetting != nil { ss, err := v.StreamSetting.Build() if err != nil { return nil, err } config.StreamSettings = ss } rawConfig, err := outboundConfigLoader.LoadWithID(v.Settings, v.Protocol) if err != nil { return nil, errors.Base(err).Message("Failed to parse to outbound detour config.") } ts, err := rawConfig.(Buildable).Build() if err != nil { return nil, err } if v.ProxySettings != nil { ps, err := v.ProxySettings.Build() if err != nil { return nil, errors.Base(err).Message("Invalid outbound detour proxy settings.") } config.ProxySettings = ps } config.Settings = ts return config, nil }
func (this *OutboundConnectionConfig) Build() (*core.OutboundConnectionConfig, error) { config := new(core.OutboundConnectionConfig) rawConfig, err := outboundConfigLoader.LoadWithID(this.Settings, this.Protocol) if err != nil { return nil, errors.New("Failed to parse outbound config: " + err.Error()) } ts, err := rawConfig.(Buildable).Build() if err != nil { return nil, err } config.Settings = ts if this.SendThrough != nil { address := this.SendThrough if address.Family().IsDomain() { return nil, errors.New("Point: Unable to send through: " + address.String()) } config.SendThrough = address.Build() } if this.StreamSetting != nil { ss, err := this.StreamSetting.Build() if err != nil { return nil, err } config.StreamSettings = ss } if this.ProxySettings != nil { ps, err := this.ProxySettings.Build() if err != nil { return nil, errors.New("Outbound: invalid proxy settings: " + err.Error()) } config.ProxySettings = ps } if len(this.Tag) > 0 { config.Tag = this.Tag } return config, nil }