|
|
@@ -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
|
|
|
}
|
|
|
|