diagd: make output look good in a terminal, too
curl diagd.router7/
This commit is contained in:
parent
ffc4c21bcd
commit
e67fb4dd71
@ -26,6 +26,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
@ -49,14 +50,18 @@ func updateListeners() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func dump(w io.Writer, re *diag.EvalResult) {
|
func dump(indent int, w io.Writer, re *diag.EvalResult) {
|
||||||
symbol := "✔"
|
symbol := "✔"
|
||||||
if re.Error {
|
if re.Error {
|
||||||
symbol = "✘"
|
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 {
|
for _, ch := range re.Children {
|
||||||
dump(w, ch)
|
dump(indent+1, w, ch)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(w, "</ul></li>")
|
fmt.Fprintf(w, "</ul></li>")
|
||||||
}
|
}
|
||||||
@ -96,7 +101,7 @@ func logic() error {
|
|||||||
re := m.Evaluate()
|
re := m.Evaluate()
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
fmt.Fprintf(w, `<!DOCTYPE html><style type="text/css">ul { list-style-type: none; }</style><ul>`)
|
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) {
|
http.HandleFunc("/health.json", func(w http.ResponseWriter, r *http.Request) {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
|
@ -34,7 +34,7 @@ type ping4gw struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping4gw) String() string {
|
func (d *ping4gw) String() string {
|
||||||
return "ping4/<default-gateway>"
|
return "ping4: $default-gateway"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping4gw) Then(t Node) Node {
|
func (d *ping4gw) Then(t Node) Node {
|
||||||
@ -93,7 +93,7 @@ type ping4 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping4) String() string {
|
func (d *ping4) String() string {
|
||||||
return "ping4/" + d.addr
|
return "ping4: " + d.addr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping4) Then(t Node) Node {
|
func (d *ping4) Then(t Node) Node {
|
||||||
@ -134,7 +134,7 @@ type ping6gw struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping6gw) String() string {
|
func (d *ping6gw) String() string {
|
||||||
return "ping6gw/<default-gateway>"
|
return "ping6gw: $default-gateway"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *ping6gw) Then(t Node) Node {
|
func (d *ping6gw) Then(t Node) Node {
|
||||||
@ -198,9 +198,9 @@ type ping6 struct {
|
|||||||
|
|
||||||
func (d *ping6) String() string {
|
func (d *ping6) String() string {
|
||||||
if d.ifname == "" {
|
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 {
|
func (d *ping6) Then(t Node) Node {
|
||||||
|
@ -24,7 +24,7 @@ type tcp4 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *tcp4) String() string {
|
func (d *tcp4) String() string {
|
||||||
return "tcp4/" + d.addr
|
return "tcp4: " + d.addr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *tcp4) Then(t Node) Node {
|
func (d *tcp4) Then(t Node) Node {
|
||||||
@ -57,7 +57,7 @@ type tcp6 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *tcp6) String() string {
|
func (d *tcp6) String() string {
|
||||||
return "tcp6/" + d.addr
|
return "tcp6: " + d.addr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *tcp6) Then(t Node) Node {
|
func (d *tcp6) Then(t Node) Node {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user