cmd/tailscale/cli, derp: use client/local instead of deprecated client/tailscale (#17061)
* cmd/tailscale/cli: use client/local instead of deprecated client/tailscale Updates tailscale/corp#22748 Signed-off-by: Alex Chan <alexc@tailscale.com> * derp: use client/local instead of deprecated client/tailscale Updates tailscale/corp#22748 Signed-off-by: Alex Chan <alexc@tailscale.com> --------- Signed-off-by: Alex Chan <alexc@tailscale.com>
This commit is contained in:
@@ -89,9 +89,8 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
google.golang.org/protobuf/types/known/timestamppb from github.com/prometheus/client_golang/prometheus+
|
google.golang.org/protobuf/types/known/timestamppb from github.com/prometheus/client_golang/prometheus+
|
||||||
tailscale.com from tailscale.com/version
|
tailscale.com from tailscale.com/version
|
||||||
💣 tailscale.com/atomicfile from tailscale.com/cmd/derper+
|
💣 tailscale.com/atomicfile from tailscale.com/cmd/derper+
|
||||||
tailscale.com/client/local from tailscale.com/client/tailscale+
|
tailscale.com/client/local from tailscale.com/derp
|
||||||
tailscale.com/client/tailscale from tailscale.com/derp
|
tailscale.com/client/tailscale/apitype from tailscale.com/client/local
|
||||||
tailscale.com/client/tailscale/apitype from tailscale.com/client/tailscale+
|
|
||||||
tailscale.com/derp from tailscale.com/cmd/derper+
|
tailscale.com/derp from tailscale.com/cmd/derper+
|
||||||
tailscale.com/derp/derpconst from tailscale.com/derp+
|
tailscale.com/derp/derpconst from tailscale.com/derp+
|
||||||
tailscale.com/derp/derphttp from tailscale.com/cmd/derper
|
tailscale.com/derp/derphttp from tailscale.com/cmd/derper
|
||||||
@@ -142,7 +141,7 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
tailscale.com/types/lazy from tailscale.com/version+
|
tailscale.com/types/lazy from tailscale.com/version+
|
||||||
tailscale.com/types/logger from tailscale.com/cmd/derper+
|
tailscale.com/types/logger from tailscale.com/cmd/derper+
|
||||||
tailscale.com/types/netmap from tailscale.com/ipn
|
tailscale.com/types/netmap from tailscale.com/ipn
|
||||||
tailscale.com/types/opt from tailscale.com/client/tailscale+
|
tailscale.com/types/opt from tailscale.com/envknob+
|
||||||
tailscale.com/types/persist from tailscale.com/ipn
|
tailscale.com/types/persist from tailscale.com/ipn
|
||||||
tailscale.com/types/preftype from tailscale.com/ipn
|
tailscale.com/types/preftype from tailscale.com/ipn
|
||||||
tailscale.com/types/ptr from tailscale.com/hostinfo+
|
tailscale.com/types/ptr from tailscale.com/hostinfo+
|
||||||
@@ -160,7 +159,6 @@ tailscale.com/cmd/derper dependencies: (generated by github.com/tailscale/depawa
|
|||||||
tailscale.com/util/dnsname from tailscale.com/hostinfo+
|
tailscale.com/util/dnsname from tailscale.com/hostinfo+
|
||||||
tailscale.com/util/eventbus from tailscale.com/net/netmon+
|
tailscale.com/util/eventbus from tailscale.com/net/netmon+
|
||||||
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
||||||
tailscale.com/util/httpm from tailscale.com/client/tailscale
|
|
||||||
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
||||||
L tailscale.com/util/linuxfw from tailscale.com/net/netns
|
L tailscale.com/util/linuxfw from tailscale.com/net/netns
|
||||||
tailscale.com/util/mak from tailscale.com/health+
|
tailscale.com/util/mak from tailscale.com/health+
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
)
|
)
|
||||||
|
|
||||||
var bugReportCmd = &ffcli.Command{
|
var bugReportCmd = &ffcli.Command{
|
||||||
@@ -40,7 +40,7 @@ func runBugReport(ctx context.Context, args []string) error {
|
|||||||
default:
|
default:
|
||||||
return errors.New("unknown arguments")
|
return errors.New("unknown arguments")
|
||||||
}
|
}
|
||||||
opts := tailscale.BugReportOpts{
|
opts := local.BugReportOpts{
|
||||||
Note: note,
|
Note: note,
|
||||||
Diagnose: bugReportArgs.diagnose,
|
Diagnose: bugReportArgs.diagnose,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import (
|
|||||||
"github.com/mattn/go-isatty"
|
"github.com/mattn/go-isatty"
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/local"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/client/tailscale"
|
|
||||||
"tailscale.com/cmd/tailscale/cli/ffcomplete"
|
"tailscale.com/cmd/tailscale/cli/ffcomplete"
|
||||||
"tailscale.com/envknob"
|
"tailscale.com/envknob"
|
||||||
"tailscale.com/paths"
|
"tailscale.com/paths"
|
||||||
@@ -113,7 +112,7 @@ func Run(args []string) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var warnOnce sync.Once
|
var warnOnce sync.Once
|
||||||
tailscale.SetVersionMismatchHandler(func(clientVer, serverVer string) {
|
local.SetVersionMismatchHandler(func(clientVer, serverVer string) {
|
||||||
warnOnce.Do(func() {
|
warnOnce.Do(func() {
|
||||||
fmt.Fprintf(Stderr, "Warning: client version %q != tailscaled server version %q\n", clientVer, serverVer)
|
fmt.Fprintf(Stderr, "Warning: client version %q != tailscaled server version %q\n", clientVer, serverVer)
|
||||||
})
|
})
|
||||||
@@ -164,7 +163,7 @@ func Run(args []string) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = rootCmd.Run(context.Background())
|
err = rootCmd.Run(context.Background())
|
||||||
if tailscale.IsAccessDeniedError(err) && os.Getuid() != 0 && runtime.GOOS != "windows" {
|
if local.IsAccessDeniedError(err) && os.Getuid() != 0 && runtime.GOOS != "windows" {
|
||||||
return fmt.Errorf("%v\n\nUse 'sudo tailscale %s'.\nTo not require root, use 'sudo tailscale set --operator=$USER' once.", err, strings.Join(args, " "))
|
return fmt.Errorf("%v\n\nUse 'sudo tailscale %s'.\nTo not require root, use 'sudo tailscale set --operator=$USER' once.", err, strings.Join(args, " "))
|
||||||
}
|
}
|
||||||
if errors.Is(err, flag.ErrHelp) {
|
if errors.Is(err, flag.ErrHelp) {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import (
|
|||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"golang.org/x/net/http/httpproxy"
|
"golang.org/x/net/http/httpproxy"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/client/tailscale/apitype"
|
"tailscale.com/client/tailscale/apitype"
|
||||||
"tailscale.com/control/controlhttp"
|
"tailscale.com/control/controlhttp"
|
||||||
"tailscale.com/hostinfo"
|
"tailscale.com/hostinfo"
|
||||||
@@ -1219,7 +1219,7 @@ var debugPortmapArgs struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func debugPortmap(ctx context.Context, args []string) error {
|
func debugPortmap(ctx context.Context, args []string) error {
|
||||||
opts := &tailscale.DebugPortmapOpts{
|
opts := &local.DebugPortmapOpts{
|
||||||
Duration: debugPortmapArgs.duration,
|
Duration: debugPortmapArgs.duration,
|
||||||
Type: debugPortmapArgs.ty,
|
Type: debugPortmapArgs.ty,
|
||||||
LogHTTP: debugPortmapArgs.logHTTP,
|
LogHTTP: debugPortmapArgs.logHTTP,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/cmd/tailscale/cli/ffcomplete"
|
"tailscale.com/cmd/tailscale/cli/ffcomplete"
|
||||||
"tailscale.com/ipn/ipnstate"
|
"tailscale.com/ipn/ipnstate"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
@@ -128,7 +128,7 @@ func runPing(ctx context.Context, args []string) error {
|
|||||||
for {
|
for {
|
||||||
n++
|
n++
|
||||||
ctx, cancel := context.WithTimeout(ctx, pingArgs.timeout)
|
ctx, cancel := context.WithTimeout(ctx, pingArgs.timeout)
|
||||||
pr, err := localClient.PingWithOpts(ctx, netip.MustParseAddr(ip), pingType(), tailscale.PingOpts{Size: pingArgs.size})
|
pr, err := localClient.PingWithOpts(ctx, netip.MustParseAddr(ip), pingType(), local.PingOpts{Size: pingArgs.size})
|
||||||
cancel()
|
cancel()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, context.DeadlineExceeded) {
|
if errors.Is(err, context.DeadlineExceeded) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/ipn"
|
"tailscale.com/ipn"
|
||||||
"tailscale.com/ipn/ipnstate"
|
"tailscale.com/ipn/ipnstate"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
@@ -139,7 +139,7 @@ type localServeClient interface {
|
|||||||
GetServeConfig(context.Context) (*ipn.ServeConfig, error)
|
GetServeConfig(context.Context) (*ipn.ServeConfig, error)
|
||||||
SetServeConfig(context.Context, *ipn.ServeConfig) error
|
SetServeConfig(context.Context, *ipn.ServeConfig) error
|
||||||
QueryFeature(ctx context.Context, feature string) (*tailcfg.QueryFeatureResponse, error)
|
QueryFeature(ctx context.Context, feature string) (*tailcfg.QueryFeatureResponse, error)
|
||||||
WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*tailscale.IPNBusWatcher, error)
|
WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*local.IPNBusWatcher, error)
|
||||||
IncrementCounter(ctx context.Context, name string, delta int) error
|
IncrementCounter(ctx context.Context, name string, delta int) error
|
||||||
GetPrefs(ctx context.Context) (*ipn.Prefs, error)
|
GetPrefs(ctx context.Context) (*ipn.Prefs, error)
|
||||||
EditPrefs(ctx context.Context, mp *ipn.MaskedPrefs) (*ipn.Prefs, error)
|
EditPrefs(ctx context.Context, mp *ipn.MaskedPrefs) (*ipn.Prefs, error)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/ipn"
|
"tailscale.com/ipn"
|
||||||
"tailscale.com/ipn/ipnstate"
|
"tailscale.com/ipn/ipnstate"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
@@ -925,7 +925,7 @@ func (lc *fakeLocalServeClient) QueryFeature(ctx context.Context, feature string
|
|||||||
return &tailcfg.QueryFeatureResponse{Complete: true}, nil // fallback to already enabled
|
return &tailcfg.QueryFeatureResponse{Complete: true}, nil // fallback to already enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lc *fakeLocalServeClient) WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*tailscale.IPNBusWatcher, error) {
|
func (lc *fakeLocalServeClient) WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*local.IPNBusWatcher, error) {
|
||||||
return nil, nil // unused in tests
|
return nil, nil // unused in tests
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/peterbourgon/ff/v3/ffcli"
|
"github.com/peterbourgon/ff/v3/ffcli"
|
||||||
"tailscale.com/client/tailscale"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/ipn"
|
"tailscale.com/ipn"
|
||||||
"tailscale.com/ipn/ipnstate"
|
"tailscale.com/ipn/ipnstate"
|
||||||
"tailscale.com/tailcfg"
|
"tailscale.com/tailcfg"
|
||||||
@@ -365,7 +365,7 @@ func (e *serveEnv) runServeCombined(subcmd serveMode) execFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var watcher *tailscale.IPNBusWatcher
|
var watcher *local.IPNBusWatcher
|
||||||
svcName := noService
|
svcName := noService
|
||||||
|
|
||||||
if forService {
|
if forService {
|
||||||
@@ -426,7 +426,7 @@ func (e *serveEnv) runServeCombined(subcmd serveMode) execFunc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := e.lc.SetServeConfig(ctx, parentSC); err != nil {
|
if err := e.lc.SetServeConfig(ctx, parentSC); err != nil {
|
||||||
if tailscale.IsPreconditionsFailedError(err) {
|
if local.IsPreconditionsFailedError(err) {
|
||||||
fmt.Fprintln(e.stderr(), "Another client is changing the serve config; please try again.")
|
fmt.Fprintln(e.stderr(), "Another client is changing the serve config; please try again.")
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep
|
|||||||
💣 tailscale.com/atomicfile from tailscale.com/cmd/tailscale/cli+
|
💣 tailscale.com/atomicfile from tailscale.com/cmd/tailscale/cli+
|
||||||
tailscale.com/client/local from tailscale.com/client/tailscale+
|
tailscale.com/client/local from tailscale.com/client/tailscale+
|
||||||
L tailscale.com/client/systray from tailscale.com/cmd/tailscale/cli
|
L tailscale.com/client/systray from tailscale.com/cmd/tailscale/cli
|
||||||
tailscale.com/client/tailscale from tailscale.com/cmd/tailscale/cli+
|
tailscale.com/client/tailscale from tailscale.com/internal/client/tailscale
|
||||||
tailscale.com/client/tailscale/apitype from tailscale.com/client/tailscale+
|
tailscale.com/client/tailscale/apitype from tailscale.com/client/tailscale+
|
||||||
tailscale.com/client/web from tailscale.com/cmd/tailscale/cli
|
tailscale.com/client/web from tailscale.com/cmd/tailscale/cli
|
||||||
tailscale.com/clientupdate from tailscale.com/client/web+
|
tailscale.com/clientupdate from tailscale.com/client/web+
|
||||||
|
|||||||
@@ -244,9 +244,8 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de
|
|||||||
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
||||||
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
||||||
LD tailscale.com/chirp from tailscale.com/cmd/tailscaled
|
LD tailscale.com/chirp from tailscale.com/cmd/tailscaled
|
||||||
tailscale.com/client/local from tailscale.com/client/tailscale+
|
tailscale.com/client/local from tailscale.com/client/web+
|
||||||
tailscale.com/client/tailscale from tailscale.com/derp
|
tailscale.com/client/tailscale/apitype from tailscale.com/client/local+
|
||||||
tailscale.com/client/tailscale/apitype from tailscale.com/client/tailscale+
|
|
||||||
tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
||||||
tailscale.com/clientupdate from tailscale.com/client/web+
|
tailscale.com/clientupdate from tailscale.com/client/web+
|
||||||
LW tailscale.com/clientupdate/distsign from tailscale.com/clientupdate
|
LW tailscale.com/clientupdate/distsign from tailscale.com/clientupdate
|
||||||
@@ -388,7 +387,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de
|
|||||||
tailscale.com/types/netlogtype from tailscale.com/net/connstats+
|
tailscale.com/types/netlogtype from tailscale.com/net/connstats+
|
||||||
tailscale.com/types/netmap from tailscale.com/control/controlclient+
|
tailscale.com/types/netmap from tailscale.com/control/controlclient+
|
||||||
tailscale.com/types/nettype from tailscale.com/ipn/localapi+
|
tailscale.com/types/nettype from tailscale.com/ipn/localapi+
|
||||||
tailscale.com/types/opt from tailscale.com/client/tailscale+
|
tailscale.com/types/opt from tailscale.com/control/controlknobs+
|
||||||
tailscale.com/types/persist from tailscale.com/control/controlclient+
|
tailscale.com/types/persist from tailscale.com/control/controlclient+
|
||||||
tailscale.com/types/preftype from tailscale.com/ipn+
|
tailscale.com/types/preftype from tailscale.com/ipn+
|
||||||
tailscale.com/types/ptr from tailscale.com/control/controlclient+
|
tailscale.com/types/ptr from tailscale.com/control/controlclient+
|
||||||
@@ -410,7 +409,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de
|
|||||||
tailscale.com/util/groupmember from tailscale.com/client/web+
|
tailscale.com/util/groupmember from tailscale.com/client/web+
|
||||||
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
💣 tailscale.com/util/hashx from tailscale.com/util/deephash
|
||||||
tailscale.com/util/httphdr from tailscale.com/feature/taildrop
|
tailscale.com/util/httphdr from tailscale.com/feature/taildrop
|
||||||
tailscale.com/util/httpm from tailscale.com/client/tailscale+
|
tailscale.com/util/httpm from tailscale.com/client/web+
|
||||||
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
tailscale.com/util/lineiter from tailscale.com/hostinfo+
|
||||||
L tailscale.com/util/linuxfw from tailscale.com/net/netns+
|
L tailscale.com/util/linuxfw from tailscale.com/net/netns+
|
||||||
tailscale.com/util/mak from tailscale.com/control/controlclient+
|
tailscale.com/util/mak from tailscale.com/control/controlclient+
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ tailscale.com/cmd/tsidp dependencies: (generated by github.com/tailscale/depawar
|
|||||||
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
||||||
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
||||||
tailscale.com/client/local from tailscale.com/client/tailscale+
|
tailscale.com/client/local from tailscale.com/client/tailscale+
|
||||||
tailscale.com/client/tailscale from tailscale.com/derp+
|
tailscale.com/client/tailscale from tailscale.com/tsnet
|
||||||
tailscale.com/client/tailscale/apitype from tailscale.com/client/local+
|
tailscale.com/client/tailscale/apitype from tailscale.com/client/local+
|
||||||
tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
||||||
tailscale.com/clientupdate from tailscale.com/client/web+
|
tailscale.com/clientupdate from tailscale.com/client/web+
|
||||||
|
|||||||
+1
-2
@@ -38,7 +38,6 @@ import (
|
|||||||
"go4.org/mem"
|
"go4.org/mem"
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
"tailscale.com/client/local"
|
"tailscale.com/client/local"
|
||||||
"tailscale.com/client/tailscale"
|
|
||||||
"tailscale.com/derp/derpconst"
|
"tailscale.com/derp/derpconst"
|
||||||
"tailscale.com/disco"
|
"tailscale.com/disco"
|
||||||
"tailscale.com/envknob"
|
"tailscale.com/envknob"
|
||||||
@@ -1384,7 +1383,7 @@ func (s *Server) verifyClient(ctx context.Context, clientKey key.NodePublic, inf
|
|||||||
// tailscaled-based verification:
|
// tailscaled-based verification:
|
||||||
if s.verifyClientsLocalTailscaled {
|
if s.verifyClientsLocalTailscaled {
|
||||||
_, err := s.localClient.WhoIsNodeKey(ctx, clientKey)
|
_, err := s.localClient.WhoIsNodeKey(ctx, clientKey)
|
||||||
if err == tailscale.ErrPeerNotFound {
|
if err == local.ErrPeerNotFound {
|
||||||
return fmt.Errorf("peer %v not authorized (not found in local tailscaled)", clientKey)
|
return fmt.Errorf("peer %v not authorized (not found in local tailscaled)", clientKey)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
+1
-1
@@ -214,7 +214,7 @@ tailscale.com/tsnet dependencies: (generated by github.com/tailscale/depaware)
|
|||||||
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
tailscale.com/appc from tailscale.com/ipn/ipnlocal
|
||||||
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
💣 tailscale.com/atomicfile from tailscale.com/ipn+
|
||||||
tailscale.com/client/local from tailscale.com/client/tailscale+
|
tailscale.com/client/local from tailscale.com/client/tailscale+
|
||||||
tailscale.com/client/tailscale from tailscale.com/derp+
|
tailscale.com/client/tailscale from tailscale.com/tsnet
|
||||||
tailscale.com/client/tailscale/apitype from tailscale.com/client/local+
|
tailscale.com/client/tailscale/apitype from tailscale.com/client/local+
|
||||||
LDW tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
LDW tailscale.com/client/web from tailscale.com/ipn/ipnlocal
|
||||||
tailscale.com/clientupdate from tailscale.com/client/web+
|
tailscale.com/clientupdate from tailscale.com/client/web+
|
||||||
|
|||||||
Reference in New Issue
Block a user