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