|
@@ -22,20 +22,25 @@ func CreateEgressGateway(gateway models.EgressGatewayRequest) (models.Node, erro
|
|
|
if err != nil {
|
|
|
return models.Node{}, err
|
|
|
}
|
|
|
- for i, cidr := range gateway.Ranges {
|
|
|
- normalized, err := NormalizeCIDR(cidr)
|
|
|
- if err != nil {
|
|
|
- return models.Node{}, err
|
|
|
- }
|
|
|
- gateway.Ranges[i] = normalized
|
|
|
-
|
|
|
- }
|
|
|
if host.OS != "linux" && host.OS != "freebsd" { // add in darwin later
|
|
|
return models.Node{}, errors.New(host.OS + " is unsupported for egress gateways")
|
|
|
}
|
|
|
if host.OS == "linux" && host.FirewallInUse == models.FIREWALL_NONE {
|
|
|
return models.Node{}, errors.New("firewall is not supported for egress gateways")
|
|
|
}
|
|
|
+ for i := len(gateway.Ranges) - 1; i >= 0; i-- {
|
|
|
+ if gateway.Ranges[i] == "0.0.0.0/0" || gateway.Ranges[i] == "::/0" {
|
|
|
+ logger.Log(0, "currently internet gateways are not supported", gateway.Ranges[i])
|
|
|
+ gateway.Ranges = append(gateway.Ranges[:i], gateway.Ranges[i+1:]...)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ normalized, err := NormalizeCIDR(gateway.Ranges[i])
|
|
|
+ if err != nil {
|
|
|
+ return models.Node{}, err
|
|
|
+ }
|
|
|
+ gateway.Ranges[i] = normalized
|
|
|
+
|
|
|
+ }
|
|
|
if gateway.NatEnabled == "" {
|
|
|
gateway.NatEnabled = "yes"
|
|
|
}
|