diff options
Diffstat (limited to 'internal/server/server.go')
| -rw-r--r-- | internal/server/server.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/internal/server/server.go b/internal/server/server.go index 50ff1ea..c033059 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -12,6 +12,7 @@ import ( "net/http" "sort" "strconv" + "strings" "time" "github.com/Fuwn/kaze/internal/config" @@ -556,6 +557,54 @@ func templateFuncs() template.FuncMap { } return "bg-neutral-200 dark:bg-neutral-800" }, + "simplifyError": func(err string) string { + if err == "" { + return "" + } + // Common error patterns to simplify + switch { + case strings.Contains(err, "no such host"): + return "DNS lookup failed" + case strings.Contains(err, "connection refused"): + return "Connection refused" + case strings.Contains(err, "connection reset"): + return "Connection reset" + case strings.Contains(err, "timeout"): + return "Timeout" + case strings.Contains(err, "certificate"): + return "SSL/TLS error" + case strings.Contains(err, "EOF"): + return "Connection closed" + case strings.Contains(err, "status code"): + // Extract status code if present + if idx := strings.Index(err, "status code"); idx != -1 { + rest := err[idx:] + // Try to find the number + for i, c := range rest { + if c >= '0' && c <= '9' { + end := i + for end < len(rest) && rest[end] >= '0' && rest[end] <= '9' { + end++ + } + return "HTTP " + rest[i:end] + } + } + } + return "Unexpected status" + case strings.Contains(err, "expected content"): + return "Content mismatch" + case strings.Contains(err, "i/o timeout"): + return "I/O timeout" + case strings.Contains(err, "network is unreachable"): + return "Network unreachable" + default: + // Truncate long errors + if len(err) > 30 { + return err[:27] + "..." + } + return err + } + }, "tickTooltipData": func(tick *storage.TickData, mode, timezone string, hidePing bool) string { if tick == nil { data := map[string]interface{}{"header": "No data"} |