@@ -2,6 +2,7 @@ package logic
2
2
3
3
import (
4
4
"encoding/json"
5
+ "errors"
5
6
"fmt"
6
7
"os"
7
8
"regexp"
@@ -11,6 +12,7 @@ import (
11
12
"github.com/gravitl/netmaker/database"
12
13
"github.com/gravitl/netmaker/logger"
13
14
"github.com/gravitl/netmaker/models"
15
+ "github.com/gravitl/netmaker/servercfg"
14
16
"github.com/txn2/txeh"
15
17
)
16
18
@@ -104,7 +106,7 @@ func GetNodeDNS(network string) ([]models.DNSEntry, error) {
104
106
if err != nil {
105
107
return dns , err
106
108
}
107
-
109
+ defaultDomain := servercfg . GetDefaultDomain ()
108
110
for _ , node := range nodes {
109
111
if node .Network != network {
110
112
continue
@@ -114,7 +116,7 @@ func GetNodeDNS(network string) ([]models.DNSEntry, error) {
114
116
continue
115
117
}
116
118
var entry = models.DNSEntry {}
117
- entry .Name = fmt .Sprintf ("%s.%s" , host .Name , network )
119
+ entry .Name = fmt .Sprintf ("%s.%s.%s " , host .Name , network , defaultDomain )
118
120
entry .Network = network
119
121
if node .Address .IP != nil {
120
122
entry .Address = node .Address .IP .String ()
@@ -224,9 +226,17 @@ func SortDNSEntrys(unsortedDNSEntrys []models.DNSEntry) {
224
226
})
225
227
}
226
228
229
+ // IsNetworkNameValid - checks if a netid of a network uses valid characters
230
+ func IsDNSEntryValid (d string ) bool {
231
+ re := regexp .MustCompile (`^[A-Za-z0-9-.]+$` )
232
+ return re .MatchString (d )
233
+ }
234
+
227
235
// ValidateDNSCreate - checks if an entry is valid
228
236
func ValidateDNSCreate (entry models.DNSEntry ) error {
229
-
237
+ if ! IsDNSEntryValid (entry .Name ) {
238
+ return errors .New ("invalid input. Only uppercase letters (A-Z), lowercase letters (a-z), numbers (0-9), minus sign (-) and dots (.) are allowed" )
239
+ }
230
240
v := validator .New ()
231
241
232
242
_ = v .RegisterValidation ("whitespace" , func (f1 validator.FieldLevel ) bool {
0 commit comments