fix randomizer and err in config
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"math/rand"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"forge.redroom.link/yves/meowlib"
|
||||
@@ -15,6 +17,12 @@ import (
|
||||
|
||||
const maxHiddenCount = 30
|
||||
|
||||
// Package-level random number generator with mutex for thread-safe access
|
||||
var (
|
||||
rngMu sync.Mutex
|
||||
rng = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
)
|
||||
|
||||
type Identity struct {
|
||||
Nickname string `json:"nickname,omitempty"`
|
||||
DefaultAvatar string `json:"default_avatar,omitempty"`
|
||||
@@ -282,8 +290,9 @@ func (id *Identity) HidePeer(peerIdx int, password string) error {
|
||||
|
||||
func (id *Identity) generateRandomHiddenStuff() error {
|
||||
var err error
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
count := r.Intn(maxHiddenCount) + 1
|
||||
rngMu.Lock()
|
||||
count := rng.Intn(maxHiddenCount) + 1
|
||||
rngMu.Unlock()
|
||||
for i := 1; i < count; i++ {
|
||||
var p Peer
|
||||
p.Uid = uuid.New().String()
|
||||
@@ -385,17 +394,29 @@ func (id *Identity) SaveBackgroundJob() error {
|
||||
}
|
||||
|
||||
func randomLenString(min int, max int) string {
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
n := r.Intn(max-min) + min
|
||||
return randomString(n)
|
||||
rngMu.Lock()
|
||||
defer rngMu.Unlock()
|
||||
|
||||
length := rng.Intn(max-min+1) + min
|
||||
return randomStringLocked(length)
|
||||
}
|
||||
|
||||
func randomString(n int) string {
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
|
||||
s := make([]rune, n)
|
||||
for i := range s {
|
||||
s[i] = letters[r.Intn(len(letters))]
|
||||
}
|
||||
return string(s)
|
||||
rngMu.Lock()
|
||||
defer rngMu.Unlock()
|
||||
|
||||
return randomStringLocked(n)
|
||||
}
|
||||
|
||||
// randomStringLocked generates a random string of length n.
|
||||
// Must be called with rngMu already locked.
|
||||
func randomStringLocked(n int) string {
|
||||
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
|
||||
var b strings.Builder
|
||||
b.Grow(n)
|
||||
for i := 0; i < n; i++ {
|
||||
b.WriteByte(letterBytes[rng.Intn(len(letterBytes))])
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user