Skip to content

Commit 599a24c

Browse files
committed
separate pro and ce nameserver funcs
1 parent 885b368 commit 599a24c

File tree

3 files changed

+156
-31
lines changed

3 files changed

+156
-31
lines changed

logic/dns.go

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ import (
2020
"github.com/txn2/txeh"
2121
)
2222

23+
var GetNameserversForNode = getNameserversForNode
24+
var GetNameserversForHost = getNameserversForHost
25+
var ValidateNameserverReq = validateNameserverReq
26+
2327
type GlobalNs struct {
2428
ID string `json:"id"`
2529
IPs []string `json:"ips"`
@@ -196,18 +200,8 @@ func GetGwDNS(node *models.Node) string {
196200
}
197201

198202
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-
}
203+
if extclient.DNS == "" {
204+
extclient.DNS = GetGwDNS(gwNode)
211205
}
212206
}
213207

@@ -404,7 +398,7 @@ func CreateDNS(entry models.DNSEntry) (models.DNSEntry, error) {
404398
return entry, err
405399
}
406400

407-
func ValidateNameserverReq(ns schema.Nameserver) error {
401+
func validateNameserverReq(ns schema.Nameserver) error {
408402
if ns.Name == "" {
409403
return errors.New("name is required")
410404
}
@@ -428,7 +422,7 @@ func ValidateNameserverReq(ns schema.Nameserver) error {
428422
return nil
429423
}
430424

431-
func GetNameserversForNode(node *models.Node) (returnNsLi []models.Nameserver) {
425+
func getNameserversForNode(node *models.Node) (returnNsLi []models.Nameserver) {
432426
ns := &schema.Nameserver{
433427
NetworkID: node.Network,
434428
}
@@ -447,16 +441,16 @@ func GetNameserversForNode(node *models.Node) (returnNsLi []models.Nameserver) {
447441
}
448442
continue
449443
}
450-
for tagI := range node.Tags {
451-
if _, ok := nsI.Tags[tagI.String()]; ok {
452-
for _, matchDomain := range nsI.MatchDomains {
453-
returnNsLi = append(returnNsLi, models.Nameserver{
454-
IPs: nsI.Servers,
455-
MatchDomain: matchDomain,
456-
})
457-
}
444+
445+
if _, ok := nsI.Nodes[node.ID.String()]; ok {
446+
for _, matchDomain := range nsI.MatchDomains {
447+
returnNsLi = append(returnNsLi, models.Nameserver{
448+
IPs: nsI.Servers,
449+
MatchDomain: matchDomain,
450+
})
458451
}
459452
}
453+
460454
}
461455
if node.IsInternetGateway {
462456
globalNs := models.Nameserver{
@@ -470,7 +464,7 @@ func GetNameserversForNode(node *models.Node) (returnNsLi []models.Nameserver) {
470464
return
471465
}
472466

473-
func GetNameserversForHost(h *models.Host) (returnNsLi []models.Nameserver) {
467+
func getNameserversForHost(h *models.Host) (returnNsLi []models.Nameserver) {
474468
if h.DNS != "yes" {
475469
return
476470
}
@@ -497,17 +491,17 @@ func GetNameserversForHost(h *models.Host) (returnNsLi []models.Nameserver) {
497491
}
498492
continue
499493
}
500-
for tagI := range node.Tags {
501-
if _, ok := nsI.Tags[tagI.String()]; ok {
502-
for _, matchDomain := range nsI.MatchDomains {
503-
returnNsLi = append(returnNsLi, models.Nameserver{
504-
IPs: nsI.Servers,
505-
MatchDomain: matchDomain,
506-
})
507-
}
508494

495+
if _, ok := nsI.Nodes[node.ID.String()]; ok {
496+
for _, matchDomain := range nsI.MatchDomains {
497+
returnNsLi = append(returnNsLi, models.Nameserver{
498+
IPs: nsI.Servers,
499+
MatchDomain: matchDomain,
500+
})
509501
}
502+
510503
}
504+
511505
}
512506
if node.IsInternetGateway {
513507
globalNs := models.Nameserver{

pro/initialize.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ func InitPro() {
155155
logic.GetFwRulesForNodeAndPeerOnGw = proLogic.GetFwRulesForNodeAndPeerOnGw
156156
logic.GetFwRulesForUserNodesOnGw = proLogic.GetFwRulesForUserNodesOnGw
157157
logic.GetHostLocInfo = proLogic.GetHostLocInfo
158+
logic.GetNameserversForHost = proLogic.GetNameserversForHost
159+
logic.GetNameserversForNode = proLogic.GetNameserversForNode
160+
logic.ValidateNameserverReq = proLogic.ValidateNameserverReq
158161

159162
}
160163

pro/logic/dns.go

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package logic
22

33
import (
4+
"context"
45
"errors"
56

7+
"github.com/gravitl/netmaker/db"
68
"github.com/gravitl/netmaker/logic"
79
"github.com/gravitl/netmaker/models"
810
"github.com/gravitl/netmaker/schema"
@@ -41,3 +43,129 @@ func ValidateNameserverReq(ns schema.Nameserver) error {
4143
}
4244
return nil
4345
}
46+
47+
func GetNameserversForNode(node *models.Node) (returnNsLi []models.Nameserver) {
48+
ns := &schema.Nameserver{
49+
NetworkID: node.Network,
50+
}
51+
nsLi, _ := ns.ListByNetwork(db.WithContext(context.TODO()))
52+
for _, nsI := range nsLi {
53+
if !nsI.Status {
54+
continue
55+
}
56+
_, all := nsI.Tags["*"]
57+
if all {
58+
for _, matchDomain := range nsI.MatchDomains {
59+
returnNsLi = append(returnNsLi, models.Nameserver{
60+
IPs: nsI.Servers,
61+
MatchDomain: matchDomain,
62+
})
63+
}
64+
continue
65+
}
66+
foundTag := false
67+
for tagI := range node.Tags {
68+
if _, ok := nsI.Tags[tagI.String()]; ok {
69+
for _, matchDomain := range nsI.MatchDomains {
70+
returnNsLi = append(returnNsLi, models.Nameserver{
71+
IPs: nsI.Servers,
72+
MatchDomain: matchDomain,
73+
})
74+
}
75+
foundTag = true
76+
}
77+
if foundTag {
78+
break
79+
}
80+
}
81+
if foundTag {
82+
continue
83+
}
84+
if _, ok := nsI.Nodes[node.ID.String()]; ok {
85+
for _, matchDomain := range nsI.MatchDomains {
86+
returnNsLi = append(returnNsLi, models.Nameserver{
87+
IPs: nsI.Servers,
88+
MatchDomain: matchDomain,
89+
})
90+
}
91+
}
92+
}
93+
if node.IsInternetGateway {
94+
globalNs := models.Nameserver{
95+
MatchDomain: ".",
96+
}
97+
for _, nsI := range logic.GlobalNsList {
98+
globalNs.IPs = append(globalNs.IPs, nsI.IPs...)
99+
}
100+
returnNsLi = append(returnNsLi, globalNs)
101+
}
102+
return
103+
}
104+
105+
func GetNameserversForHost(h *models.Host) (returnNsLi []models.Nameserver) {
106+
if h.DNS != "yes" {
107+
return
108+
}
109+
for _, nodeID := range h.Nodes {
110+
node, err := logic.GetNodeByID(nodeID)
111+
if err != nil {
112+
continue
113+
}
114+
ns := &schema.Nameserver{
115+
NetworkID: node.Network,
116+
}
117+
nsLi, _ := ns.ListByNetwork(db.WithContext(context.TODO()))
118+
for _, nsI := range nsLi {
119+
if !nsI.Status {
120+
continue
121+
}
122+
_, all := nsI.Tags["*"]
123+
if all {
124+
for _, matchDomain := range nsI.MatchDomains {
125+
returnNsLi = append(returnNsLi, models.Nameserver{
126+
IPs: nsI.Servers,
127+
MatchDomain: matchDomain,
128+
})
129+
}
130+
continue
131+
}
132+
foundTag := false
133+
for tagI := range node.Tags {
134+
if _, ok := nsI.Tags[tagI.String()]; ok {
135+
for _, matchDomain := range nsI.MatchDomains {
136+
returnNsLi = append(returnNsLi, models.Nameserver{
137+
IPs: nsI.Servers,
138+
MatchDomain: matchDomain,
139+
})
140+
}
141+
foundTag = true
142+
}
143+
if foundTag {
144+
break
145+
}
146+
}
147+
if foundTag {
148+
continue
149+
}
150+
if _, ok := nsI.Nodes[node.ID.String()]; ok {
151+
for _, matchDomain := range nsI.MatchDomains {
152+
returnNsLi = append(returnNsLi, models.Nameserver{
153+
IPs: nsI.Servers,
154+
MatchDomain: matchDomain,
155+
})
156+
}
157+
}
158+
159+
}
160+
if node.IsInternetGateway {
161+
globalNs := models.Nameserver{
162+
MatchDomain: ".",
163+
}
164+
for _, nsI := range logic.GlobalNsList {
165+
globalNs.IPs = append(globalNs.IPs, nsI.IPs...)
166+
}
167+
returnNsLi = append(returnNsLi, globalNs)
168+
}
169+
}
170+
return
171+
}

0 commit comments

Comments
 (0)