Files
sing-box-extended-mirror/cmd/sing-box/cmd_api_tailscale_exit_node.go
T
2026-08-30 17:41:45 +08:00

49 lines
1.1 KiB
Go

package main
import (
"os"
F "github.com/sagernet/sing/common/format"
"github.com/spf13/cobra"
)
var commandAPITailscaleExitNode = &cobra.Command{
Use: "exit-node",
Short: "Print the current Tailscale exit node",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return runAPITailscaleExitNode()
},
}
func init() {
commandAPITailscaleExitNode.PersistentFlags().StringVar(&commandAPITailscaleFlagEndpoint, "endpoint", "", commandAPITailscaleEndpointUsage)
commandAPITailscale.AddCommand(commandAPITailscaleExitNode)
}
func runAPITailscaleExitNode() error {
clientConn, client, err := createAPIClient()
if err != nil {
return err
}
defer clientConn.Close()
endpoint, err := fetchTailscaleEndpoint(client)
if err != nil {
return err
}
exitNode := endpoint.GetExitNode()
if exitNode == nil {
os.Stdout.WriteString("none\n")
return nil
}
name := tailscalePeerName(exitNode)
address := tailscalePeerAddress(exitNode)
if address == "" {
os.Stdout.WriteString(name + "\n")
return nil
}
os.Stdout.WriteString(F.ToString(name, " (", address, ")", "\n"))
return nil
}