seed linux clients (mac this wouldn't happen to nor windows)

This commit is contained in:
KingKDot
2026-05-17 01:12:56 -05:00
parent 6dbbedfec1
commit d6b562482a
2 changed files with 45 additions and 1 deletions
@@ -14,5 +14,11 @@ func platformMachineID() string {
log.Printf("[identity] WARNING: failed to read /etc/machine-id: %v", err)
return ""
}
return strings.TrimSpace(string(data))
machineID := strings.TrimSpace(string(data))
seed := getOrCreateInstanceSeed()
if seed != "" {
return machineID + "|" + seed
}
return machineID
}
@@ -0,0 +1,38 @@
//go:build linux && !android
package config
import (
"crypto/rand"
"encoding/hex"
"log"
"os"
"strings"
)
const instanceSeedFile = "config/instance_seed"
func getOrCreateInstanceSeed() string {
data, err := os.ReadFile(instanceSeedFile)
if err == nil {
if seed := strings.TrimSpace(string(data)); seed != "" {
return seed
}
}
b := make([]byte, 16)
if _, err := rand.Read(b); err != nil {
log.Printf("[identity] WARNING: failed to generate instance seed: %v", err)
return ""
}
seed := hex.EncodeToString(b)
if err := os.MkdirAll("config", 0700); err != nil {
log.Printf("[identity] WARNING: failed to create config dir for instance seed: %v", err)
return seed
}
if err := os.WriteFile(instanceSeedFile, []byte(seed), 0600); err != nil {
log.Printf("[identity] WARNING: failed to persist instance seed: %v", err)
}
return seed
}