seed linux clients (mac this wouldn't happen to nor windows)
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user