diff --git a/auth/host_session.go b/auth/host_session.go index 7fd289d0..6e01f7e9 100644 --- a/auth/host_session.go +++ b/auth/host_session.go @@ -289,6 +289,10 @@ func CheckNetRegAndHostUpdate(networks []string, h *models.Host, relayNodeId uui logic.CreateFailOver(*newNode) // make host remote access gateway logic.CreateIngressGateway(network, newNode.ID.String(), models.IngressRequest{}) + logic.CreateRelay(models.RelayRequest{ + NodeID: newNode.ID.String(), + NetID: network, + }) } } } diff --git a/controllers/hosts.go b/controllers/hosts.go index 0d5cd4f8..cd7a1365 100644 --- a/controllers/hosts.go +++ b/controllers/hosts.go @@ -521,6 +521,10 @@ func addHostToNetwork(w http.ResponseWriter, r *http.Request) { logic.CreateFailOver(*newNode) // make host remote access gateway logic.CreateIngressGateway(network, newNode.ID.String(), models.IngressRequest{}) + logic.CreateRelay(models.RelayRequest{ + NodeID: newNode.ID.String(), + NetID: network, + }) } go func() { mq.HostUpdate(&models.HostUpdate{ diff --git a/logic/acls.go b/logic/acls.go index 116318ea..3fb5dbd5 100644 --- a/logic/acls.go +++ b/logic/acls.go @@ -294,7 +294,7 @@ var MigrateToGws = func() { return } for _, node := range nodes { - if node.IsIngressGateway || node.IsRelay { + if node.IsIngressGateway || node.IsRelay || node.IsInternetGateway { node.IsGw = true node.IsIngressGateway = true node.IsRelay = true diff --git a/migrate/migrate.go b/migrate/migrate.go index 164bd985..8f584ab5 100644 --- a/migrate/migrate.go +++ b/migrate/migrate.go @@ -36,6 +36,50 @@ func Run() { updateAcls() logic.MigrateToGws() migrateToEgressV1() + resync() +} + +// removes if any stale configurations from previous run. +func resync() { + + nodes, _ := logic.GetAllNodes() + for _, node := range nodes { + if !node.IsGw { + if len(node.RelayedNodes) > 0 { + logic.DeleteRelay(node.Network, node.ID.String()) + } + if node.IsIngressGateway { + logic.DeleteIngressGateway(node.ID.String()) + } + if len(node.InetNodeReq.InetNodeClientIDs) > 0 || node.IsInternetGateway { + logic.UnsetInternetGw(&node) + logic.UpsertNode(&node) + } + } + if node.IsRelayed { + if node.RelayedBy == "" { + node.IsRelayed = false + node.InternetGwID = "" + logic.UpsertNode(&node) + } + if node.RelayedBy != "" { + // check if node exists + _, err := logic.GetNodeByID(node.ID.String()) + if err != nil { + node.RelayedBy = "" + node.InternetGwID = "" + logic.UpsertNode(&node) + } + } + } + if node.InternetGwID != "" { + _, err := logic.GetNodeByID(node.ID.String()) + if err != nil { + node.InternetGwID = "" + logic.UpsertNode(&node) + } + } + } } func assignSuperAdmin() {