From 67f713347c7c462f4f48282a93ba47743de4e0a9 Mon Sep 17 00:00:00 2001 From: sascha Date: Mon, 7 Sep 2026 09:03:57 +0200 Subject: [PATCH] feat(control): add stream-control/templates/dashboard.html --- stream-control/templates/dashboard.html | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 stream-control/templates/dashboard.html diff --git a/stream-control/templates/dashboard.html b/stream-control/templates/dashboard.html new file mode 100644 index 0000000..63a5f5a --- /dev/null +++ b/stream-control/templates/dashboard.html @@ -0,0 +1,58 @@ +{% extends 'base.html' %}{% block content %} +{% set limits=state.get('limits',{}) %}{% set tc=state.get('tc',{}) %}{% set policy=state.get('policy',{}) %} +
+
REGION-PROFIL{{ limits.get('ch','—') }} Mbittc: {{ tc.get('ch','—') }} Mbit
+
CLOUD-PROFIL{{ limits.get('vpn','—') }} Mbittc: {{ tc.get('vpn','—') }} Mbit
+
SESSIONS{{ state.get('active_sessions','—') }}{{ state.get('active_blocks',0) }} aktive Sperren
+
POLICY{{ ('AUS' if not policy.get('enabled') else policy.get('mode','—')|upper) }}ab {{ policy.get('min_sessions','—') }} Streams
+
+ +

SCHNELLWAHL

Traffic-Profile

Wirkt sofort auf die aktiven tc-Klassen am OVH
+
+ {% for key,p in profiles.items() %} +
+

{{ p.label }}

{{ p.ch }} / {{ p.vpn }} MbitRegion / Cloud +
+ {% endfor %} +
+
+ +
+

MANUELL

Bandbreiten

+
+ + + + +
+
+

SESSION POLICY

Mehrfachnutzung

+
+ + + + + +
+
+
+ +
+

RUNTIME

Dienste & Regeln

+
+ {% for name,status in state.get('services',{}).items() %}{% endfor %} + + + +
{{ name }}{{ status }}
Markierungsregeln{{ state.get('mark_rules','—') }}
Region-Netze{{ state.get('ipsets',{}).get('geo-a-v4',0)+state.get('ipsets',{}).get('geo-a-v6',0) }}
Cloud-Netze{{ state.get('ipsets',{}).get('cloud-v4',0)+state.get('ipsets',{}).get('cloud-v6',0) }}
+
+ {% for action,label,cls in [('refresh','Netzlisten aktualisieren','ghost'),('worker','Worker neu starten','ghost'),('admin','Admin neu starten','ghost')] %}
{% endfor %} +
+
+

EREIGNISSE

Letzte Policy-Aktionen

+
{% for e in state.get('recent_events',[]) %}
{{ e.kind }}
{{ e.user_name or 'System' }}{{ e.detail }}
{% else %}

Keine Ereignisse vorhanden.

{% endfor %}
+
+
+ +{% if state.get('error') %}
!

{{ state.error }}

{% endif %} +{% endblock %}