diff --git a/mq/mq.go b/mq/mq.go index 87c7ce8e..199c9024 100644 --- a/mq/mq.go +++ b/mq/mq.go @@ -14,6 +14,7 @@ import ( "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" + "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/serverctl" ) @@ -192,6 +193,8 @@ func SetupMQTT() mqtt.Client { opts := mqtt.NewClientOptions() broker := servercfg.GetMessageQueueEndpoint() opts.AddBroker(broker) + id := ncutils.MakeRandomString(23) + opts.ClientID = id client := mqtt.NewClient(opts) tperiod := time.Now().Add(10 * time.Second) for { diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index 3e383cc9..2054863c 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -93,6 +93,8 @@ func SetupMQTT(cfg *config.ClientConfig) mqtt.Client { opts := mqtt.NewClientOptions() server := getServerAddress(cfg) opts.AddBroker(server + ":1883") + id := ncutils.MakeRandomString(23) + opts.ClientID = id opts.SetDefaultPublishHandler(All) client := mqtt.NewClient(opts) tperiod := time.Now().Add(12 * time.Second) diff --git a/netclient/ncutils/netclientutils.go b/netclient/ncutils/netclientutils.go index cd44e221..76e3d6b9 100644 --- a/netclient/ncutils/netclientutils.go +++ b/netclient/ncutils/netclientutils.go @@ -32,6 +32,9 @@ import ( // Version - version of the netclient var Version = "dev" +// src - for random strings +var src = rand.NewSource(time.Now().UnixNano()) + // MAX_NAME_LENGTH - maximum node name length const MAX_NAME_LENGTH = 62 @@ -62,6 +65,14 @@ const DEFAULT_GC_PERCENT = 10 // KEY_SIZE = ideal length for keys const KEY_SIZE = 2048 +// constants for random strings +const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +const ( + letterIdxBits = 6 // 6 bits to represent a letter index + letterIdxMask = 1<= 0; { + if remain == 0 { + cache, remain = src.Int63(), letterIdxMax + } + if idx := int(cache & letterIdxMask); idx < len(letterBytes) { + sb.WriteByte(letterBytes[idx]) + i-- + } + cache >>= letterIdxBits + remain-- + } + + return sb.String() +}