mirror of
https://github.com/tailscale/tailscale.git
synced 2025-03-28 12:02:23 +00:00
cmd/tailscale/cli: add up --unattended for Windows
RELNOTE=Windows CLI behavior change: ForceDaemon now off by default Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
34d2f5a3d9
commit
a8d95a18b2
@ -71,6 +71,9 @@ var upFlagSet = (func() *flag.FlagSet {
|
|||||||
upf.BoolVar(&upArgs.snat, "snat-subnet-routes", true, "source NAT traffic to local routes advertised with --advertise-routes")
|
upf.BoolVar(&upArgs.snat, "snat-subnet-routes", true, "source NAT traffic to local routes advertised with --advertise-routes")
|
||||||
upf.StringVar(&upArgs.netfilterMode, "netfilter-mode", defaultNetfilterMode(), "netfilter mode (one of on, nodivert, off)")
|
upf.StringVar(&upArgs.netfilterMode, "netfilter-mode", defaultNetfilterMode(), "netfilter mode (one of on, nodivert, off)")
|
||||||
}
|
}
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
upf.BoolVar(&upArgs.forceDaemon, "unattended", false, "run in \"Unattended Mode\" where Tailscale keeps running even after the current GUI user logs out (Windows-only)")
|
||||||
|
}
|
||||||
return upf
|
return upf
|
||||||
})()
|
})()
|
||||||
|
|
||||||
@ -91,6 +94,7 @@ var upArgs struct {
|
|||||||
exitNodeAllowLANAccess bool
|
exitNodeAllowLANAccess bool
|
||||||
shieldsUp bool
|
shieldsUp bool
|
||||||
forceReauth bool
|
forceReauth bool
|
||||||
|
forceDaemon bool
|
||||||
advertiseRoutes string
|
advertiseRoutes string
|
||||||
advertiseDefaultRoute bool
|
advertiseDefaultRoute bool
|
||||||
advertiseTags string
|
advertiseTags string
|
||||||
@ -224,7 +228,7 @@ func runUp(ctx context.Context, args []string) error {
|
|||||||
prefs.AdvertiseTags = tags
|
prefs.AdvertiseTags = tags
|
||||||
prefs.NoSNAT = !upArgs.snat
|
prefs.NoSNAT = !upArgs.snat
|
||||||
prefs.Hostname = upArgs.hostname
|
prefs.Hostname = upArgs.hostname
|
||||||
prefs.ForceDaemon = (runtime.GOOS == "windows")
|
prefs.ForceDaemon = upArgs.forceDaemon
|
||||||
|
|
||||||
if runtime.GOOS == "linux" {
|
if runtime.GOOS == "linux" {
|
||||||
switch upArgs.netfilterMode {
|
switch upArgs.netfilterMode {
|
||||||
@ -419,12 +423,19 @@ func init() {
|
|||||||
addPrefFlagMapping("snat-subnet-routes", "NoSNAT")
|
addPrefFlagMapping("snat-subnet-routes", "NoSNAT")
|
||||||
addPrefFlagMapping("exit-node", "ExitNodeIP", "ExitNodeIP")
|
addPrefFlagMapping("exit-node", "ExitNodeIP", "ExitNodeIP")
|
||||||
addPrefFlagMapping("exit-node-allow-lan-access", "ExitNodeAllowLANAccess")
|
addPrefFlagMapping("exit-node-allow-lan-access", "ExitNodeAllowLANAccess")
|
||||||
|
addPrefFlagMapping("unattended", "ForceDaemon")
|
||||||
}
|
}
|
||||||
|
|
||||||
func addPrefFlagMapping(flagName string, prefNames ...string) {
|
func addPrefFlagMapping(flagName string, prefNames ...string) {
|
||||||
prefsOfFlag[flagName] = prefNames
|
prefsOfFlag[flagName] = prefNames
|
||||||
|
prefType := reflect.TypeOf(ipn.Prefs{})
|
||||||
for _, pref := range prefNames {
|
for _, pref := range prefNames {
|
||||||
flagForPref[pref] = flagName
|
flagForPref[pref] = flagName
|
||||||
|
|
||||||
|
// Crash at runtime if there's a typo in the prefName.
|
||||||
|
if _, ok := prefType.FieldByName(pref); !ok {
|
||||||
|
panic(fmt.Sprintf("invalid ipn.Prefs field %q", pref))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user