Skip to content

Commit 885b368

Browse files
committed
depreacte ingress dns usage on client configs
1 parent b043ed8 commit 885b368

File tree

5 files changed

+94
-49
lines changed

5 files changed

+94
-49
lines changed

controllers/ext_client.go

Lines changed: 11 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ func getExtClient(w http.ResponseWriter, r *http.Request) {
133133
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
134134
return
135135
}
136+
gwNode, err := logic.GetNodeByID(client.IngressGatewayID)
137+
if err != nil {
138+
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
139+
return
140+
}
141+
logic.SetDNSOnWgConfig(&gwNode, &client)
136142

137143
w.WriteHeader(http.StatusOK)
138144
json.NewEncoder(w).Encode(client)
@@ -288,39 +294,11 @@ func getExtClientConf(w http.ResponseWriter, r *http.Request) {
288294
}
289295
}
290296
}
291-
297+
logic.SetDNSOnWgConfig(&gwnode, &client)
292298
defaultDNS := ""
293299
if client.DNS != "" {
294300
defaultDNS = "DNS = " + client.DNS
295-
} else if gwnode.IngressDNS != "" {
296-
defaultDNS = "DNS = " + gwnode.IngressDNS
297-
}
298-
if client.DNS == "" {
299-
if len(network.NameServers) > 0 {
300-
if defaultDNS == "" {
301-
defaultDNS = "DNS = " + strings.Join(network.NameServers, ",")
302-
} else {
303-
defaultDNS += "," + strings.Join(network.NameServers, ",")
304-
}
305-
306-
}
307301
}
308-
// if servercfg.GetManageDNS() {
309-
// if gwnode.Address6.IP != nil {
310-
// if defaultDNS == "" {
311-
// defaultDNS = "DNS = " + gwnode.Address6.IP.String()
312-
// } else {
313-
// defaultDNS = defaultDNS + ", " + gwnode.Address6.IP.String()
314-
// }
315-
// }
316-
// if gwnode.Address.IP != nil {
317-
// if defaultDNS == "" {
318-
// defaultDNS = "DNS = " + gwnode.Address.IP.String()
319-
// } else {
320-
// defaultDNS = defaultDNS + ", " + gwnode.Address.IP.String()
321-
// }
322-
// }
323-
// }
324302

325303
defaultMTU := 1420
326304
if host.MTU != 0 {
@@ -745,18 +723,10 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
745723
extclient.Tags = make(map[models.TagID]struct{})
746724
// extclient.Tags[models.TagID(fmt.Sprintf("%s.%s", extclient.Network,
747725
// models.RemoteAccessTagName))] = struct{}{}
748-
// set extclient dns to ingressdns if extclient dns is not explicitly set
749-
if (extclient.DNS == "") && (node.IngressDNS != "") {
750-
network, _ := logic.GetNetwork(node.Network)
751-
dns := node.IngressDNS
752-
if len(network.NameServers) > 0 {
753-
if dns == "" {
754-
dns = strings.Join(network.NameServers, ",")
755-
} else {
756-
dns += "," + strings.Join(network.NameServers, ",")
757-
}
758-
759-
}
726+
// set extclient dns to ingressdns if extclient dns is not explicitly
727+
gwDNS := logic.GetGwDNS(&node)
728+
if (extclient.DNS == "") && (gwDNS != "") {
729+
dns := gwDNS
760730
extclient.DNS = dns
761731
}
762732
host, err := logic.GetHost(node.HostID.String())

logic/dns.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/gravitl/netmaker/logger"
1717
"github.com/gravitl/netmaker/models"
1818
"github.com/gravitl/netmaker/schema"
19+
"github.com/gravitl/netmaker/servercfg"
1920
"github.com/txn2/txeh"
2021
)
2122

@@ -172,6 +173,44 @@ func GetNodeDNS(network string) ([]models.DNSEntry, error) {
172173
return dns, nil
173174
}
174175

176+
func GetGwDNS(node *models.Node) string {
177+
if !servercfg.GetManageDNS() {
178+
return ""
179+
}
180+
h, err := GetHost(node.HostID.String())
181+
if err != nil {
182+
return ""
183+
}
184+
if h.DNS != "yes" {
185+
return ""
186+
}
187+
dns := []string{}
188+
if node.Address.IP != nil {
189+
dns = append(dns, node.Address.IP.String())
190+
}
191+
if node.Address6.IP != nil {
192+
dns = append(dns, node.Address6.IP.String())
193+
}
194+
return strings.Join(dns, ",")
195+
196+
}
197+
198+
func SetDNSOnWgConfig(gwNode *models.Node, extclient *models.ExtClient) {
199+
if extclient.RemoteAccessClientID == "" {
200+
if extclient.DNS == "" {
201+
extclient.DNS = GetGwDNS(gwNode)
202+
}
203+
return
204+
}
205+
ns := GetNameserversForNode(gwNode)
206+
for _, nsI := range ns {
207+
if nsI.MatchDomain == "." {
208+
extclient.DNS = GetGwDNS(gwNode)
209+
break
210+
}
211+
}
212+
}
213+
175214
// GetCustomDNS - gets the custom DNS of a network
176215
func GetCustomDNS(network string) ([]models.DNSEntry, error) {
177216

migrate/migrate.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ func migrateNameservers() {
4747
if err != nil {
4848
return
4949
}
50+
5051
for _, netI := range nets {
5152
if len(netI.NameServers) > 0 {
5253
ns := schema.Nameserver{
@@ -59,6 +60,7 @@ func migrateNameservers() {
5960
Tags: datatypes.JSONMap{
6061
"*": struct{}{},
6162
},
63+
Nodes: make(datatypes.JSONMap),
6264
Status: true,
6365
CreatedBy: user.UserName,
6466
}
@@ -70,6 +72,44 @@ func migrateNameservers() {
7072
logic.SaveNetwork(&netI)
7173
}
7274
}
75+
nodes, _ := logic.GetAllNodes()
76+
for _, node := range nodes {
77+
if !node.IsGw {
78+
continue
79+
}
80+
if node.IngressDNS != "" {
81+
if (node.Address.IP != nil && node.Address.IP.String() == node.IngressDNS) ||
82+
(node.Address6.IP != nil && node.Address6.IP.String() == node.IngressDNS) {
83+
continue
84+
}
85+
if node.IngressDNS == "8.8.8.8" || node.IngressDNS == "1.1.1.1" || node.IngressDNS == "9.9.9.9" {
86+
continue
87+
}
88+
h, err := logic.GetHost(node.HostID.String())
89+
if err != nil {
90+
continue
91+
}
92+
ns := schema.Nameserver{
93+
ID: uuid.NewString(),
94+
Name: fmt.Sprintf("%s gw nameservers", h.Name),
95+
NetworkID: node.Network,
96+
Servers: []string{node.IngressDNS},
97+
MatchAll: true,
98+
MatchDomains: []string{"."},
99+
Nodes: datatypes.JSONMap{
100+
node.ID.String(): struct{}{},
101+
},
102+
Tags: make(datatypes.JSONMap),
103+
Status: true,
104+
CreatedBy: user.UserName,
105+
}
106+
ns.Create(db.WithContext(context.TODO()))
107+
node.IngressDNS = ""
108+
logic.UpsertNode(&node)
109+
}
110+
111+
}
112+
73113
}
74114

75115
// removes if any stale configurations from previous run.

pro/controllers/users.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,11 +1171,7 @@ func getRemoteAccessGatewayConf(w http.ResponseWriter, r *http.Request) {
11711171
userConf.OwnerID = user.UserName
11721172
userConf.RemoteAccessClientID = req.RemoteAccessClientID
11731173
userConf.IngressGatewayID = node.ID.String()
1174-
1175-
// set extclient dns to ingressdns if extclient dns is not explicitly set
1176-
if (userConf.DNS == "") && (node.IngressDNS != "") {
1177-
userConf.DNS = node.IngressDNS
1178-
}
1174+
logic.SetDNSOnWgConfig(&node, &userConf)
11791175

11801176
userConf.Network = node.Network
11811177
host, err := logic.GetHost(node.HostID.String())
@@ -1301,9 +1297,8 @@ func getUserRemoteAccessGwsV1(w http.ResponseWriter, r *http.Request) {
13011297
}
13021298

13031299
gws := userGws[node.Network]
1304-
if extClient.DNS == "" {
1305-
extClient.DNS = node.IngressDNS
1306-
}
1300+
1301+
logic.SetDNSOnWgConfig(&node, &extClient)
13071302

13081303
extClient.IngressGatewayEndpoint = utils.GetExtClientEndpoint(
13091304
host.EndpointIP,

schema/dns.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Nameserver struct {
1717
MatchAll bool `gorm:"match_all" json:"match_all"`
1818
MatchDomains datatypes.JSONSlice[string] `gorm:"match_domains" json:"match_domains"`
1919
Tags datatypes.JSONMap `gorm:"tags" json:"tags"`
20+
Nodes datatypes.JSONMap `gorm:"nodes" json:"nodes"`
2021
Status bool `gorm:"status" json:"status"`
2122
CreatedBy string `gorm:"created_by" json:"created_by"`
2223
CreatedAt time.Time `gorm:"created_at" json:"created_at"`

0 commit comments

Comments
 (0)