mirror of
https://github.com/tailscale/tailscale.git
synced 2026-03-25 17:53:03 -04:00
cmd/tailscale/cli: add a debug command to print the statedir
Example: ```console $ tailscale debug statedir /tmp/ts/node1 ``` Updates #18019 Change-Id: I7c93c94179bd7b56d0fa8fe57a9129df05c2c1df Signed-off-by: Alex Chan <alexc@tailscale.com>
This commit is contained in:
@@ -387,6 +387,12 @@ func debugCmd() *ffcli.Command {
|
||||
return fs
|
||||
})(),
|
||||
},
|
||||
{
|
||||
Name: "statedir",
|
||||
ShortUsage: "tailscale debug statedir",
|
||||
ShortHelp: "Print the location of the state directory (if any)",
|
||||
Exec: runPrintStateDir,
|
||||
},
|
||||
ccall(debugPeerRelayCmd),
|
||||
}...),
|
||||
}
|
||||
@@ -1407,3 +1413,22 @@ func runTestRisk(ctx context.Context, args []string) error {
|
||||
fmt.Println("did-test-risky-action")
|
||||
return nil
|
||||
}
|
||||
|
||||
func runPrintStateDir(ctx context.Context, args []string) error {
|
||||
if len(args) > 0 {
|
||||
return errors.New("unexpected arguments")
|
||||
}
|
||||
v, err := localClient.DebugResultJSON(ctx, "statedir")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
statedir, ok := v.(string)
|
||||
if ok && statedir != "" {
|
||||
fmt.Println(statedir)
|
||||
return nil
|
||||
} else if ok && statedir == "" {
|
||||
return errors.New("no statedir is set")
|
||||
} else {
|
||||
return fmt.Errorf("got unexpected response from debug API: %v", v)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,6 +234,13 @@ func (h *Handler) serveDebug(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
case "rotate-disco-key":
|
||||
err = h.b.DebugRotateDiscoKey()
|
||||
case "statedir":
|
||||
root := h.b.TailscaleVarRoot()
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
err = json.NewEncoder(w).Encode(root)
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
case "":
|
||||
err = fmt.Errorf("missing parameter 'action'")
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user