diff options
Diffstat (limited to 'cmd/tailscaled/cli/down.go')
| -rw-r--r-- | cmd/tailscaled/cli/down.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cmd/tailscaled/cli/down.go b/cmd/tailscaled/cli/down.go new file mode 100644 index 000000000..c0a9034fe --- /dev/null +++ b/cmd/tailscaled/cli/down.go @@ -0,0 +1,46 @@ +// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cli + +import ( + "context" + "fmt" + "log" + "os" + + "github.com/peterbourgon/ff/v2/ffcli" + "tailscale.com/client/tailscale" + "tailscale.com/ipn" +) + +var downCmd = &ffcli.Command{ + Name: "down", + ShortUsage: "down", + ShortHelp: "Disconnect from Tailscale", + + Exec: runDown, +} + +func runDown(ctx context.Context, args []string) error { + if len(args) > 0 { + log.Fatalf("too many non-flag arguments: %q", args) + } + + st, err := tailscale.Status(ctx) + if err != nil { + return fmt.Errorf("error fetching current status: %w", err) + } + if st.BackendState == "Stopped" { + fmt.Fprintf(os.Stderr, "Tailscale was already stopped.\n") + return nil + } + _, err = tailscale.EditPrefs(ctx, &ipn.MaskedPrefs{ + Prefs: ipn.Prefs{ + WantRunning: false, + }, + WantRunningSet: true, + }) + return err +} |
