Browse Source

skip internet gateways

Abhishek Kondur 2 years ago
parent
commit
66faa18fb9
2 changed files with 18 additions and 8 deletions
  1. 13 8
      logic/gateway.go
  2. 5 0
      models/structs.go

+ 13 - 8
logic/gateway.go

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

+ 5 - 0
models/structs.go

@@ -160,7 +160,12 @@ type EgressGatewayRequest struct {
 	NetID      string   `json:"netid" bson:"netid"`
 	NatEnabled string   `json:"natenabled" bson:"natenabled"`
 	Ranges     []string `json:"ranges" bson:"ranges"`
+<<<<<<< Updated upstream
 	Interface  string   `json:"interface" bson:"interface"`
+=======
+	PostUp     string   `json:"postup" bson:"postup"`
+	PostDown   string   `json:"postdown" bson:"postdown"`
+>>>>>>> Stashed changes
 }
 
 // RelayRequest - relay request struct