Fix: check target is valid in rules (#210)
This commit is contained in:
parent
c7da6fb109
commit
697b82b9fe
1 changed files with 6 additions and 2 deletions
|
@ -157,7 +157,7 @@ func Parse(path string) (*Config, error) {
|
|||
}
|
||||
config.Proxies = proxies
|
||||
|
||||
rules, err := parseRules(rawCfg)
|
||||
rules, err := parseRules(rawCfg, proxies)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ func parseProxies(cfg *rawConfig) (map[string]C.Proxy, error) {
|
|||
return proxies, nil
|
||||
}
|
||||
|
||||
func parseRules(cfg *rawConfig) ([]C.Rule, error) {
|
||||
func parseRules(cfg *rawConfig, proxies map[string]C.Proxy) ([]C.Rule, error) {
|
||||
rules := []C.Rule{}
|
||||
|
||||
rulesConfig := cfg.Rule
|
||||
|
@ -376,6 +376,10 @@ func parseRules(cfg *rawConfig) ([]C.Rule, error) {
|
|||
return nil, fmt.Errorf("Rules[%d] [%s] error: format invalid", idx, line)
|
||||
}
|
||||
|
||||
if _, ok := proxies[target]; !ok {
|
||||
return nil, fmt.Errorf("Rules[%d] [%s] error: proxy [%s] not found", idx, line, target)
|
||||
}
|
||||
|
||||
rule = trimArr(rule)
|
||||
var parsed C.Rule
|
||||
switch rule[0] {
|
||||
|
|
Loading…
Reference in a new issue