diff --git a/ipn/ipnlocal/peerapi.go b/ipn/ipnlocal/peerapi.go index 49d646d4b..7fd2ed443 100644 --- a/ipn/ipnlocal/peerapi.go +++ b/ipn/ipnlocal/peerapi.go @@ -725,18 +725,20 @@ func (h *peerAPIHandler) handleServeInterfaces(w http.ResponseWriter, r *http.Re http.Error(w, "denied; no debug access", http.StatusForbidden) return } - i, err := interfaces.GetList() - if err != nil { - http.Error(w, err.Error(), 500) + w.Header().Set("Content-Type", "text/html; charset=utf-8") + fmt.Fprintln(w, "

Interfaces

") + + if dr, err := interfaces.DefaultRoute(); err == nil { + fmt.Fprintf(w, "

Default route is %q(%d)

\n", html.EscapeString(dr.InterfaceName), dr.InterfaceIndex) + } else { + fmt.Fprintf(w, "

Could not get the default route: %s

\n", html.EscapeString(err.Error())) } - dr, err := interfaces.DefaultRoute() + i, err := interfaces.GetList() if err != nil { - http.Error(w, err.Error(), 500) + fmt.Fprintf(w, "Could not get interfaces: %s\n", html.EscapeString(err.Error())) + return } - w.Header().Set("Content-Type", "text/html; charset=utf-8") - fmt.Fprintln(w, "

Interfaces

") - fmt.Fprintf(w, "

Default route is %q(%d)

\n", dr.InterfaceName, dr.InterfaceIndex) fmt.Fprintln(w, "") fmt.Fprint(w, "") @@ -747,7 +749,7 @@ func (h *peerAPIHandler) handleServeInterfaces(w http.ResponseWriter, r *http.Re i.ForeachInterface(func(iface interfaces.Interface, ipps []netip.Prefix) { fmt.Fprint(w, "") for _, v := range []any{iface.Index, iface.Name, iface.MTU, iface.Flags, ipps} { - fmt.Fprintf(w, " ", v) + fmt.Fprintf(w, " ", html.EscapeString(fmt.Sprintf("%v", v))) } fmt.Fprint(w, "\n") })
%v%s