mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-05-27 12:52:27 +02:00
f1e49a7ee6
macOS Sequoia with Private Wi-Fi Address enabled causes os.Hostname() to return generic names like "Mac.lan" from DHCP instead of the real computer name. The /utility provisioning endpoint sends this raw, resulting in devices named "Mac-lan" in the dashboard. Fallback chain: ComputerName → LocalHostName → os.Hostname() LocalHostName can also be affected by DHCP. ComputerName is the user-set display name from System Settings, fully immune to network state.
27 lines
811 B
Go
27 lines
811 B
Go
package controld
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// preferredHostname returns the best available hostname on macOS.
|
|
// It prefers scutil --get ComputerName which is the user-configured name
|
|
// from System Settings → General → About → Name. This is immune to
|
|
// DHCP/network state that can cause os.Hostname() and even LocalHostName
|
|
// to return generic names like "Mac.lan" on Sequoia with Private Wi-Fi
|
|
// Address enabled.
|
|
//
|
|
// Fallback chain: ComputerName → LocalHostName → os.Hostname()
|
|
func preferredHostname() (string, error) {
|
|
for _, key := range []string{"ComputerName", "LocalHostName"} {
|
|
if out, err := exec.Command("scutil", "--get", key).Output(); err == nil {
|
|
if name := strings.TrimSpace(string(out)); name != "" {
|
|
return name, nil
|
|
}
|
|
}
|
|
}
|
|
return os.Hostname()
|
|
}
|