func CreateOutboundHandler(name string, space app.Space, config interface{}, meta *proxy.OutboundHandlerMeta) (proxy.OutboundHandler, error) { creator, found := outboundFactories[name] if !found { return nil, errors.New("Proxy|Registry: Unknown outbound name: " + name) } if meta.StreamSettings == nil { meta.StreamSettings = &internet.StreamConfig{ Network: creator.StreamCapability().Get(0), } } else { if !creator.StreamCapability().HasNetwork(meta.StreamSettings.Network) { return nil, errors.New("Proxy|Registry: Invalid network: " + meta.StreamSettings.Network.String()) } } return creator.Create(space, config, meta) }
func CreateOutboundHandler(name string, space app.Space, rawConfig []byte, meta *proxy.OutboundHandlerMeta) (proxy.OutboundHandler, error) { creator, found := outboundFactories[name] if !found { return nil, common.ErrObjectNotFound } if meta.StreamSettings == nil { meta.StreamSettings = &internet.StreamSettings{ Type: creator.StreamCapability(), } } else { meta.StreamSettings.Type &= creator.StreamCapability() } if len(rawConfig) > 0 { proxyConfig, err := CreateOutboundConfig(name, rawConfig) if err != nil { return nil, err } return creator.Create(space, proxyConfig, meta) } return creator.Create(space, nil, meta) }