sqlinsight-pro/src/SQLInsight.Web/Components/Shared/ServerStatus.razor
Søren Eggert Lundsteen Olsen 1c18bcfab8 Web: Windows-servere and Syntetiske tjek pages, and the same in API v1 (scope config:write)
- Menu group "Servere" with Windows-servere (/servere) and Syntetiske tjek
  (/syntetiske-tjek).
- /servere: every server with status (overvåges, delvist målbar, kan ikke læses),
  CPU, free memory, the fullest disk and the nearest "fuld om ca. N dage", findings;
  add application/AOS/file servers. /servere/{id}: findings and what is not
  measurable and why, CPU/memory for the last day, disks with forecasts, watched
  and stopped services, grouped event log errors, scheduled tasks, rights per area
  with the latest test, the least-privilege PowerShell script (copy or download,
  UTF-8 with BOM), role and service lists, pause and remove. /servere/fund/{id}.
- /syntetiske-tjek: checks with status and response time; one form for every kind
  (TCP, HTTP(S), SQL login + query, DNS, AX logon) with an optional server and
  service; a SQL login password is sealed for the agent at once and never shown.
  /syntetiske-tjek/{id}: latest result (incl. "kun porten er testet"), findings,
  response times, history, edit, run now, pause, remove.
- API v1: /windows-servers (+ test, grant-script, performance, disks, services,
  events, tasks, rule-states), /server-findings, /synthetic-checks (+ run, results,
  rule-states); all in OpenAPI. Passwords are write-only; event samples, failure
  messages and sensitive evidence are "[udeladt]" unless
  SQLInsight:Web:ApiIncludesSensitiveEvidence is on. /api/v1/rules lists the new rules.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 14:58:52 +02:00

26 lines
833 B
Text

@inject Display Display
@if (Server.Paused)
{
<span class="badge sev-medium">På pause</span>
}
else if (Server.LastContactAt is null && Server.LastErrorAt is null)
{
<span class="badge sev-info" title="Agenten har ikke set serveren endnu">Venter på agenten</span>
}
else if (!Server.Reachable)
{
<span class="badge sev-critical" title="@Server.LastError">Kan ikke læses</span>
}
else if (Server.Areas.Any(a => !a.Ok))
{
<span class="badge sev-medium" title="@string.Join(" · ", Server.Areas.Where(a => !a.Ok).Select(a => SQLInsight.Core.Servers.ServerArea.Display(a.Area)))">Delvist målbar</span>
}
else
{
<span class="badge sev-ok" title="Senest læst @Display.Time(Server.LastContactAt)">Overvåges</span>
}
@code {
[Parameter, EditorRequired] public WindowsServerRow Server { get; set; } = null!;
}