control/controlclient: note package type in Hostinfo
Fixes tailscale/corp#440
"net/url"
"os"
"os/exec"
+ "path/filepath"
"reflect"
"runtime"
"sort"
@@ -172,10 +173,25 @@ func NewHostinfo() *tailcfg.Hostinfo {
Hostname: hostname,
OS: version.OS(),
OSVersion: osv,
+ Package: packageType(),
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
// next update. It reports whether the Hostinfo has changed.
func (c *Direct) SetHostinfo(hi *tailcfg.Hostinfo) bool {
