From 2f5acf6742a9bbc7956e67e8684b47ab13e175bc Mon Sep 17 00:00:00 2001 From: abhishek9686 Date: Mon, 23 Jun 2025 06:28:43 +0530 Subject: [PATCH] sync changes on startup, add create relay calls on defaul host --- auth/host_session.go | 4 ++++ controllers/hosts.go | 4 ++++ logic/acls.go | 2 +- migrate/migrate.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) 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() {