From 7f298edf6066d34f2a89f0b76a53f39170639d19 Mon Sep 17 00:00:00 2001 From: proitlab Date: Mon, 2 Feb 2026 13:42:10 +0700 Subject: [PATCH] Fix ClientID --- .../mqtt_presence_redis_go.go | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/mqtt_presence_redis_go/mqtt_presence_redis_go.go b/mqtt_presence_redis_go/mqtt_presence_redis_go.go index df8d4f1..066932d 100644 --- a/mqtt_presence_redis_go/mqtt_presence_redis_go.go +++ b/mqtt_presence_redis_go/mqtt_presence_redis_go.go @@ -7,7 +7,8 @@ import ( "os" "strings" "time" - "crypto/rand" + "strconv" + "math/rand" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/go-redis/redis/v8" @@ -39,7 +40,7 @@ func main() { rdb := redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("%s:%s", redisHost, redisPort), Password: redisPassword, - DB: atoi(redisDB), + DB: parseInt(redisDB), }) // Ping to verify connection @@ -102,7 +103,7 @@ func handleMessage(ctx context.Context, rdb *redis.Client, msg mqtt.Message) { return } - if err := rdb.SetEX(ctx, key, data, time.Duration(atoi(redisSetEX))*time.Second).Err(); err != nil { + if err := rdb.SetEX(ctx, key, data, time.Duration(parseInt(redisSetEX))*time.Second).Err(); err != nil { log.Printf("Failed to set Redis key: %v", err) } } @@ -114,11 +115,20 @@ func getEnv(key, defaultVal string) string { return defaultVal } -func randomString() string { - b := make([]byte, 4) - if _, err := rand.Read(b); err != nil { - log.Printf("Failed to generate random string: %v", err) - return "" +func parseInt(s string) int { + i, err := strconv.Atoi(s) + if err != nil { + log.Printf("Failed to parse int from %s: %v", s, err) + return 0 } - return hex.EncodeToString(b) + return i +} + +func randomString() string { + const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + b := make([]byte, 10) + for i := range b { + b[i] = letters[rand.Intn(len(letters))] + } + return string(b) }