ipn/ipnlocal: add new DNS and subnet router policies

In addition to the new policy keys for the new options, some
already-in-use but missing policy keys are also being added to
util/syspolicy.

Updates ENG-2133

Change-Id: Iad08ca47f839ea6a65f81b76b4f9ef21183ebdc6
Signed-off-by: Adrian Dewhurst <adrian@tailscale.com>
pull/9926/head
Adrian Dewhurst 1 year ago committed by Adrian Dewhurst
parent f5a7551382
commit 32194cdc70

@ -19,6 +19,7 @@ import (
"tailscale.com/types/logger" "tailscale.com/types/logger"
"tailscale.com/util/clientmetric" "tailscale.com/util/clientmetric"
"tailscale.com/util/cmpx" "tailscale.com/util/cmpx"
"tailscale.com/util/syspolicy"
"tailscale.com/util/winutil" "tailscale.com/util/winutil"
) )
@ -463,6 +464,10 @@ var defaultPrefs = func() ipn.PrefsView {
prefs.ShieldsUp = shieldsUp == "never" prefs.ShieldsUp = shieldsUp == "never"
forceDaemon, _ := winutil.GetPolicyString("UnattendedMode") forceDaemon, _ := winutil.GetPolicyString("UnattendedMode")
prefs.ForceDaemon = forceDaemon == "always" prefs.ForceDaemon = forceDaemon == "always"
corpDNS, _ := syspolicy.GetPreferenceOption(syspolicy.EnableTailscaleDNS)
prefs.CorpDNS = corpDNS.ShouldEnable(false)
routeAll, _ := syspolicy.GetPreferenceOption(syspolicy.EnableTailscaleSubnets)
prefs.RouteAll = routeAll.ShouldEnable(false)
return prefs.View() return prefs.View()
}() }()

@ -13,6 +13,7 @@ import (
"tailscale.com/atomicfile" "tailscale.com/atomicfile"
"tailscale.com/ipn" "tailscale.com/ipn"
"tailscale.com/util/syspolicy"
"tailscale.com/util/winutil/policy" "tailscale.com/util/winutil/policy"
) )
@ -70,6 +71,8 @@ func (pm *profileManager) loadLegacyPrefs() (string, ipn.PrefsView, error) {
prefs.ExitNodeIP = resolveExitNodeIP(prefs.ExitNodeIP) prefs.ExitNodeIP = resolveExitNodeIP(prefs.ExitNodeIP)
prefs.ShieldsUp = resolveShieldsUp(prefs.ShieldsUp) prefs.ShieldsUp = resolveShieldsUp(prefs.ShieldsUp)
prefs.ForceDaemon = resolveForceDaemon(prefs.ForceDaemon) prefs.ForceDaemon = resolveForceDaemon(prefs.ForceDaemon)
prefs.CorpDNS, _ = resolveOptionPolicy(syspolicy.EnableTailscaleDNS, prefs.CorpDNS)
prefs.RouteAll, _ = resolveOptionPolicy(syspolicy.EnableTailscaleSubnets, prefs.RouteAll)
pm.logf("migrating Windows profile to new format") pm.logf("migrating Windows profile to new format")
return migrationSentinel, prefs.View(), nil return migrationSentinel, prefs.View(), nil
@ -88,3 +91,11 @@ func resolveForceDaemon(defval bool) bool {
pol := policy.GetPreferenceOptionPolicy("UnattendedMode") pol := policy.GetPreferenceOptionPolicy("UnattendedMode")
return pol.ShouldEnable(defval) return pol.ShouldEnable(defval)
} }
func resolveOptionPolicy(key syspolicy.Key, defval bool) (bool, error) {
pol, err := syspolicy.GetPreferenceOption(key)
if err != nil {
return defval, err
}
return pol.ShouldEnable(defval), nil
}

@ -9,12 +9,15 @@ const (
// Keys with a string value // Keys with a string value
ControlURL Key = "LoginURL" // default ""; if blank, ipn uses ipn.DefaultControlURL. ControlURL Key = "LoginURL" // default ""; if blank, ipn uses ipn.DefaultControlURL.
LogTarget Key = "LogTarget" // default ""; if blank logging uses logtail.DefaultHost. LogTarget Key = "LogTarget" // default ""; if blank logging uses logtail.DefaultHost.
ExitNodeIP Key = "ExitNodeIP" // default ""; set to the IP address of the desired exit node; still under development
Tailnet Key = "Tailnet" // default ""; if blank, no tailnet name is sent to the server. 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". // Keys with a string value that specifies an option: "always", "never", "user-decides".
// The default is "user-decides" unless otherwise stated. // The default is "user-decides" unless otherwise stated.
EnableIncomingConnections Key = "AllowIncomingConnections" EnableIncomingConnections Key = "AllowIncomingConnections"
EnableServerMode Key = "UnattendedMode" EnableServerMode Key = "UnattendedMode"
EnableTailscaleDNS Key = "UseTailscaleDNSSettings"
EnableTailscaleSubnets Key = "UseTailscaleSubnets"
// Keys with a string value that controls visibility: "show", "hide". // Keys with a string value that controls visibility: "show", "hide".
// The default is "show" unless otherwise stated. // The default is "show" unless otherwise stated.
@ -24,6 +27,8 @@ const (
UpdateMenuVisibility Key = "UpdateMenu" UpdateMenuVisibility Key = "UpdateMenu"
RunExitNodeVisibility Key = "RunExitNode" RunExitNodeVisibility Key = "RunExitNode"
PreferencesMenuVisibility Key = "PreferencesMenu" PreferencesMenuVisibility Key = "PreferencesMenu"
ExitNodeMenuVisibility Key = "ExitNodesPicker"
AutoUpdateVisibility Key = "AutoUpdate"
// Keys with a string value formatted for use with time.ParseDuration(). // Keys with a string value formatted for use with time.ParseDuration().
KeyExpirationNoticeTime Key = "KeyExpirationNotice" // default 24 hours KeyExpirationNoticeTime Key = "KeyExpirationNotice" // default 24 hours

Loading…
Cancel
Save