mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-16 03:31:39 +00:00
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>
This commit is contained in:
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
|
||||||
|
}
|
||||||
|
@ -7,14 +7,17 @@ type Key string
|
|||||||
|
|
||||||
const (
|
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.
|
||||||
Tailnet Key = "Tailnet" // default ""; if blank, no tailnet name is sent to the server.
|
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.
|
||||||
|
|
||||||
// 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…
x
Reference in New Issue
Block a user