Files

39 lines
866 B
Go

//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
}