|
|
|
|
@ -52,7 +52,7 @@ func New() *tailcfg.Hostinfo { |
|
|
|
|
GoArchVar: lazyGoArchVar.Get(), |
|
|
|
|
GoVersion: runtime.Version(), |
|
|
|
|
Machine: condCall(unameMachine), |
|
|
|
|
DeviceModel: deviceModel(), |
|
|
|
|
DeviceModel: deviceModelCached(), |
|
|
|
|
Cloud: string(cloudenv.Get()), |
|
|
|
|
NoLogsNoSupport: envknob.NoLogsNoSupport(), |
|
|
|
|
AllowsUpdate: envknob.AllowsRemoteUpdate(), |
|
|
|
|
@ -68,6 +68,7 @@ var ( |
|
|
|
|
distroVersion func() string |
|
|
|
|
distroCodeName func() string |
|
|
|
|
unameMachine func() string |
|
|
|
|
deviceModel func() string |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func condCall[T any](fn func() T) T { |
|
|
|
|
@ -176,6 +177,20 @@ var ( |
|
|
|
|
// SetDeviceModel sets the device model for use in Hostinfo updates.
|
|
|
|
|
func SetDeviceModel(model string) { deviceModelAtomic.Store(model) } |
|
|
|
|
|
|
|
|
|
func deviceModelCached() string { |
|
|
|
|
if v, _ := deviceModelAtomic.Load().(string); v != "" { |
|
|
|
|
return v |
|
|
|
|
} |
|
|
|
|
if deviceModel == nil { |
|
|
|
|
return "" |
|
|
|
|
} |
|
|
|
|
v := deviceModel() |
|
|
|
|
if v != "" { |
|
|
|
|
deviceModelAtomic.Store(v) |
|
|
|
|
} |
|
|
|
|
return v |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// SetOSVersion sets the OS version.
|
|
|
|
|
func SetOSVersion(v string) { osVersionAtomic.Store(v) } |
|
|
|
|
|
|
|
|
|
@ -193,11 +208,6 @@ func SetPackage(v string) { packagingType.Store(v) } |
|
|
|
|
// and "k8s-operator".
|
|
|
|
|
func SetApp(v string) { appType.Store(v) } |
|
|
|
|
|
|
|
|
|
func deviceModel() string { |
|
|
|
|
s, _ := deviceModelAtomic.Load().(string) |
|
|
|
|
return s |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// FirewallMode returns the firewall mode for the app.
|
|
|
|
|
// It is empty if unset.
|
|
|
|
|
func FirewallMode() string { |
|
|
|
|
|