Browse Source

Fix: build routing condition for geo domain

Huang-Huang Bao 3 years ago
parent
commit
5d3915c751
2 changed files with 13 additions and 1 deletions
  1. 12 0
      app/router/config.go
  2. 1 1
      app/router/router.go

+ 12 - 0
app/router/config.go

@@ -46,6 +46,18 @@ func (rr *RoutingRule) BuildCondition() (Condition, error) {
 		conds.Add(cond)
 	}
 
+	var geoDomains []*routercommon.Domain
+	for _, geo := range rr.GeoDomain {
+		geoDomains = append(geoDomains, geo.Domain...)
+	}
+	if len(geoDomains) > 0 {
+		cond, err := NewDomainMatcher(rr.DomainMatcher, geoDomains)
+		if err != nil {
+			return nil, newError("failed to build geo domain condition").Base(err)
+		}
+		conds.Add(cond)
+	}
+
 	if len(rr.UserEmail) > 0 {
 		conds.Add(NewUserMatcher(rr.UserEmail))
 	}

+ 1 - 1
app/router/router.go

@@ -220,7 +220,6 @@ func init() {
 					if err != nil {
 						return nil, newError("unable to load geodomain").Base(err)
 					}
-					rule.Domain = append(rule.Domain, geo.Domain...)
 				}
 			}
 			if v.PortList != "" {
@@ -240,6 +239,7 @@ func init() {
 				rule.SourcePortList = portList.Build()
 			}
 			rule.Domain = v.Domain
+			rule.GeoDomain = v.GeoDomain
 			if v.Networks != "" {
 				rule.Networks = net.ParseNetworks(v.Networks)
 			}