//go:build linux // machineid_linux.go — Linux machineID 取得。 // // 來源順序: // 1. /etc/machine-id(systemd 原生) // 2. /var/lib/dbus/machine-id(舊 Debian / dbus 獨立) // // 參考 ADR-009。 package tunnel import ( "fmt" "os" "strings" ) // readMachineID 回傳 Linux 的 machine-id。 // 失敗時回 ("", error)——呼叫端應 fallback 到 salt file。 func readMachineID() (string, error) { candidates := []string{ "/etc/machine-id", "/var/lib/dbus/machine-id", } for _, path := range candidates { data, err := os.ReadFile(path) if err != nil { continue } id := strings.TrimSpace(string(data)) if id != "" { return id, nil } } return "", fmt.Errorf("machine-id not found in /etc/machine-id or /var/lib/dbus/machine-id") }