Documentation ¶
Overview ¶
Package syspolicy provides functions to retrieve system settings of a device.
Index ¶
- Variables
- func GetBoolean(key Key, defaultValue bool) (bool, error)
- func GetDuration(name Key, defaultValue time.Duration) (time.Duration, error)
- func GetString(key Key, defaultValue string) (string, error)
- func GetUint64(key Key, defaultValue uint64) (uint64, error)
- func RegisterHandler(h Handler)
- func SelectControlURL(reg, disk string) string
- type Handler
- type Key
- type PreferenceOption
- type Visibility
Constants ¶
This section is empty.
Variables ¶
var ErrNoSuchKey = errors.New("no such key")
ErrNoSuchKey is returned when the specified key does not have a value set.
Functions ¶
func GetDuration ¶
GetDuration loads a policy from the registry that can be managed by an enterprise policy management system and describes a duration for some action. The registry value should be a string that time.ParseDuration understands. If the registry value is "" or can not be processed, defaultValue is returned instead.
func RegisterHandler ¶
func RegisterHandler(h Handler)
RegisterHandler initializes the policy handler and ensures registration will happen once.
func SelectControlURL ¶
SelectControlURL returns the ControlURL to use based on a value in the registry (LoginURL) and the one on disk (in the GUI's prefs.conf). If both are empty, it returns a default value. (It always return a non-empty value)
See https://github.com/tailscale/tailscale/issues/2798 for some background.
Types ¶
type Handler ¶
type Handler interface { // ReadString reads the policy settings value string given the key. ReadString(key string) (string, error) // ReadUInt64 reads the policy settings uint64 value given the key. ReadUInt64(key string) (uint64, error) // ReadBool reads the policy setting's boolean value, given the key. ReadBoolean(key string) (bool, error) }
Handler reads system policies from OS-specific storage.
type Key ¶
type Key string
const ( // Keys with a string value ControlURL Key = "LoginURL" // default ""; if blank, ipn uses ipn.DefaultControlURL. LogTarget Key = "LogTarget" // default ""; if blank logging uses logtail.DefaultHost. Tailnet Key = "Tailnet" // default ""; if blank, no tailnet name is sent to the server. // Keys with a string value that specifies an option: "always", "never", "user-decides". // The default is "user-decides" unless otherwise stated. EnableIncomingConnections Key = "AllowIncomingConnections" EnableServerMode Key = "UnattendedMode" // Keys with a string value that controls visibility: "show", "hide". // The default is "show" unless otherwise stated. AdminConsoleVisibility Key = "AdminConsole" NetworkDevicesVisibility Key = "NetworkDevices" TestMenuVisibility Key = "TestMenu" UpdateMenuVisibility Key = "UpdateMenu" RunExitNodeVisibility Key = "RunExitNode" PreferencesMenuVisibility Key = "PreferencesMenu" // Keys with a string value formatted for use with time.ParseDuration(). KeyExpirationNoticeTime Key = "KeyExpirationNotice" // default 24 hours // Boolean Keys that are only applicable on Windows. Booleans are stored in the registry as // DWORD or QWORD (either is acceptable). 0 means false, and anything else means true. // The default is 0 unless otherwise stated. LogSCMInteractions Key = "LogSCMInteractions" FlushDNSOnSessionUnlock Key = "FlushDNSOnSessionUnlock" // PostureChecking indicates if posture checking is enabled and the client shall gather // posture data. // Key is a string value that specifies an option: "always", "never", "user-decides". // The default is "user-decides" unless otherwise stated. PostureChecking Key = "PostureChecking" )
type PreferenceOption ¶
type PreferenceOption int
PreferenceOption is a policy that governs whether a boolean variable is forcibly assigned an administrator-defined value, or allowed to receive a user-defined value.
func GetPreferenceOption ¶
func GetPreferenceOption(name Key) (PreferenceOption, error)
GetPreferenceOption loads a policy from the registry that can be managed by an enterprise policy management system and allows administrative overrides of users' choices in a way that we do not want tailcontrol to have the authority to set. It describes user-decides/always/never options, where "always" and "never" remove the user's ability to make a selection. If not present or set to a different value, "user-decides" is the default.
func (PreferenceOption) ShouldEnable ¶
func (p PreferenceOption) ShouldEnable(userChoice bool) bool
ShouldEnable checks if the choice administered by this policy should be enabled. If the administrator has chosen a setting, the administrator's setting is returned, otherwise userChoice is returned.
func (PreferenceOption) Show ¶
func (p PreferenceOption) Show() bool
Show returns if the UI option that controls the choice administered by this policy should be shown. Currently this is true if and only if the policy is showChoiceByPolicy.
type Visibility ¶
type Visibility byte
Visibility is a policy that controls whether or not a particular component of a user interface is to be shown.
func GetVisibility ¶
func GetVisibility(name Key) (Visibility, error)
GetVisibility loads a policy from the registry that can be managed by an enterprise policy management system and describes show/hide decisions for UI elements. The registry value should be a string set to "show" (return true) or "hide" (return true). If not present or set to a different value, "show" (return false) is the default.
func (Visibility) Show ¶
func (p Visibility) Show() bool
Show reports whether the UI option administered by this policy should be shown. Currently this is true if and only if the policy is visibleByPolicy.