From 39939b00f055abc4118099056f43a5735be24233 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Sun, 16 Oct 2016 00:46:08 +0200 Subject: [PATCH] outbound config --- config.go | 13 ++++++++++++- inbound_detour_dynamic.go | 6 +++++- v2ray.go | 6 +++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/config.go b/config.go index 62d9be5bb..3d52c2eba 100644 --- a/config.go +++ b/config.go @@ -1,6 +1,7 @@ package core import ( + "v2ray.com/core/common" "v2ray.com/core/proxy/registry" ) @@ -26,5 +27,15 @@ func (this *InboundConnectionConfig) GetAllocationStrategyValue() *AllocationStr } func (this *InboundConnectionConfig) GetTypedSettings() (interface{}, error) { - return registry.MarshalInboundConfig(this.Protocol, this.Settings) + if this.GetSettings() == nil { + return nil, common.ErrBadConfiguration + } + return this.GetSettings().GetInstance() +} + +func (this *OutboundConnectionConfig) GetTypedSettings() (interface{}, error) { + if this.GetSettings() == nil { + return nil, common.ErrBadConfiguration + } + return this.GetSettings().GetInstance() } diff --git a/inbound_detour_dynamic.go b/inbound_detour_dynamic.go index 3dd289e41..8994d5606 100644 --- a/inbound_detour_dynamic.go +++ b/inbound_detour_dynamic.go @@ -32,7 +32,11 @@ func NewInboundDetourHandlerDynamic(space app.Space, config *InboundConnectionCo handler.ichs = make([]proxy.InboundHandler, config.GetAllocationStrategyValue().Concurrency.GetValue()) // To test configuration - ich, err := proxyregistry.CreateInboundHandler(config.Protocol, space, config.Settings, &proxy.InboundHandlerMeta{ + ichConfig, err := config.GetTypedSettings() + if err != nil { + return nil, err + } + ich, err := proxyregistry.CreateInboundHandler(config.Protocol, space, ichConfig, &proxy.InboundHandlerMeta{ Address: config.ListenOn.AsAddress(), Port: 0, Tag: config.Tag, diff --git a/v2ray.go b/v2ray.go index 7c846e0de..0ce934df1 100644 --- a/v2ray.go +++ b/v2ray.go @@ -92,8 +92,12 @@ func NewPoint(pConfig *Config) (*Point, error) { vpoint.outboundHandlers = make([]proxy.OutboundHandler, 8) vpoint.taggedOutboundHandlers = make(map[string]proxy.OutboundHandler) for idx, outbound := range pConfig.Outbound { + outboundSettings, err := outbound.GetTypedSettings() + if err != nil { + return nil, err + } outboundHandler, err := proxyregistry.CreateOutboundHandler( - outbound.Protocol, vpoint.space, outbound.Settings, &proxy.OutboundHandlerMeta{ + outbound.Protocol, vpoint.space, outboundSettings, &proxy.OutboundHandlerMeta{ Tag: outbound.Tag, Address: outbound.SendThrough.AsAddress(), StreamSettings: outbound.StreamSettings,