Selaa lähdekoodia

config for on demand inbound detour

v2ray 9 vuotta sitten
vanhempi
commit
71c70416f5
3 muutettua tiedostoa jossa 55 lisäystä ja 6 poistoa
  1. 12 0
      shell/point/config.go
  2. 23 4
      shell/point/json/inbound_detour.go
  3. 20 2
      shell/point/testing/mocks/config.go

+ 12 - 0
shell/point/config.go

@@ -23,10 +23,22 @@ type DnsConfig interface {
 	Settings() dns.CacheConfig
 }
 
+const (
+	AllocationStrategyAlways   = "always"
+	AllocationStrategyRandom   = "random"
+	AllocationStrategyExternal = "external"
+)
+
+type InboundDetourAllocationConfig interface {
+	Strategy() string
+	Concurrency() int
+}
+
 type InboundDetourConfig interface {
 	Protocol() string
 	PortRange() v2net.PortRange
 	Tag() string
+	Allocation() InboundDetourAllocationConfig
 	Settings() interface{}
 }
 

+ 23 - 4
shell/point/json/inbound_detour.go

@@ -6,13 +6,32 @@ import (
 	v2net "github.com/v2ray/v2ray-core/common/net"
 	v2netjson "github.com/v2ray/v2ray-core/common/net/json"
 	proxyconfig "github.com/v2ray/v2ray-core/proxy/common/config"
+	"github.com/v2ray/v2ray-core/shell/point"
 )
 
+type InboundDetourAllocationConfig struct {
+	StrategyValue    string `json:"strategy"`
+	ConcurrencyValue int    `json:"concurrency"`
+}
+
+func (this *InboundDetourAllocationConfig) Strategy() string {
+	return this.StrategyValue
+}
+
+func (this *InboundDetourAllocationConfig) Concurrency() int {
+	return this.ConcurrencyValue
+}
+
 type InboundDetourConfig struct {
-	ProtocolValue  string               `json:"protocol"`
-	PortRangeValue *v2netjson.PortRange `json:"port"`
-	SettingsValue  json.RawMessage      `json:"settings"`
-	TagValue       string               `json:"tag"`
+	ProtocolValue   string                         `json:"protocol"`
+	PortRangeValue  *v2netjson.PortRange           `json:"port"`
+	SettingsValue   json.RawMessage                `json:"settings"`
+	TagValue        string                         `json:"tag"`
+	AllocationValue *InboundDetourAllocationConfig `json:"allocate"`
+}
+
+func (this *InboundDetourConfig) Allocation() point.InboundDetourAllocationConfig {
+	return this.AllocationValue
 }
 
 func (this *InboundDetourConfig) Protocol() string {

+ 20 - 2
shell/point/testing/mocks/config.go

@@ -52,10 +52,28 @@ func (this *PortRange) To() v2net.Port {
 	return this.ToValue
 }
 
+type InboundDetourAllocationConfig struct {
+	StrategyValue    string
+	ConcurrencyValue int
+}
+
+func (this *InboundDetourAllocationConfig) Strategy() string {
+	return this.StrategyValue
+}
+
+func (this *InboundDetourAllocationConfig) Concurrency() int {
+	return this.ConcurrencyValue
+}
+
 type InboundDetourConfig struct {
 	*ConnectionConfig
-	PortRangeValue *PortRange
-	TagValue       string
+	PortRangeValue     *PortRange
+	TagValue           string
+	AllocationStrategy *InboundDetourAllocationConfig
+}
+
+func (this *InboundDetourConfig) Allocation() point.InboundDetourAllocationConfig {
+	return this.AllocationStrategy
 }
 
 func (this *InboundDetourConfig) Tag() string {