Parcourir la source

outbound config

Darien Raymond il y a 9 ans
Parent
commit
39939b00f0
3 fichiers modifiés avec 22 ajouts et 3 suppressions
  1. 12 1
      config.go
  2. 5 1
      inbound_detour_dynamic.go
  3. 5 1
      v2ray.go

+ 12 - 1
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()
 }

+ 5 - 1
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,

+ 5 - 1
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,