cmd/tailscale/cli: add a hidden configure subcommand

Also make `tailscale configure-host` an alias to `tailscale configure synology`

Updates #7220

Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
Maisem Ali 2023-02-08 15:03:05 -08:00
parent 6927a844b1
commit 181a3da513
3 changed files with 51 additions and 5 deletions

View File

@ -150,6 +150,8 @@ func Run(args []string) (err error) {
rootCmd.Subcommands = append(rootCmd.Subcommands, serveCmd) rootCmd.Subcommands = append(rootCmd.Subcommands, serveCmd)
case slices.Contains(args, "update"): case slices.Contains(args, "update"):
rootCmd.Subcommands = append(rootCmd.Subcommands, updateCmd) rootCmd.Subcommands = append(rootCmd.Subcommands, updateCmd)
case slices.Contains(args, "configure"):
rootCmd.Subcommands = append(rootCmd.Subcommands, configureCmd)
} }
if runtime.GOOS == "linux" && distro.Get() == distro.Synology { if runtime.GOOS == "linux" && distro.Get() == distro.Synology {
rootCmd.Subcommands = append(rootCmd.Subcommands, configureHostCmd) rootCmd.Subcommands = append(rootCmd.Subcommands, configureHostCmd)

View File

@ -18,9 +18,23 @@
"tailscale.com/version/distro" "tailscale.com/version/distro"
) )
// configureHostCmd is the "tailscale configure-host" command which
// was once used to configure Synology devices, but is now a redirect
// to "tailscale configure synology".
var configureHostCmd = &ffcli.Command{ var configureHostCmd = &ffcli.Command{
Name: "configure-host", Name: "configure-host",
Exec: runConfigureHost, Exec: runConfigureSynology,
ShortHelp: synologyConfigureCmd.ShortHelp,
LongHelp: synologyConfigureCmd.LongHelp,
FlagSet: (func() *flag.FlagSet {
fs := newFlagSet("configure-host")
return fs
})(),
}
var synologyConfigureCmd = &ffcli.Command{
Name: "synology",
Exec: runConfigureSynology,
ShortHelp: "Configure Synology to enable more Tailscale features", ShortHelp: "Configure Synology to enable more Tailscale features",
LongHelp: strings.TrimSpace(` LongHelp: strings.TrimSpace(`
The 'configure-host' command is intended to run at boot as root The 'configure-host' command is intended to run at boot as root
@ -30,14 +44,12 @@
See: https://tailscale.com/kb/1152/synology-outbound/ See: https://tailscale.com/kb/1152/synology-outbound/
`), `),
FlagSet: (func() *flag.FlagSet { FlagSet: (func() *flag.FlagSet {
fs := newFlagSet("configure-host") fs := newFlagSet("synology")
return fs return fs
})(), })(),
} }
var configureHostArgs struct{} func runConfigureSynology(ctx context.Context, args []string) error {
func runConfigureHost(ctx context.Context, args []string) error {
if len(args) > 0 { if len(args) > 0 {
return errors.New("unknown arguments") return errors.New("unknown arguments")
} }

View File

@ -0,0 +1,32 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package cli
import (
"context"
"flag"
"runtime"
"github.com/peterbourgon/ff/v3/ffcli"
"tailscale.com/version/distro"
)
var configureCmd = &ffcli.Command{
Name: "configure",
FlagSet: (func() *flag.FlagSet {
fs := newFlagSet("configure")
return fs
})(),
Subcommands: configureSubcommands(),
Exec: func(ctx context.Context, args []string) error {
return flag.ErrHelp
},
}
func configureSubcommands() (out []*ffcli.Command) {
if runtime.GOOS == "linux" && distro.Get() == distro.Synology {
out = append(out, synologyConfigureCmd)
}
return out
}