WIP
This commit is contained in:
parent
c6d35856bc
commit
fccc4f7d57
@ -6,8 +6,8 @@ import (
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/netip"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Usage:
|
||||
@ -119,35 +119,32 @@ func main_status() {
|
||||
log.Fatalf("Failed to decode status report: %v", err)
|
||||
}
|
||||
|
||||
b := strings.Builder{}
|
||||
fmt.Printf("\n%s Status\n\n", netName)
|
||||
|
||||
if len(report.Network) != 4 {
|
||||
fmt.Printf("Network: %v\n\n", report.Network)
|
||||
} else {
|
||||
nw := report.Network
|
||||
fmt.Printf("Network: %d.%d.%d.%d/24\n\n", nw[0], nw[1], nw[2], nw[3])
|
||||
}
|
||||
|
||||
for _, status := range report.Remotes {
|
||||
b.WriteString(fmt.Sprintf("%3d ", status.PeerIP))
|
||||
if status.Up {
|
||||
b.WriteString("UP ")
|
||||
fmt.Printf("%3d %s\n", status.PeerIP, status.Name)
|
||||
fmt.Printf(" %-11s %v\n", "Up", status.Up)
|
||||
|
||||
pubIP, ok := netip.AddrFromSlice(status.PublicIP)
|
||||
if ok {
|
||||
fmt.Printf(" %-11s %v\n", "Public IP", pubIP)
|
||||
} else {
|
||||
b.WriteString("DOWN ")
|
||||
fmt.Printf(" %-11s\n", "Public IP")
|
||||
}
|
||||
if status.Relay && status.Direct {
|
||||
b.WriteString("RELAY ")
|
||||
} else if status.Server {
|
||||
b.WriteString("SERVER ")
|
||||
} else {
|
||||
b.WriteString("CLIENT ")
|
||||
fmt.Printf(" %-11s %d\n", "Port", status.Port)
|
||||
fmt.Printf(" %-11s %v\n", "Relay", status.Relay)
|
||||
fmt.Printf(" %-11s %v\n", "Server", status.Server)
|
||||
fmt.Printf(" %-11s %v\n", "Direct", status.Direct)
|
||||
if status.DirectAddr.IsValid() {
|
||||
fmt.Printf(" %-11s %v\n", "Address", status.DirectAddr)
|
||||
}
|
||||
|
||||
if status.Direct {
|
||||
b.WriteString("DIRECT ")
|
||||
} else {
|
||||
b.WriteString("RELAYED ")
|
||||
fmt.Println("")
|
||||
}
|
||||
|
||||
b.WriteString(fmt.Sprintf("%45s ", status.DirectAddr))
|
||||
|
||||
b.WriteString(status.Name)
|
||||
|
||||
b.WriteString("\n")
|
||||
}
|
||||
|
||||
fmt.Print(b.String())
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
)
|
||||
|
||||
type StatusReport struct {
|
||||
Network []byte
|
||||
RelayPeerIP byte
|
||||
Remotes []RemoteStatus
|
||||
}
|
||||
@ -31,8 +32,15 @@ func runStatusServer(g Globals, socketPath string) {
|
||||
|
||||
handler := func(w http.ResponseWriter, r *http.Request) {
|
||||
report := StatusReport{
|
||||
Network: g.Network,
|
||||
Remotes: make([]RemoteStatus, 0, 255),
|
||||
}
|
||||
|
||||
relayStatus, ok := g.RelayHandler.Load().Status()
|
||||
if ok {
|
||||
report.RelayPeerIP = relayStatus.PeerIP
|
||||
}
|
||||
|
||||
for i := range g.RemotePeers {
|
||||
remote := g.RemotePeers[i].Load()
|
||||
status, ok := remote.Status()
|
||||
@ -41,6 +49,7 @@ func runStatusServer(g Globals, socketPath string) {
|
||||
}
|
||||
report.Remotes = append(report.Remotes, status)
|
||||
}
|
||||
|
||||
json.NewEncoder(w).Encode(report)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user