Lesender Selbsttest (Version, Services, Hosts, Downtimes) beim Start und täglich 04:00, Seite /selftest, Teilcheck checkmk_api in /health, Chat-Meldung bei Wechsel. Toleranter Antwort-Parser (value/members, state_type int/String), Fallbacks für Host-Abfrage und Downtime-Liste, Fehlerhinweise je HTTP-Status. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
54 lines
1.8 KiB
HTML
54 lines
1.8 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<meta name="csrf" content="{{ csrf }}">
|
||
<title>{% block title %}checkbot{% endblock %} – checkbot</title>
|
||
<link rel="stylesheet" href="/static/app.css">
|
||
<script src="/static/app.js" defer></script>
|
||
</head>
|
||
<body>
|
||
<header class="topbar">
|
||
<div class="topbar-inner">
|
||
<a class="brand" href="/">checkbot</a>
|
||
{% if user %}
|
||
<nav class="nav" aria-label="Hauptnavigation">
|
||
<a href="/">Dashboard</a>
|
||
<a href="/alerts">Verlauf</a>
|
||
<a href="/routing">Regeln</a>
|
||
<a href="/mutes">Stummschaltungen</a>
|
||
<a href="/prompts">Prompts</a>
|
||
<a href="/selftest">Selbsttest</a>
|
||
{% if user.is_admin %}
|
||
<a href="/setup">Setup</a>
|
||
<a href="/settings/checkmk">Checkmk</a>
|
||
<a href="/settings/ollama">Ollama</a>
|
||
<a href="/settings/telegram">Telegram</a>
|
||
<a href="/settings/matrix">Matrix</a>
|
||
<a href="/settings/alerting">Alarmierung</a>
|
||
<a href="/settings/checkmk_dt">Downtime</a>
|
||
<a href="/settings/retention">Aufbewahrung</a>
|
||
<a href="/settings/selftest">Selbsttest-Einstellungen</a>
|
||
<a href="/agent">Agent</a>
|
||
<a href="/users">Benutzer</a>
|
||
<a href="/audit">Audit</a>
|
||
{% endif %}
|
||
<a href="/account">Konto</a>
|
||
<form method="post" action="/logout" class="inline">
|
||
{{ csrf_input }}
|
||
<button type="submit" class="link">Abmelden ({{ user.username }})</button>
|
||
</form>
|
||
</nav>
|
||
{% endif %}
|
||
</div>
|
||
</header>
|
||
<main class="container">
|
||
{% for f in flashes %}
|
||
<div class="flash {{ f.kind }}" role="{{ 'alert' if f.kind == 'error' else 'status' }}">{{ f.text }}</div>
|
||
{% endfor %}
|
||
{% block content %}{% endblock %}
|
||
</main>
|
||
</body>
|
||
</html>
|