mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-17 02:24:23 +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 (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -9,6 +10,7 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/goombaio/namegenerator"
|
||||||
"github.com/gravitl/netmaker/database"
|
"github.com/gravitl/netmaker/database"
|
||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
"github.com/gravitl/netmaker/logic/acls"
|
"github.com/gravitl/netmaker/logic/acls"
|
||||||
|
@ -281,13 +283,41 @@ func CreateExtClient(extclient *models.ExtClient) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if extclient.ClientID == "" {
|
if extclient.ClientID == "" {
|
||||||
extclient.ClientID = models.GenerateNodeName()
|
extclient.ClientID, err = GenerateNodeName(extclient.Network)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extclient.LastModified = time.Now().Unix()
|
extclient.LastModified = time.Now().Unix()
|
||||||
return SaveExtClient(extclient)
|
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
|
// SaveExtClient - saves an ext client to database
|
||||||
func SaveExtClient(extclient *models.ExtClient) error {
|
func SaveExtClient(extclient *models.ExtClient) error {
|
||||||
key, err := GetRecordKey(extclient.ClientID, extclient.Network)
|
key, err := GetRecordKey(extclient.ClientID, extclient.Network)
|
||||||
|
|
Loading…
Add table
Reference in a new issue