V2Ray 10 anni fa
parent
commit
d0ae47e2ce
3 ha cambiato i file con 56 aggiunte e 0 eliminazioni
  1. 24 0
      app/router/router.go
  2. 25 0
      app/router/wildcard_router/router.go
  3. 7 0
      config/config.go

+ 24 - 0
app/router/router.go

@@ -0,0 +1,24 @@
+package router
+
+import (
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	"github.com/v2ray/v2ray-core/config"
+)
+
+type Router interface {
+	TakeDetour(v2net.Packet) (config.ConnectionTag, error)
+}
+
+type RouterFactory interface {
+	Create(rawConfig interface{}) (Router, error)
+}
+
+var (
+	routerCache = make(map[string]RouterFactory)
+)
+
+func RegisterRouter(name string, factory RouterFactory) error {
+	// TODO: check name
+	routerCache[name] = factory
+	return nil
+}

+ 25 - 0
app/router/wildcard_router/router.go

@@ -0,0 +1,25 @@
+package wildcard_router
+
+import (
+	"github.com/v2ray/v2ray-core/app/router"
+	v2net "github.com/v2ray/v2ray-core/common/net"
+	"github.com/v2ray/v2ray-core/config"
+)
+
+type WildcardRouter struct {
+}
+
+func (router *WildcardRouter) TakeDetour(packet v2net.Packet) (config.ConnectionTag, error) {
+	return "", nil
+}
+
+type WildcardRouterFactory struct {
+}
+
+func (factory *WildcardRouterFactory) Create(rawConfig interface{}) (router.Router, error) {
+	return &WildcardRouter{}, nil
+}
+
+func init() {
+	router.RegisterRouter("wildcard", &WildcardRouterFactory{})
+}

+ 7 - 0
config/config.go

@@ -7,6 +7,13 @@ const (
 	TypeOutbound = Type("outbound")
 )
 
+type RouterConfig interface {
+	Strategy() string
+	Settings() interface{}
+}
+
+type ConnectionTag string
+
 type ConnectionConfig interface {
 	Protocol() string
 	Settings(configType Type) interface{}