Merge pull request #3204 from gravitl/NET-1773-ext

NET-1773: limit ext names to 15
This commit is contained in:
Abhishek K 2024-11-14 13:54:08 +04:00 committed by GitHub
commit ea7c1507f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,6 +2,7 @@ package logic
import (
"encoding/json"
"errors"
"fmt"
"net"
"reflect"
@ -9,6 +10,7 @@ import (
"sync"
"time"
"github.com/goombaio/namegenerator"
"github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/logger"
"github.com/gravitl/netmaker/logic/acls"
@ -281,13 +283,41 @@ func CreateExtClient(extclient *models.ExtClient) error {
}
if extclient.ClientID == "" {
extclient.ClientID = models.GenerateNodeName()
extclient.ClientID, err = GenerateNodeName(extclient.Network)
if err != nil {
return err
}
}
extclient.LastModified = time.Now().Unix()
return SaveExtClient(extclient)
}
// GenerateNodeName - generates a random node name
func GenerateNodeName(network string) (string, error) {
seed := time.Now().UTC().UnixNano()
nameGenerator := namegenerator.NewNameGenerator(seed)
var name string
cnt := 0
for {
if cnt > 10 {
return "", errors.New("couldn't generate random name, try again")
}
cnt += 1
name = nameGenerator.Generate()
if len(name) > 15 {
continue
}
_, err := GetExtClient(name, network)
if err == nil {
// config exists with same name
continue
}
break
}
return name, nil
}
// SaveExtClient - saves an ext client to database
func SaveExtClient(extclient *models.ExtClient) error {
key, err := GetRecordKey(extclient.ClientID, extclient.Network)