Skip to content

Commit

Permalink
fix(filter): internal_cidrs config parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
qlonik committed Mar 6, 2024
1 parent 36babae commit 0251fce
Showing 1 changed file with 12 additions and 24 deletions.
36 changes: 12 additions & 24 deletions privacy-profile-composer/pkg/envoyfilter/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,20 @@ func (p *ConfigParser) Parse(any *anypb.Any, callbacks api.ConfigCallbackHandler
// `kubectl cluster-info dump | grep -m 1 service-cluster-ip-range`
if internalCidrsExist, ok := configStruct["internal_cidrs"]; !ok {
return nil, fmt.Errorf("missing internal_cidrs")
} else if internalCidrs, ok := internalCidrsExist.([]string); !ok {
return nil, fmt.Errorf("internal_cidrs: expect a list of strings while got %T", internalCidrs)
} else if internalCidrList, ok := internalCidrsExist.([]interface{}); !ok {
return nil, fmt.Errorf("internal_cidrs: expect a list of strings while got %T", internalCidrsExist)
} else {
parsedCidrs, err := parseCIDRs(internalCidrs)
if err != nil {
return nil, err
conf.internalCidrs = make([]net.IPNet, 0, len(internalCidrList))

for i, v := range internalCidrList {
if internalCidrStr, ok := v.(string); !ok {
return nil, fmt.Errorf("internal_cidrs[%d]: expected a string while got %T", i, v)
} else if _, cidr, err := net.ParseCIDR(internalCidrStr); err != nil {
return nil, fmt.Errorf("invalid internal_cidrs[%d]: %v (%v)", i, cidr, err)
} else {
conf.internalCidrs = append(conf.internalCidrs, *cidr)
}
}

conf.internalCidrs = parsedCidrs
}

return conf, nil
Expand Down Expand Up @@ -138,20 +143,3 @@ func unmarshalConfig(any *anypb.Any) (map[string]interface{}, error) {

return configStruct.Value.AsMap(), nil
}

func parseCIDRs(cidrStrs []string) ([]net.IPNet, error) {
if cidrStrs == nil {
return []net.IPNet{}, nil
}

cidrs := make([]net.IPNet, 0, len(cidrStrs))
for i, cidrStr := range cidrStrs {
_, cidr, err := net.ParseCIDR(cidrStr)
if err != nil {
return nil, fmt.Errorf("invalid CIDR[%d]: %v (%v)", i, cidr, err)
}
cidrs = append(cidrs, *cidr)
}

return cidrs, nil
}

0 comments on commit 0251fce

Please sign in to comment.