From eb9f28e341846972b4ef2a07f7e479c4898b815b Mon Sep 17 00:00:00 2001 From: proitlab Date: Mon, 2 Feb 2026 13:12:57 +0700 Subject: [PATCH] Add Random ClientID string --- mqtt_presence_redis_go/mqtt_presence_redis_go.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/mqtt_presence_redis_go/mqtt_presence_redis_go.go b/mqtt_presence_redis_go/mqtt_presence_redis_go.go index f30ed63..df8d4f1 100644 --- a/mqtt_presence_redis_go/mqtt_presence_redis_go.go +++ b/mqtt_presence_redis_go/mqtt_presence_redis_go.go @@ -7,7 +7,7 @@ import ( "os" "strings" "time" - "strconv" + "crypto/rand" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/go-redis/redis/v8" @@ -52,7 +52,7 @@ func main() { opts.AddBroker(fmt.Sprintf("tcp://%s:%s", mqttHost, mqttPort)) opts.SetUsername(mqttUser) opts.SetPassword(mqttPass) - opts.SetClientID("mqtt_presence_redis_go") + opts.SetClientID(fmt.Sprintf("mqtt_presence_redis_go_%s", randomString())) // Handlers opts.SetDefaultPublishHandler(func(client mqtt.Client, msg mqtt.Message) { @@ -114,10 +114,11 @@ func getEnv(key, defaultVal string) string { return defaultVal } -func atoi(s string) int { - i, err := strconv.Atoi(s) - if err != nil { - return 0 +func randomString() string { + b := make([]byte, 4) + if _, err := rand.Read(b); err != nil { + log.Printf("Failed to generate random string: %v", err) + return "" } - return i + return hex.EncodeToString(b) }