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

57 lines
1.2 KiB
Go

package main
import (
E "github.com/sagernet/sing/common/exceptions"
"github.com/spf13/cobra"
)
var commandAPITailscaleTaildropTargets = &cobra.Command{
Use: "targets",
Short: "List peers that can receive files",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return runAPITaildropTargets()
},
}
func init() {
commandAPITailscaleTaildrop.AddCommand(commandAPITailscaleTaildropTargets)
}
func runAPITaildropTargets() error {
clientConn, client, err := createAPIClient()
if err != nil {
return err
}
defer clientConn.Close()
endpoint, err := fetchTailscaleEndpoint(client)
if err != nil {
return err
}
if !endpoint.GetCanShareFiles() {
return E.New("file sharing not enabled by Tailscale admin")
}
entries := tailscalePeerEntries(endpoint)
if len(entries) > 0 && entries[0].self {
entries = entries[1:]
}
sortTailscalePeerEntries(entries)
table := tableWriter{
header: []string{"DNS NAME", "IP", "ONLINE"},
emptyMessage: "no file targets",
}
for _, entry := range entries {
if !entry.peer.GetCanReceiveFiles() {
continue
}
table.addRow(
tailscalePeerName(entry.peer),
tailscalePeerAddress(entry.peer),
formatYesNo(entry.peer.GetOnline()),
)
}
table.flush()
return nil
}