No outages detected.
"); + sb.AppendLine("| # | Start (UTC) | End (UTC) | Duration | Status |
|---|---|---|---|---|
| {i + 1} | "); + sb.AppendLine($"{o.Start:yyyy-MM-dd HH:mm:ss} | "); + sb.AppendLine($"{(o.IsOngoing ? "-" : o.End.ToString("yyyy-MM-dd HH:mm:ss"))} | "); + sb.AppendLine($"{o.Duration.TotalSeconds:F0}s | "); + sb.AppendLine($"{statusText} | "); + sb.AppendLine("
No clients connected.
"); + sb.AppendLine("| Nickname | "); + sb.AppendLine("Client ID | "); + sb.AppendLine("Remote Endpoint | "); + sb.AppendLine("Connected Since | "); + sb.AppendLine("Connected Time | "); + sb.AppendLine("Idle Time | "); + sb.AppendLine("Bytes Sent | "); + sb.AppendLine("Bytes Received | "); + sb.AppendLine("Last Data Sent | "); + sb.AppendLine("Last Data Received | "); + sb.AppendLine("Security | "); + sb.AppendLine("
|---|---|---|---|---|---|---|---|---|---|---|
| {HtmlEncode(client.Nickname)} | "); + sb.AppendLine($"{HtmlEncode(client.Id ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(client.RemoteEndPoint?.ToString() ?? "-")} | "); + sb.AppendLine($"{client.ConnectedAt:yyyy-MM-dd HH:mm:ss} UTC | "); + sb.AppendLine($"{FormatTimeSpan(client.ConnectedTime())} | "); + sb.AppendLine($"{FormatTimeSpan(client.IdleTime())} | "); + sb.AppendLine($"{FormatBytes(client.BytesSent)} | "); + sb.AppendLine($"{FormatBytes(client.BytesReceived)} | "); + sb.AppendLine($"{FormatDateTime(client.LastDataSent)} | "); + sb.AppendLine($"{FormatDateTime(client.LastDataReceived)} | "); + sb.AppendLine($"{securityBadge} | "); + sb.AppendLine("
✔ No SSL errors recorded.
"); + sb.AppendLine("| Timestamp | "); + sb.AppendLine("Client / Server | "); + sb.AppendLine("Client ID | "); + sb.AppendLine("Error | "); + sb.AppendLine("Exception Type | "); + sb.AppendLine("
|---|---|---|---|---|
| {sslError.Timestamp:yyyy-MM-dd HH:mm:ss} UTC | "); + sb.AppendLine($"{HtmlEncode(sslError.Nickname ?? sslError.ClientId ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(sslError.ClientId ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(sslError.Message ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(sslError.ExceptionType ?? "-")} | "); + sb.AppendLine("
No errors recorded. All systems operational.
"); + sb.AppendLine("| Timestamp | Source | Type | Client | Error Code | Message | Details |
|---|---|---|---|---|---|---|
| {e.Timestamp:yyyy-MM-dd HH:mm:ss} | "); + sb.AppendLine($"{HtmlEncode(e.Source ?? "Unknown")} | "); + sb.AppendLine($"{badge} | "); + sb.AppendLine($"{HtmlEncode(e.Nickname ?? e.ClientId ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(e.ErrorCode ?? "-")} | "); + sb.AppendLine($"{HtmlEncode(e.Message ?? "-")} | "); + + sb.AppendLine("");
+ if (!string.IsNullOrEmpty(e.StackTrace))
+ {
+ sb.AppendLine($"Stack Trace{HtmlEncode(e.StackTrace)} | ");
+
+ sb.AppendLine("