/* * Copyright (c)2013-2020 ZeroTier, Inc. * * Use of this software is governed by the Business Source License included * in the LICENSE.TXT file in the project's root directory. * * Change Date: 2025-01-01 * * On the date above, in accordance with the Business Source License, use * of this software will be governed by version 2.0 of the Apache License. */ /****/ package cli import ( "fmt" "strings" "zerotier/pkg/zerotier" ) func Peers(basePath, authToken string, args []string, jsonOutput bool, rootsOnly bool) int { var peers []zerotier.Peer apiGet(basePath, authToken, "/peer", &peers) if rootsOnly { roots := make([]zerotier.Peer, 0, len(peers)) for i := range peers { if peers[i].Root { roots = append(roots, peers[i]) } } peers = roots } if jsonOutput { fmt.Println(jsonDump(&peers)) } else { fmt.Printf("
\n") for _, peer := range peers { root := "" if peer.Root { root = " *" } var paths strings.Builder if len(peer.Paths) > 0 { if paths.Len() > 0 { paths.WriteRune(' ') } paths.WriteString(peer.Paths[0].Endpoint.String()) } else { paths.WriteString("(relayed)") } fmt.Printf("%.10x %-7s %-6s %-9d %s\n", uint64(peer.Address), fmt.Sprintf("%d.%d.%d", peer.Version[0], peer.Version[1], peer.Version[2]), root, peer.Latency, paths.String()) } } return 0 }