mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-16 10:06:28 +08:00
Merge pull request #3204 from gravitl/NET-1773-ext
NET-1773: limit ext names to 15
This commit is contained in:
commit
ea7c1507f1
1 changed files with 31 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue