🛡️ Watchdog System-Hierarchie & Monitore
| Hierarchie / Entity Source | Typ | Status | Letzte Meldung | Zuletzt Gesehen |
|---|---|---|---|---|
|
= $m['is_last'] ? '└─' : '├─' ?>
|
= htmlspecialchars($m['type']) ?> |
● = strtoupper($m['state']) ?> | = htmlspecialchars($m['last_message'] ?? '-') ?> | = htmlspecialchars($m['last_seen_utc'] ?? 'Nie') ?> |
📁 Neues Projekt anlegen / Bearbeiten
Projekte Übersicht & Verwaltung
| ID | Slug | Projekt Name | Cache TTL | Verknüpfte Lizenzen | Verknüpfte Releases | Aktionen |
|---|---|---|---|---|---|---|
| = $p['id'] ?> | = htmlspecialchars($p['slug']) ?> |
= htmlspecialchars($p['name']) ?> | = $p['default_cache_ttl_hours'] ?> h (= round($p['default_cache_ttl_hours']/24, 1) ?> Tage) | = $licCount ?> Lizenzen | = $relCount ?> Releases |
⚠️ Projekt unwiderruflich löschen
Sind Sie sicher, dass Sie das Projekt löschen möchten?
Bitte geben Sie zur Sicherheitsbestätigung den Projekt-Slug ein:
✏️ Monitor & Icon bearbeiten
Neuen Lizenzschlüssel generieren
Erstellte Lizenzschlüssel
| Projekt | Lizenzschlüssel | Kunde | Aktivierungen | Status | Ablaufdatum | Aktionen |
|---|---|---|---|---|---|---|
| = htmlspecialchars($l['product_name']) ?> | = htmlspecialchars($l['license_key']) ?> |
= htmlspecialchars($l['customer_name'] ?? '-') ?> | = $l['active_count'] ?> / = $l['max_activations'] ?> | = strtoupper($l['status']) ?> | = $l['expires_at'] ? htmlspecialchars($l['expires_at']) : 'Unbefristet' ?> | 📥 .lic |
✏️ Lizenz Vollständig Bearbeiten
Aktivierte Hardware-IDs verwalten
| Projekt | Lizenzschlüssel | Hardware-ID / Quelle | Plattform / Ver. | Hostname | Zuletzt gesehen | Status | Aktionen |
|---|---|---|---|---|---|---|---|
| = htmlspecialchars($a['product_name']) ?> | = htmlspecialchars($a['license_key']) ?> |
= htmlspecialchars($a['hardware_id']) ?>
Quelle: = htmlspecialchars($a['hwid_source']) ?> |
= htmlspecialchars(strtoupper($a['platform'] ?? 'WIN')) ?> (v= (int)($a['hwid_version'] ?? 1) ?>) | = htmlspecialchars($a['hostname'] ?? '-') ?> | = htmlspecialchars($a['last_seen']) ?> | = $a['is_blocked'] ? 'GESPERRT' : 'AKTIV' ?> |
💾 Signierte Offline-Lizenzdatei erzeugen (.lic)
Erzeugt eine signierte .lic Offline-Lizenzdatei für Air-Gapped Kundensysteme.
📜 Audit-Protokoll
| ID | Zeitpunkt | Akteur | Aktion | Details |
|---|---|---|---|---|
| = $log['id'] ?> | = $log['created_at'] ?> | = htmlspecialchars($log['actor']) ?> |
= htmlspecialchars($log['action']) ?> | = htmlspecialchars($log['details'] ?? '-') ?> |
🔑 Server Ed25519 Public Key & Endpunkte
⚙️ Moduleinstellungen & API Konfiguration
📁 Gruppen-Übersicht
🌳 Watchdog System-Hierarchie
| Name | Typ | Status | Zuletzt gesehen | Kurz-Info / Message | Aktionen |
|---|---|---|---|---|---|
|
= $m['is_last'] ? '└─' : '├─' ?>
|
= htmlspecialchars($m['type']) ?> |
= strtoupper($m['state']) ?> | = htmlspecialchars($m['last_seen_utc'] ?? 'Nie') ?> | = htmlspecialchars($m['last_message'] ?? '-') ?> |
🖥️ Monitor Anlegen
📜 Chronologisches Event-Log
| Zeitpunkt (UTC) | Source | Kind | Severity | Nachricht |
|---|---|---|---|---|
| = htmlspecialchars($e['at_utc']) ?> | = htmlspecialchars($e['source']) ?> | = htmlspecialchars($e['kind']) ?> |
= strtoupper($e['severity']) ?> | = htmlspecialchars($e['message'] ?? '-') ?> |
Neuen Agent-Token erstellen
Agent Tokens
| Token ID | Bezeichnung | Gebundene Source | Token Value | Status | Aktion |
|---|---|---|---|---|---|
= htmlspecialchars($tok['token_id']) ?> |
= htmlspecialchars($tok['name']) ?> | = htmlspecialchars($tok['monitor_source'] ?? 'Alle Sources') ?> |
= htmlspecialchars($masked) ?>
|
= $tok['revoked'] ? 'WIDERUFEN' : 'AKTIV' ?> |
📦 Veröffentlichte Software Releases
| Projekt | Kanal | Version | Git Commit | Größe | Release Notes | Download & SHA256 | Datum |
|---|---|---|---|---|---|---|---|
| = htmlspecialchars($r['product_slug']) ?> | = strtoupper(htmlspecialchars($r['channel'] ?? 'prod')) ?> | v= htmlspecialchars($r['version']) ?> KRITISCH |
= htmlspecialchars($r['git_commit'] ?? 'n/a') ?> |
= $sizeFormatted ?> | = htmlspecialchars($r['release_notes'] ?? '-') ?> |
⬇️ Download Package
SHA: = htmlspecialchars(substr($r['sha256_hash'], 0, 12)) ?>...
|
= htmlspecialchars($r['created_at']) ?> |
Neues Software-Release veröffentlichen
🤖 Aktive Agenten
🐛 Bugs, Features & Ideen = (int)$bugtrackerTotal ?> Treffer
| ID / Typ | Umgebung | Projekt & Titel | Build | Schweregrad | Anzahl | Status | Aktionen |
|---|---|---|---|---|---|---|---|
| Keine Einträge für diese Filterkombination. | |||||||
| #= (int)$item['id'] ?> = $typeBadge ?> |
= $envBadge ?> |
= e((string)$item['title']) ?>
Projekt:
= e((string)$item['project_slug']) ?>
Von: = e((string)$item['created_by']) ?>
= e(dc_ago($item['last_seen_at'] ?? null)) ?>
🔒 = e((string)$item['claimed_by']) ?>
📲 = e((string)$item['push_id']) ?>
🤖 = e((string)$item['target_agent']) ?>
📄 = e((string)$item['file_path']) ?>= !empty($item['line_no']) ? ':' . (int)$item['line_no'] : '' ?>
🏷️ = e((string)$item['tags']) ?>
|
= e((string)($item['build_version'] ?? 'unbekannt')) ?> |
= $sevBadge ?> | = (int)$item['occurrence_count'] ?>x | = $statusBadge ?> |
|
➕ Bug, Feature Request oder Idee Erfassen
👑 Master-Tokens (Selbst-Provisionierung für Client-Apps & Host-Skripte)
| Token ID | Bezeichnung | Typ / Identität | Projekt / Lizenz | Rechte (Scopes) | Sub-Tokens | Token Key | Aktionen |
|---|---|---|---|---|---|---|---|
= htmlspecialchars($mTok['token_id']) ?> |
= htmlspecialchars($mTok['name']) ?> |
= strtoupper($mTok['owner_type']) ?> = htmlspecialchars($mTok['owner_identity'] ?? '-') ?> |
= htmlspecialchars($mTok['project_slug'] ?? '-') ?>
= !empty($mTok['license_key']) ? ' Lic: ' . htmlspecialchars($mTok['license_key']) . '' : '' ?> |
= htmlspecialchars($sc) ?> | = (int)($mTok['sub_token_count'] ?? 0) ?> Sub-Tokens |
= htmlspecialchars($masked) ?>
|
WIDERUFEN
|
🔑 Aktive Sub-Tokens (Per Provisioning API Erstellt)
| Token ID | Parent Master ID | Bezeichnung / Client | Umgebung | Scopes | Token Key | Zuletzt Genutzt | Status | Aktionen |
|---|---|---|---|---|---|---|---|---|
= htmlspecialchars($sTok['token_id']) ?> |
= htmlspecialchars($sTok['parent_token_id'] ?? '-') ?> |
= htmlspecialchars($sTok['name']) ?> | = strtoupper($sTok['environment']) ?> | = htmlspecialchars($sc) ?> |
= htmlspecialchars($sMasked) ?>
|
= $sTok['last_used_at'] ? htmlspecialchars($sTok['last_used_at']) : 'Noch nie' ?> | = $sTok['revoked'] ? 'WIDERUFEN' : 'AKTIV' ?> |
|
➕ Neuen Master-Token Erstellen
⚙️ Server & Umgebung
🩺 Systemzustand
| Prüfung | Zustand | Hinweis |
|---|---|---|
| Watchdog-Evaluator | = $evaluatorStale ? 'INAKTIV' : 'AKTIV' ?> | Letzter Lauf: = e(dc_dt((string)$evaluatorLastRun)) ?> (= e(dc_ago((string)$evaluatorLastRun)) ?>) Noch nie gelaufen — ohne ihn bleiben ausgefallene Monitore „up“. |
| Log-Verzeichnis beschreibbar | = $logWritable ? 'OK' : 'PRÜFEN' ?> | var/log/ — Fehlerprotokolle |
| Konfiguration ausserhalb Git | OK | config/config.php ist per .gitignore ausgeschlossen |
📖 API-Dokumentation
Die Schnittstelle beschreibt sich selbst. Der frühere fest im Quelltext hinterlegte Textblock ist durch eine maschinenlesbare OpenAPI-Beschreibung ersetzt — ein Agent kann sie abrufen und sich daran orientieren, ohne dass eine Prompt-Vorlage gepflegt werden muss.
🗄️ Datenbank-Migration
Führt ausstehende Migrationen aus. Bereits angewendete Versionen werden in
dc_migrations vermerkt und übersprungen.