diagd: make output look good in a terminal, too

curl diagd.router7/
This commit is contained in:
Michael Stapelberg 2020-03-11 22:07:36 +01:00
parent ffc4c21bcd
commit e67fb4dd71
3 changed files with 16 additions and 11 deletions

View File

@ -26,6 +26,7 @@ import (
"net/http"
"os"
"os/signal"
"strings"
"sync"
"syscall"
@ -49,14 +50,18 @@ func updateListeners() error {
return nil
}
func dump(w io.Writer, re *diag.EvalResult) {
func dump(indent int, w io.Writer, re *diag.EvalResult) {
symbol := "✔"
if re.Error {
symbol = "✘"
}
fmt.Fprintf(w, "<li>%s %s: %s<ul>", symbol, html.EscapeString(re.Name), html.EscapeString(re.Status))
fmt.Fprintf(w, "<li>\n%s%s %s: %s<ul>",
strings.Repeat(" ", indent),
symbol,
html.EscapeString(re.Name),
html.EscapeString(re.Status))
for _, ch := range re.Children {
dump(w, ch)
dump(indent+1, w, ch)
}
fmt.Fprintf(w, "</ul></li>")
}
@ -96,7 +101,7 @@ func logic() error {
re := m.Evaluate()
mu.Unlock()
fmt.Fprintf(w, `<!DOCTYPE html><style type="text/css">ul { list-style-type: none; }</style><ul>`)
dump(w, re)
dump(0, w, re)
})
http.HandleFunc("/health.json", func(w http.ResponseWriter, r *http.Request) {
mu.Lock()

View File

@ -34,7 +34,7 @@ type ping4gw struct {
}
func (d *ping4gw) String() string {
return "ping4/<default-gateway>"
return "ping4: $default-gateway"
}
func (d *ping4gw) Then(t Node) Node {
@ -93,7 +93,7 @@ type ping4 struct {
}
func (d *ping4) String() string {
return "ping4/" + d.addr
return "ping4: " + d.addr
}
func (d *ping4) Then(t Node) Node {
@ -134,7 +134,7 @@ type ping6gw struct {
}
func (d *ping6gw) String() string {
return "ping6gw/<default-gateway>"
return "ping6gw: $default-gateway"
}
func (d *ping6gw) Then(t Node) Node {
@ -198,9 +198,9 @@ type ping6 struct {
func (d *ping6) String() string {
if d.ifname == "" {
return "ping6/" + d.addr
return "ping6: " + d.addr
}
return fmt.Sprintf("ping6/%s→%s", d.ifname, d.addr)
return fmt.Sprintf("ping6: %s → %s", d.ifname, d.addr)
}
func (d *ping6) Then(t Node) Node {

View File

@ -24,7 +24,7 @@ type tcp4 struct {
}
func (d *tcp4) String() string {
return "tcp4/" + d.addr
return "tcp4: " + d.addr
}
func (d *tcp4) Then(t Node) Node {
@ -57,7 +57,7 @@ type tcp6 struct {
}
func (d *tcp6) String() string {
return "tcp6/" + d.addr
return "tcp6: " + d.addr
}
func (d *tcp6) Then(t Node) Node {