32 lines
915 B
Go
32 lines
915 B
Go
package params
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"strings"
|
|
)
|
|
|
|
// GetOutboundSubnets obtains the CIDR subnets from the comma separated list of the
|
|
// environment variable FIREWALL_OUTBOUND_SUBNETS.
|
|
func (r *reader) GetOutboundSubnets() (outboundSubnets []net.IPNet, err error) {
|
|
const key = "FIREWALL_OUTBOUND_SUBNETS"
|
|
s, err := r.envParams.GetEnv(key)
|
|
if err != nil {
|
|
return nil, err
|
|
} else if s == "" {
|
|
return nil, nil
|
|
}
|
|
subnets := strings.Split(s, ",")
|
|
for _, subnet := range subnets {
|
|
_, cidr, err := net.ParseCIDR(subnet)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("cannot parse outbound subnet %q from environment variable with key %s: %w", subnet, key, err)
|
|
} else if cidr == nil {
|
|
return nil, fmt.Errorf("cannot parse outbound subnet %q from environment variable with key %s: subnet is nil",
|
|
subnet, key)
|
|
}
|
|
outboundSubnets = append(outboundSubnets, *cidr)
|
|
}
|
|
return outboundSubnets, nil
|
|
}
|