cmd/tailscale/cli: don't complain about --accept-routes true->false on Synology

Fixes #3176

Change-Id: I844883e741dccfa5e7771c853180e9f65fb7f7a4
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
(cherry picked from commit 105c545366)
This commit is contained in:
Brad Fitzpatrick 2021-11-29 10:57:21 -08:00
parent d79aad2b89
commit 7dd677043d
2 changed files with 41 additions and 0 deletions

View File

@ -20,6 +20,7 @@
"tailscale.com/tstest" "tailscale.com/tstest"
"tailscale.com/types/persist" "tailscale.com/types/persist"
"tailscale.com/types/preftype" "tailscale.com/types/preftype"
"tailscale.com/version/distro"
) )
// geese is a collection of gooses. It need not be complete. // geese is a collection of gooses. It need not be complete.
@ -57,6 +58,7 @@ func TestCheckForAccidentalSettingReverts(t *testing.T) {
curExitNodeIP netaddr.IP curExitNodeIP netaddr.IP
curUser string // os.Getenv("USER") on the client side curUser string // os.Getenv("USER") on the client side
goos string // empty means "linux" goos string // empty means "linux"
distro distro.Distro
want string want string
}{ }{
@ -427,6 +429,38 @@ func TestCheckForAccidentalSettingReverts(t *testing.T) {
}, },
want: accidentalUpPrefix + " --netfilter-mode=off --accept-dns=false", want: accidentalUpPrefix + " --netfilter-mode=off --accept-dns=false",
}, },
{
// Issue 3176: on Synology, don't require --accept-routes=false because user
// migth've had old an install, and we don't support --accept-routes anyway.
name: "synology_permit_omit_accept_routes",
flags: []string{"--hostname=foo"},
curPrefs: &ipn.Prefs{
ControlURL: "https://login.tailscale.com",
CorpDNS: true,
AllowSingleHosts: true,
RouteAll: true,
NetfilterMode: preftype.NetfilterOn,
},
goos: "linux",
distro: distro.Synology,
want: "",
},
{
// Same test case as "synology_permit_omit_accept_routes" above, but
// on non-Synology distro.
name: "not_synology_dont_permit_omit_accept_routes",
flags: []string{"--hostname=foo"},
curPrefs: &ipn.Prefs{
ControlURL: "https://login.tailscale.com",
CorpDNS: true,
AllowSingleHosts: true,
RouteAll: true,
NetfilterMode: preftype.NetfilterOn,
},
goos: "linux",
distro: "", // not Synology
want: accidentalUpPrefix + " --hostname=foo --accept-routes",
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
@ -447,6 +481,7 @@ func TestCheckForAccidentalSettingReverts(t *testing.T) {
goos: goos, goos: goos,
flagSet: flagSet, flagSet: flagSet,
curExitNodeIP: tt.curExitNodeIP, curExitNodeIP: tt.curExitNodeIP,
distro: tt.distro,
}); err != nil { }); err != nil {
got = err.Error() got = err.Error()
} }

View File

@ -380,6 +380,7 @@ func runUp(ctx context.Context, args []string) error {
env := upCheckEnv{ env := upCheckEnv{
goos: effectiveGOOS(), goos: effectiveGOOS(),
distro: distro.Get(),
user: os.Getenv("USER"), user: os.Getenv("USER"),
flagSet: upFlagSet, flagSet: upFlagSet,
upArgs: upArgs, upArgs: upArgs,
@ -622,6 +623,7 @@ type upCheckEnv struct {
upArgs upArgsT upArgs upArgsT
backendState string backendState string
curExitNodeIP netaddr.IP curExitNodeIP netaddr.IP
distro distro.Distro
} }
// checkForAccidentalSettingReverts (the "up checker") checks for // checkForAccidentalSettingReverts (the "up checker") checks for
@ -672,6 +674,10 @@ func checkForAccidentalSettingReverts(newPrefs, curPrefs *ipn.Prefs, env upCheck
if flagName == "login-server" && ipn.IsLoginServerSynonym(valCur) && ipn.IsLoginServerSynonym(valNew) { if flagName == "login-server" && ipn.IsLoginServerSynonym(valCur) && ipn.IsLoginServerSynonym(valNew) {
continue continue
} }
if flagName == "accept-routes" && valNew == false && env.goos == "linux" && env.distro == distro.Synology {
// Issue 3176. Old prefs had 'RouteAll: true' on disk, so ignore that.
continue
}
missing = append(missing, fmtFlagValueArg(flagName, valCur)) missing = append(missing, fmtFlagValueArg(flagName, valCur))
} }
if len(missing) == 0 { if len(missing) == 0 {