control/controlclient: only use a single DNS label as the hostname.

Fixes #971

Signed-off-by: David Anderson <danderson@tailscale.com>
bradfitz/macos_progress
David Anderson 4 years ago
parent 4f3203556d
commit 7055f870f8

@ -46,6 +46,7 @@ import (
"tailscale.com/types/opt"
"tailscale.com/types/persist"
"tailscale.com/types/wgkey"
"tailscale.com/util/dnsname"
"tailscale.com/util/systemd"
"tailscale.com/version"
"tailscale.com/wgengine/filter"
@ -179,6 +180,7 @@ var osVersion func() string // non-nil on some platforms
func NewHostinfo() *tailcfg.Hostinfo {
hostname, _ := os.Hostname()
hostname = dnsname.FirstLabel(hostname)
var osv string
if osVersion != nil {
osv = osVersion()

@ -223,6 +223,14 @@ func NumLabels(hostname string) int {
return strings.Count(hostname, ".")
}
// FirstLabel returns the first DNS label of hostname.
func FirstLabel(hostname string) string {
if i := strings.IndexByte(hostname, '.'); i != -1 {
return hostname[:i]
}
return hostname
}
var separators = map[byte]bool{
' ': true,
'.': true,

Loading…
Cancel
Save