Private
Public Access
CI / rust (push) Successful in 3m6s
CI / go (push) Successful in 33s
CI / js (push) Successful in 34s
Standalone clients that resolve a machine unique ID (OS machine ID first, falling back to a generated UUID persisted to disk), detect hostname/IP/ container/orchestrator, and register+re-ping origin.warky.dev's public service-checkin endpoint on a daily interval. Ported from icy2's internal origincheckin package but extended to the full check-in contract and made dependency-light for external reuse. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
30 lines
699 B
Go
30 lines
699 B
Go
//go:build darwin
|
|
|
|
package originclient
|
|
|
|
import (
|
|
"context"
|
|
"os/exec"
|
|
"regexp"
|
|
"time"
|
|
)
|
|
|
|
var ioregUUIDPattern = regexp.MustCompile(`"IOPlatformUUID" = "([0-9A-Fa-f-]+)"`)
|
|
|
|
// machineID reads the hardware IOPlatformUUID via ioreg, which is stable
|
|
// across reboots and unique per physical/virtual Mac.
|
|
func machineID() (string, error) {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
|
defer cancel()
|
|
|
|
out, err := exec.CommandContext(ctx, "ioreg", "-rd1", "-c", "IOPlatformExpertDevice").Output()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
match := ioregUUIDPattern.FindSubmatch(out)
|
|
if match == nil {
|
|
return "", errMachineIDUnavailable
|
|
}
|
|
return string(match[1]), nil
|
|
}
|