|
|
@ -20,6 +20,7 @@ import (
|
|
|
|
"net/url"
|
|
|
|
"net/url"
|
|
|
|
"os"
|
|
|
|
"os"
|
|
|
|
"os/exec"
|
|
|
|
"os/exec"
|
|
|
|
|
|
|
|
"path/filepath"
|
|
|
|
"reflect"
|
|
|
|
"reflect"
|
|
|
|
"runtime"
|
|
|
|
"runtime"
|
|
|
|
"sort"
|
|
|
|
"sort"
|
|
|
@ -172,10 +173,25 @@ func NewHostinfo() *tailcfg.Hostinfo {
|
|
|
|
Hostname: hostname,
|
|
|
|
Hostname: hostname,
|
|
|
|
OS: version.OS(),
|
|
|
|
OS: version.OS(),
|
|
|
|
OSVersion: osv,
|
|
|
|
OSVersion: osv,
|
|
|
|
|
|
|
|
Package: packageType(),
|
|
|
|
GoArch: runtime.GOARCH,
|
|
|
|
GoArch: runtime.GOARCH,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func packageType() string {
|
|
|
|
|
|
|
|
switch runtime.GOOS {
|
|
|
|
|
|
|
|
case "windows":
|
|
|
|
|
|
|
|
if _, err := os.Stat(`C:\ProgramData\chocolatey\lib\tailscale`); err == nil {
|
|
|
|
|
|
|
|
return "choco"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
case "darwin":
|
|
|
|
|
|
|
|
// Using tailscaled or IPNExtension?
|
|
|
|
|
|
|
|
exe, _ := os.Executable()
|
|
|
|
|
|
|
|
return filepath.Base(exe)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// SetHostinfo clones the provided Hostinfo and remembers it for the
|
|
|
|
// SetHostinfo clones the provided Hostinfo and remembers it for the
|
|
|
|
// next update. It reports whether the Hostinfo has changed.
|
|
|
|
// next update. It reports whether the Hostinfo has changed.
|
|
|
|
func (c *Direct) SetHostinfo(hi *tailcfg.Hostinfo) bool {
|
|
|
|
func (c *Direct) SetHostinfo(hi *tailcfg.Hostinfo) bool {
|
|
|
|