Pārlūkot izejas kodu

json conf for source session in router

Darien Raymond 9 gadi atpakaļ
vecāks
revīzija
ca980f5718
1 mainītis faili ar 21 papildinājumiem un 4 dzēšanām
  1. 21 4
      tools/conf/router.go

+ 21 - 4
tools/conf/router.go

@@ -104,10 +104,12 @@ func parseIP(s string) *router.CIDR {
 func parseFieldRule(msg json.RawMessage) (*router.RoutingRule, error) {
 	type RawFieldRule struct {
 		RouterRule
-		Domain  *StringList  `json:"domain"`
-		IP      *StringList  `json:"ip"`
-		Port    *PortRange   `json:"port"`
-		Network *NetworkList `json:"network"`
+		Domain   *StringList  `json:"domain"`
+		IP       *StringList  `json:"ip"`
+		Port     *PortRange   `json:"port"`
+		Network  *NetworkList `json:"network"`
+		SourceIP *StringList  `json:"source"`
+		User     *StringList  `json:"user"`
 	}
 	rawFieldRule := new(RawFieldRule)
 	err := json.Unmarshal(msg, rawFieldRule)
@@ -149,6 +151,21 @@ func parseFieldRule(msg json.RawMessage) (*router.RoutingRule, error) {
 		rule.NetworkList = rawFieldRule.Network.Build()
 	}
 
+	if rawFieldRule.SourceIP != nil {
+		for _, ip := range *rawFieldRule.IP {
+			ipRule := parseIP(ip)
+			if ipRule != nil {
+				rule.SourceCidr = append(rule.SourceCidr, ipRule)
+			}
+		}
+	}
+
+	if rawFieldRule.User != nil {
+		for _, s := range *rawFieldRule.User {
+			rule.UserEmail = append(rule.UserEmail, s)
+		}
+	}
+
 	return rule, nil
 }