From ca980f5718756265ac6f053c75f2e9f2aa848cd2 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Tue, 18 Oct 2016 23:14:48 +0200 Subject: [PATCH] json conf for source session in router --- tools/conf/router.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tools/conf/router.go b/tools/conf/router.go index 10c60c5b2..0bf528ea2 100644 --- a/tools/conf/router.go +++ b/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 }