1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-10 09:50:43 +00:00

allow the loading of router strategy

This commit is contained in:
Shelikhoo 2021-04-08 21:08:20 +01:00
parent 459a914ab7
commit 017a11cfd5
No known key found for this signature in database
GPG Key ID: C4D5E79D22B25316
2 changed files with 26 additions and 2 deletions

View File

@ -17,9 +17,16 @@ type RouterRulesConfig struct {
DomainStrategy string `json:"domainStrategy"`
}
// StrategyConfig represents a strategy config
type StrategyConfig struct {
Type string `json:"type"`
Settings *json.RawMessage `json:"settings"`
}
type BalancingRule struct {
Tag string `json:"tag"`
Selectors StringList `json:"selector"`
Tag string `json:"tag"`
Selectors StringList `json:"selector"`
Strategy StrategyConfig `json:"strategy"`
}
func (r *BalancingRule) Build() (*router.BalancingRule, error) {
@ -30,9 +37,20 @@ func (r *BalancingRule) Build() (*router.BalancingRule, error) {
return nil, newError("empty selector list")
}
var strategy string
switch strings.ToLower(r.Strategy.Type) {
case strategyRandom, "":
strategy = strategyRandom
case strategyLeastPing:
strategy = "leastPing"
default:
return nil, newError("unknown balancing strategy: " + r.Strategy.Type)
}
return &router.BalancingRule{
Tag: r.Tag,
OutboundSelector: []string(r.Selectors),
Strategy: strategy,
}, nil
}

View File

@ -0,0 +1,6 @@
package conf
const (
strategyRandom string = "random"
strategyLeastPing string = "leastping"
)