Explorar o código

create gateways during migration

Matthew R Kasun %!s(int64=2) %!d(string=hai) anos
pai
achega
f08e5a3c03
Modificáronse 1 ficheiros con 33 adicións e 1 borrados
  1. 33 1
      controllers/migrate.go

+ 33 - 1
controllers/migrate.go

@@ -84,5 +84,37 @@ func migrate(w http.ResponseWriter, r *http.Request) {
 	json.NewEncoder(w).Encode(&response)
 	logger.Log(0, "successfully migrated host", data.NewHost.Name, data.NewHost.ID.String())
 	// notify host of changes, peer and node updates
-	go auth.CheckNetRegAndHostUpdate(networksToAdd, &data.NewHost)
+	auth.CheckNetRegAndHostUpdate(networksToAdd, &data.NewHost)
+	// check for gateways
+	for _, node := range data.LegacyNodes {
+		if node.IsEgressGateway == "yes" {
+			egressGateway := models.EgressGatewayRequest{
+				NodeID:     node.ID,
+				Ranges:     node.EgressGatewayRanges,
+				NatEnabled: node.EgressGatewayNatEnabled,
+			}
+			if _, err := logic.CreateEgressGateway(egressGateway); err != nil {
+				logger.Log(0, "error creating egress gateway for node", node.ID, err.Error())
+			}
+		}
+		if node.IsIngressGateway == "yes" {
+			ingressGateway := models.IngressRequest{}
+			ingressNode, err := logic.CreateIngressGateway(node.Network, node.ID, ingressGateway)
+			if err != nil {
+				logger.Log(0, "error creating ingress gateway for node", node.ID, err.Error())
+			}
+			runUpdates(&ingressNode, true)
+		}
+		if node.IsRelay == "yes" && servercfg.Is_EE {
+			_, relayNode, err := logic.CreateRelay(models.RelayRequest{
+				NodeID:       node.ID,
+				NetID:        node.Network,
+				RelayedNodes: node.RelayAddrs,
+			})
+			if err != nil {
+				logger.Log(0, "error creating relay for node", node.ID, err.Error())
+			}
+			runUpdates(&relayNode, true)
+		}
+	}
 }