mirror of https://github.com/v2ray/v2ray-core
V2Ray
9 years ago
6 changed files with 50 additions and 30 deletions
@ -0,0 +1,6 @@
|
||||
package config |
||||
|
||||
type RouterConfig interface { |
||||
Strategy() string |
||||
Settings() interface{} |
||||
} |
@ -0,0 +1,25 @@
|
||||
package json |
||||
|
||||
type ConfigObjectCreator func() interface{} |
||||
|
||||
var ( |
||||
configCache map[string]ConfigObjectCreator |
||||
) |
||||
|
||||
func RegisterRouterConfig(strategy string, creator ConfigObjectCreator) error { |
||||
// TODO: check strategy
|
||||
configCache[strategy] = creator |
||||
return nil |
||||
} |
||||
|
||||
func CreateRouterConfig(strategy string) interface{} { |
||||
creator, found := configCache[strategy] |
||||
if !found { |
||||
return nil |
||||
} |
||||
return creator() |
||||
} |
||||
|
||||
func init() { |
||||
configCache = make(map[string]ConfigObjectCreator) |
||||
} |
@ -0,0 +1,18 @@
|
||||
package json |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
) |
||||
|
||||
type RouterConfig struct { |
||||
StrategyValue string `json:"strategy"` |
||||
SettingsValue json.RawMessage `json:"settings"` |
||||
} |
||||
|
||||
func (this *RouterConfig) Strategy() string { |
||||
return this.StrategyValue |
||||
} |
||||
|
||||
func (this *RouterConfig) Settings() interface{} { |
||||
return CreateRouterConfig(this.Strategy()) |
||||
} |
@ -1,25 +0,0 @@
|
||||
package wildcard_router |
||||
|
||||
import ( |
||||
"github.com/v2ray/v2ray-core/app/point/config" |
||||
"github.com/v2ray/v2ray-core/app/router" |
||||
v2net "github.com/v2ray/v2ray-core/common/net" |
||||
) |
||||
|
||||
type WildcardRouter struct { |
||||
} |
||||
|
||||
func (router *WildcardRouter) TakeDetour(packet v2net.Packet) (config.DetourTag, error) { |
||||
return "", nil |
||||
} |
||||
|
||||
type WildcardRouterFactory struct { |
||||
} |
||||
|
||||
func (factory *WildcardRouterFactory) Create(rawConfig interface{}) (router.Router, error) { |
||||
return &WildcardRouter{}, nil |
||||
} |
||||
|
||||
func init() { |
||||
router.RegisterRouter("wildcard", &WildcardRouterFactory{}) |
||||
} |
Loading…
Reference in new issue