|
|
@@ -34,6 +34,7 @@ func parseFieldRule(msg json.RawMessage) (*Rule, error) {
|
|
|
conds := NewConditionChan()
|
|
|
|
|
|
if rawFieldRule.Domain != nil && rawFieldRule.Domain.Len() > 0 {
|
|
|
+ anyCond := NewAnyCondition()
|
|
|
for _, rawDomain := range *(rawFieldRule.Domain) {
|
|
|
var matcher Condition
|
|
|
if strings.HasPrefix(rawDomain.String(), "regexp:") {
|
|
|
@@ -45,19 +46,22 @@ func parseFieldRule(msg json.RawMessage) (*Rule, error) {
|
|
|
} else {
|
|
|
matcher = NewPlainDomainMatcher(rawDomain.String())
|
|
|
}
|
|
|
- conds.Add(matcher)
|
|
|
+ anyCond.Add(matcher)
|
|
|
}
|
|
|
+ conds.Add(anyCond)
|
|
|
}
|
|
|
|
|
|
if rawFieldRule.IP != nil && rawFieldRule.IP.Len() > 0 {
|
|
|
+ anyCond := NewAnyCondition()
|
|
|
for _, ipStr := range *(rawFieldRule.IP) {
|
|
|
cidrMatcher, err := NewCIDRMatcher(ipStr.String())
|
|
|
if err != nil {
|
|
|
log.Error("Router: Invalid IP range in router rule: ", err)
|
|
|
return nil, err
|
|
|
}
|
|
|
- conds.Add(cidrMatcher)
|
|
|
+ anyCond.Add(cidrMatcher)
|
|
|
}
|
|
|
+ conds.Add(anyCond)
|
|
|
}
|
|
|
if rawFieldRule.Port != nil {
|
|
|
conds.Add(NewPortMatcher(*rawFieldRule.Port))
|
|
|
@@ -74,7 +78,7 @@ func parseFieldRule(msg json.RawMessage) (*Rule, error) {
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
|
-func parseRule(msg json.RawMessage) *Rule {
|
|
|
+func ParseRule(msg json.RawMessage) *Rule {
|
|
|
rawRule := new(JsonRule)
|
|
|
err := json.Unmarshal(msg, rawRule)
|
|
|
if err != nil {
|
|
|
@@ -121,7 +125,7 @@ func init() {
|
|
|
}
|
|
|
config := NewRouterRuleConfig()
|
|
|
for _, rawRule := range jsonConfig.RuleList {
|
|
|
- rule := parseRule(rawRule)
|
|
|
+ rule := ParseRule(rawRule)
|
|
|
config.Add(rule)
|
|
|
}
|
|
|
return config, nil
|