From d6b562482af2b0cc44740edecf46a3699ba10011 Mon Sep 17 00:00:00 2001 From: KingKDot Date: Sun, 17 May 2026 01:12:56 -0500 Subject: [PATCH] seed linux clients (mac this wouldn't happen to nor windows) --- .../cmd/agent/config/identity_linux.go | 8 +++- .../cmd/agent/config/instance_seed.go | 38 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Overlord-Client/cmd/agent/config/instance_seed.go diff --git a/Overlord-Client/cmd/agent/config/identity_linux.go b/Overlord-Client/cmd/agent/config/identity_linux.go index c36b2ad..fae5e5e 100644 --- a/Overlord-Client/cmd/agent/config/identity_linux.go +++ b/Overlord-Client/cmd/agent/config/identity_linux.go @@ -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 } diff --git a/Overlord-Client/cmd/agent/config/instance_seed.go b/Overlord-Client/cmd/agent/config/instance_seed.go new file mode 100644 index 0000000..c838a56 --- /dev/null +++ b/Overlord-Client/cmd/agent/config/instance_seed.go @@ -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 +}