From 39d812f13760ea81489bb9e660cfe9542d2cce30 Mon Sep 17 00:00:00 2001 From: Aceix Date: Tue, 18 Mar 2025 09:26:29 +0000 Subject: [PATCH] feat: send gateway dns and private address (#3378) --- models/structs.go | 2 ++ pro/controllers/users.go | 7 +++++++ utils/utils.go | 16 ++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/models/structs.go b/models/structs.go index 7e9a5a44..23eb13f6 100644 --- a/models/structs.go +++ b/models/structs.go @@ -44,6 +44,8 @@ type UserRemoteGws struct { AllowedEndpoints []string `json:"allowed_endpoints"` NetworkAddresses []string `json:"network_addresses"` Status NodeStatus `json:"status"` + DnsAddress string `json:"dns_address"` + Addresses string `json:"addresses"` } // UserRAGs - struct for user access gws diff --git a/pro/controllers/users.go b/pro/controllers/users.go index efffa56b..55e25dcf 100644 --- a/pro/controllers/users.go +++ b/pro/controllers/users.go @@ -21,6 +21,7 @@ import ( "github.com/gravitl/netmaker/pro/email" proLogic "github.com/gravitl/netmaker/pro/logic" "github.com/gravitl/netmaker/servercfg" + "github.com/gravitl/netmaker/utils" "golang.org/x/exp/slog" ) @@ -1074,6 +1075,8 @@ func getRemoteAccessGatewayConf(w http.ResponseWriter, r *http.Request) { Metadata: node.Metadata, AllowedEndpoints: getAllowedRagEndpoints(&node, host), NetworkAddresses: []string{network.AddressRange, network.AddressRange6}, + DnsAddress: node.IngressDNS, + Addresses: utils.NoEmptyStringToCsv(node.Address.String(), node.Address6.String()), } slog.Debug("returned user gw config", "user", user.UserName, "gws", userGw) @@ -1165,6 +1168,8 @@ func getUserRemoteAccessGwsV1(w http.ResponseWriter, r *http.Request) { AllowedEndpoints: getAllowedRagEndpoints(&node, host), NetworkAddresses: []string{network.AddressRange, network.AddressRange6}, Status: node.Status, + DnsAddress: node.IngressDNS, + Addresses: utils.NoEmptyStringToCsv(node.Address.String(), node.Address6.String()), }) userGws[node.Network] = gws delete(userGwNodes, node.ID.String()) @@ -1207,6 +1212,8 @@ func getUserRemoteAccessGwsV1(w http.ResponseWriter, r *http.Request) { AllowedEndpoints: getAllowedRagEndpoints(&node, host), NetworkAddresses: []string{network.AddressRange, network.AddressRange6}, Status: node.Status, + DnsAddress: node.IngressDNS, + Addresses: utils.NoEmptyStringToCsv(node.Address.String(), node.Address6.String()), }) userGws[node.Network] = gws } diff --git a/utils/utils.go b/utils/utils.go index f755dceb..bd793a7e 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -3,6 +3,7 @@ package utils import ( "log/slog" "runtime" + "strings" "time" ) @@ -59,3 +60,18 @@ func TraceCaller() { slog.Debug("Called from function: %s\n", "func-name", funcName) slog.Debug("File: %s, Line: %d\n", "file", file, "line-no", line) } + +// NoEmptyStringToCsv takes a bunch of strings, filters out empty ones and returns a csv version of the string +func NoEmptyStringToCsv(strs ...string) string { + var sb strings.Builder + for _, str := range strs { + trimmedStr := strings.TrimSpace(str) + if trimmedStr != "" && trimmedStr != "" { + if sb.Len() > 0 { + sb.WriteString(", ") + } + sb.WriteString(str) + } + } + return sb.String() +}