Initial commit: IT Nexus Web-App
This commit is contained in:
671
agent-cs/topology.html
Normal file
671
agent-cs/topology.html
Normal file
@@ -0,0 +1,671 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>IT Nexus — Systemarchitektur</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Segoe UI', system-ui, sans-serif;
|
||||
background: #0A0A0C;
|
||||
color: #E4E4E7;
|
||||
min-height: 100vh;
|
||||
padding: 40px 32px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
color: #FAFAFA;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.subtitle {
|
||||
font-size: 13px;
|
||||
color: #52525B;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.subtitle span {
|
||||
color: #009B9A;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.topology {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 60px 1fr 60px 1fr;
|
||||
grid-template-rows: auto;
|
||||
gap: 0;
|
||||
align-items: start;
|
||||
max-width: 1200px;
|
||||
}
|
||||
|
||||
/* ─── COLUMNS ─── */
|
||||
.col { display: flex; flex-direction: column; gap: 12px; }
|
||||
|
||||
/* ─── NODES ─── */
|
||||
.node {
|
||||
background: #18181B;
|
||||
border: 1px solid #27272A;
|
||||
border-radius: 14px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.node-header {
|
||||
padding: 12px 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
border-bottom: 1px solid #27272A;
|
||||
}
|
||||
.node-icon {
|
||||
width: 32px; height: 32px;
|
||||
border-radius: 8px;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-size: 16px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.node-title { font-size: 13px; font-weight: 700; color: #FAFAFA; }
|
||||
.node-sub { font-size: 10px; color: #52525B; margin-top: 1px; }
|
||||
.node-body { padding: 12px 16px; display: flex; flex-direction: column; gap: 8px; }
|
||||
|
||||
/* ─── COMPONENTS inside nodes ─── */
|
||||
.comp {
|
||||
background: #1C1C1F;
|
||||
border: 1px solid #2A2A2E;
|
||||
border-radius: 9px;
|
||||
padding: 9px 12px;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10px;
|
||||
}
|
||||
.comp-icon {
|
||||
font-size: 15px;
|
||||
margin-top: 1px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.comp-name { font-size: 12px; font-weight: 600; color: #E4E4E7; }
|
||||
.comp-desc { font-size: 10px; color: #52525B; margin-top: 2px; line-height: 1.4; }
|
||||
.comp-badge {
|
||||
display: inline-block;
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
padding: 1px 6px;
|
||||
border-radius: 4px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.badge-green { background: #14532D; color: #4ADE80; }
|
||||
.badge-blue { background: #1E3A5F; color: #60A5FA; }
|
||||
.badge-orange { background: #431407; color: #FB923C; }
|
||||
.badge-teal { background: #0D3030; color: #2DD4BF; }
|
||||
.badge-red { background: #450A0A; color: #F87171; }
|
||||
.badge-gray { background: #27272A; color: #71717A; }
|
||||
|
||||
/* ─── ARROWS / CONNECTORS ─── */
|
||||
.arrow-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding-top: 60px;
|
||||
gap: 0;
|
||||
}
|
||||
.arrow-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.arrow-label {
|
||||
font-size: 9px;
|
||||
color: #3F3F46;
|
||||
text-align: center;
|
||||
max-width: 52px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.arrow-line {
|
||||
width: 1px;
|
||||
height: 28px;
|
||||
background: linear-gradient(to bottom, #27272A, #3F3F46);
|
||||
}
|
||||
.arrow-head {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-top: 6px solid #3F3F46;
|
||||
}
|
||||
.arrow-both { display: flex; flex-direction: column; align-items: center; }
|
||||
.arrow-up { border-top: none; border-bottom: 6px solid #3F3F46; }
|
||||
.arrow-bi { color: #3F3F46; font-size: 14px; }
|
||||
|
||||
/* ─── COLUMN HEADERS ─── */
|
||||
.col-label {
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
color: #3F3F46;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 8px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
/* ─── FLOW LEGEND ─── */
|
||||
.legend {
|
||||
max-width: 1200px;
|
||||
margin-top: 36px;
|
||||
background: #18181B;
|
||||
border: 1px solid #27272A;
|
||||
border-radius: 14px;
|
||||
padding: 20px 24px;
|
||||
}
|
||||
.legend h2 {
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: #52525B;
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.flow-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 12px;
|
||||
}
|
||||
.flow-item {
|
||||
background: #1C1C1F;
|
||||
border: 1px solid #27272A;
|
||||
border-radius: 9px;
|
||||
padding: 12px 14px;
|
||||
}
|
||||
.flow-title { font-size: 11px; font-weight: 600; color: #E4E4E7; margin-bottom: 4px; }
|
||||
.flow-desc { font-size: 10px; color: #52525B; line-height: 1.5; }
|
||||
.flow-step { display: flex; align-items: baseline; gap: 6px; }
|
||||
.flow-num { font-size: 9px; font-weight: 700; color: #009B9A; }
|
||||
|
||||
/* colors per zone */
|
||||
.zone-pc .node-header { background: #0F1B2D; }
|
||||
.zone-pc .node-icon { background: #1E3A5F; }
|
||||
.zone-server .node-header { background: #0A1F0A; }
|
||||
.zone-server .node-icon { background: #14532D; }
|
||||
.zone-admin .node-header { background: #1A0F2E; }
|
||||
.zone-admin .node-icon { background: #2E1065; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>IT Nexus — Systemarchitektur</h1>
|
||||
<p class="subtitle">v2.0.0 · <span>Cereda Systems GmbH</span> · Stand: Mai 2026</p>
|
||||
|
||||
<div class="topology">
|
||||
|
||||
<!-- ═══ SPALTE 1: Windows Client ═══ -->
|
||||
<div class="col zone-pc">
|
||||
<div class="col-label">Windows-Endgerät</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🖥️</div>
|
||||
<div>
|
||||
<div class="node-title">IT-Nexus-Agent.exe</div>
|
||||
<div class="node-sub">C:\Program Files\IT Nexus Agent\</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">⚙️</div>
|
||||
<div>
|
||||
<div class="comp-name">Windows Service</div>
|
||||
<div class="comp-desc">Läuft als SYSTEM · Autostart<br>Check-in alle 60 Sekunden</div>
|
||||
<span class="comp-badge badge-green">Running</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📊</div>
|
||||
<div>
|
||||
<div class="comp-name">Dashboard (–-dashboard)</div>
|
||||
<div class="comp-desc">WPF Dark-Theme · System Tray<br>Autostart bei Windows-Login</div>
|
||||
<span class="comp-badge badge-blue">STAThread</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🔔</div>
|
||||
<div>
|
||||
<div class="comp-name">Ankündigung (–-notify)</div>
|
||||
<div class="comp-desc">WPF Dialog per schtasks.exe<br>Startet als eingeloggter User</div>
|
||||
<span class="comp-badge badge-orange">On Demand</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">📦</div>
|
||||
<div>
|
||||
<div class="node-title">Gesammelte Daten</div>
|
||||
<div class="node-sub">status.json · agent.log · config.json</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🔒</div>
|
||||
<div>
|
||||
<div class="comp-name">BitLocker · Defender</div>
|
||||
<div class="comp-desc">WMI-Abfragen als SYSTEM<br>Win32_EncryptableVolume · MSFT_MpComputerStatus</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📈</div>
|
||||
<div>
|
||||
<div class="comp-name">CPU · RAM · Disk · Updates</div>
|
||||
<div class="comp-desc">Performance Counter · WMI<br>Windows Update COM API</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🏷️</div>
|
||||
<div>
|
||||
<div class="comp-name">Hardware · Software · TPM</div>
|
||||
<div class="comp-desc">BIOS Serial · Registry Uninstall<br>Win32_Tpm · Secure Boot</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🔧</div>
|
||||
<div>
|
||||
<div class="node-title">Installer (setup.exe)</div>
|
||||
<div class="node-sub">Inno Setup 6 · GUID {B3F7A2C1…}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📋</div>
|
||||
<div>
|
||||
<div class="comp-name">Was der Installer macht</div>
|
||||
<div class="comp-desc">
|
||||
EXE → Program Files<br>
|
||||
sc.exe create → Windows Service<br>
|
||||
HKCU\Run → Autostart Dashboard<br>
|
||||
Start-Menü Verknüpfung<br>
|
||||
config.json (falls nicht vorhanden)<br>
|
||||
Erkennungsregel für Intune
|
||||
</div>
|
||||
<span class="comp-badge badge-teal">Intune-kompatibel</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ ARROWS 1→2 ═══ -->
|
||||
<div class="arrow-col">
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">POST /checkin<br>X-Agent-Key</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">Response<br>commands<br>anns</div>
|
||||
<div class="arrow-line" style="background:linear-gradient(to bottom,#3F3F46,#27272A)"></div>
|
||||
<div class="arrow-head arrow-up" style="border-bottom-color:#3F3F46;border-top:none"></div>
|
||||
</div>
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">HTTPS 443</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">GET<br>/agent-script</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ SPALTE 2: Server ═══ -->
|
||||
<div class="col zone-server">
|
||||
<div class="col-label">IT Nexus Server · 192.168.0.194</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🐳</div>
|
||||
<div>
|
||||
<div class="node-title">Docker Stack</div>
|
||||
<div class="node-sub">LXC 102 · Ubuntu 24.04 · docker compose</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🌐</div>
|
||||
<div>
|
||||
<div class="comp-name">nginx (Reverse Proxy)</div>
|
||||
<div class="comp-desc">Port 80 → 443 · TLS · Let's Encrypt<br>Leitet /api/* → Backend · /* → Frontend</div>
|
||||
<span class="comp-badge badge-green">Port 443</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">⚡</div>
|
||||
<div>
|
||||
<div class="comp-name">fido-backend (Node.js)</div>
|
||||
<div class="comp-desc">Express · better-sqlite3<br>JWT Auth · Agent-Key Auth<br>Cron Jobs · KI (Claude claude-sonnet-4-6)</div>
|
||||
<span class="comp-badge badge-blue">Port 5000</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">⚛️</div>
|
||||
<div>
|
||||
<div class="comp-name">fido-frontend (React)</div>
|
||||
<div class="comp-desc">CRA · Custom CSS<br>Monitoring · Patch · Helpdesk<br>KI-Assistent · Docs</div>
|
||||
<span class="comp-badge badge-blue">Port 3000</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🗄️</div>
|
||||
<div>
|
||||
<div class="comp-name">SQLite Datenbank</div>
|
||||
<div class="comp-desc">monitoring_agents · tickets · users<br>patch_commands · announcements</div>
|
||||
<span class="comp-badge badge-gray">Volume-Mount</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🔗</div>
|
||||
<div>
|
||||
<div class="node-title">Externe Dienste</div>
|
||||
<div class="node-sub">Integrationen via Backend</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">☁️</div>
|
||||
<div>
|
||||
<div class="comp-name">Microsoft Graph API</div>
|
||||
<div class="comp-desc">Azure AD · Teams · MDO Alerts<br>Mail.ReadWrite · SecurityAlert.Read.All</div>
|
||||
<span class="comp-badge badge-blue">App Registration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🤖</div>
|
||||
<div>
|
||||
<div class="comp-name">Anthropic Claude claude-sonnet-4-6</div>
|
||||
<div class="comp-desc">KI-Assistent · Wissensdatenbank<br>Ticket-Analyse · Automatisierung</div>
|
||||
<span class="comp-badge badge-teal">claude-sonnet-4-6</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🖥️</div>
|
||||
<div>
|
||||
<div class="comp-name">Proxmox API</div>
|
||||
<div class="comp-desc">192.168.0.184 · hve-01<br>VM/CT Status · Ressourcen</div>
|
||||
<span class="comp-badge badge-orange">API Token</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">📡</div>
|
||||
<div>
|
||||
<div class="node-title">Agent-Endpunkte</div>
|
||||
<div class="node-sub">Kein JWT — nur X-Agent-Key Header</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📤</div>
|
||||
<div>
|
||||
<div class="comp-name">POST /api/monitoring/checkin</div>
|
||||
<div class="comp-desc">Systemdaten · Bekommt commands + announcements zurück</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">✅</div>
|
||||
<div>
|
||||
<div class="comp-name">POST /api/patch/commands/result</div>
|
||||
<div class="comp-desc">Ergebnis von Patch-Befehlen melden</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🔔</div>
|
||||
<div>
|
||||
<div class="comp-name">POST /api/announcements/:id/ack-agent</div>
|
||||
<div class="comp-desc">Bestätigung nach Klick im Dialog</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">⬇️</div>
|
||||
<div>
|
||||
<div class="comp-name">GET /api/monitoring/agent-script</div>
|
||||
<div class="comp-desc">Neue EXE-Version für Auto-Update</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ ARROWS 2→3 ═══ -->
|
||||
<div class="arrow-col">
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">HTTPS<br>Browser</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">JWT<br>Auth</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
<div class="arrow-group">
|
||||
<div class="arrow-label">Real-time<br>Dashboard</div>
|
||||
<div class="arrow-line"></div>
|
||||
<div class="arrow-head"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ SPALTE 3: Admin / Browser ═══ -->
|
||||
<div class="col zone-admin">
|
||||
<div class="col-label">IT-Administrator</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🧑💼</div>
|
||||
<div>
|
||||
<div class="node-title">IT Nexus Web</div>
|
||||
<div class="node-sub">https://it-nexus.cereda-systems.de</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📊</div>
|
||||
<div>
|
||||
<div class="comp-name">Monitoring</div>
|
||||
<div class="comp-desc">Alle Geräte · Online/Offline<br>CPU/RAM/Disk · BitLocker · Defender<br>Seriennummer · Patch-Status</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🔄</div>
|
||||
<div>
|
||||
<div class="comp-name">Patch Management</div>
|
||||
<div class="comp-desc">Staged Rollout: Test → Pilot → Produktion<br>Commands: Updates, Reboot, Win11<br>Auto-Update Agent</div>
|
||||
<span class="comp-badge badge-orange">Rollout-gesichert</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">📢</div>
|
||||
<div>
|
||||
<div class="comp-name">Ankündigungen</div>
|
||||
<div class="comp-desc">Erstellen · An Gruppen senden<br>Agent zeigt WPF-Dialog auf Endgerät<br>ACK-Tracking</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🎫</div>
|
||||
<div>
|
||||
<div class="comp-name">Helpdesk</div>
|
||||
<div class="comp-desc">Tickets · Chat · KI-Assistent<br>Teams-Integration</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🤖</div>
|
||||
<div>
|
||||
<div class="comp-name">KI-Wissensdatenbank</div>
|
||||
<div class="comp-desc">Artikel · Auto-Sync alle 30s<br>Claude claude-sonnet-4-6 Analyse</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🏢</div>
|
||||
<div>
|
||||
<div class="node-title">Infrastruktur-Übersicht</div>
|
||||
<div class="node-sub">Proxmox · LXC · VMs</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🖥️</div>
|
||||
<div>
|
||||
<div class="comp-name">Proxmox hve-01</div>
|
||||
<div class="comp-desc">192.168.0.184 · LXC 102 (IT Nexus)<br>VM/CT Status via REST API</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">💾</div>
|
||||
<div>
|
||||
<div class="comp-name">Synology NAS</div>
|
||||
<div class="comp-desc">192.168.0.60 · iSCSI 500GB<br>iscsi-lvm auf Proxmox</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="node">
|
||||
<div class="node-header">
|
||||
<div class="node-icon">🔐</div>
|
||||
<div>
|
||||
<div class="node-title">Rollen & Zugriffsschutz</div>
|
||||
<div class="node-sub">JWT · Rollenbasiertes Routing</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="node-body">
|
||||
<div class="comp">
|
||||
<div class="comp-icon">👑</div>
|
||||
<div>
|
||||
<div class="comp-name">super_admin / admin</div>
|
||||
<div class="comp-desc">Vollzugriff · alle Bereiche</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🛠️</div>
|
||||
<div>
|
||||
<div class="comp-name">support / bearbeiter</div>
|
||||
<div class="comp-desc">Helpdesk · IT-Verwaltung</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">👤</div>
|
||||
<div>
|
||||
<div class="comp-name">benutzer / hr / produktion</div>
|
||||
<div class="comp-desc">Eingeschränkt · nur eigene Tickets</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comp">
|
||||
<div class="comp-icon">🖥️</div>
|
||||
<div>
|
||||
<div class="comp-name">Dashboard Admin-Modus</div>
|
||||
<div class="comp-desc">Login direkt am Endgerät<br>Agent-Steuerung · Log-Ansicht</div>
|
||||
<span class="comp-badge badge-red">Auth geschützt</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══ ABLAUF-LEGENDE ═══ -->
|
||||
<div class="legend">
|
||||
<h2>Wichtige Abläufe</h2>
|
||||
<div class="flow-grid">
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">🔄 Normaler Check-in (60s)</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>Service sammelt Systemdaten via WMI + Registry</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>POST /api/monitoring/checkin mit X-Agent-Key</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>Server antwortet: commands + announcements</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>status.json → Dashboard liest alle 5s</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">📢 Ankündigung senden</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>Admin erstellt Ankündigung im Web-Frontend</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>Beim nächsten Checkin: Agent empfängt Announcement</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>Service startet via schtasks.exe den Dialog als User</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>User klickt "Gelesen" → ACK an Server</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">🔄 Auto-Update Agent</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>Server-Response enthält neue agent_version</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>Agent lädt neue EXE via GET /agent-script</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>CMD-Script: Service stop → EXE ersetzen → Service start</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>Staged Rollout: Test → Pilot → Produktion</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">🔧 Patch-Command ausführen</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>Admin sendet Befehl im Patch-Management</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>Command kommt beim nächsten Checkin zurück</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>Service führt aus: UsoClient, shutdown, etc.</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>POST /commands/result meldet done/error</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">📦 Intune-Deployment</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>setup.exe via Intune Win32-App verteilen</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>Erkennungsregel: HKLM …\{B3F7A2C1…} DisplayVersion</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>Installer: Service + Autostart + config.json</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>Agent meldet sich selbstständig beim Server an</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flow-item">
|
||||
<div class="flow-title">🔐 Dashboard Exit-Schutz</div>
|
||||
<div class="flow-desc">
|
||||
<div class="flow-step"><span class="flow-num">1</span>X-Button → minimiert nur in Tray, schließt nie</div>
|
||||
<div class="flow-step"><span class="flow-num">2</span>"Beenden" im Tray → Admin-Login-Modal</div>
|
||||
<div class="flow-step"><span class="flow-num">3</span>POST /api/auth/login → JWT-Token</div>
|
||||
<div class="flow-step"><span class="flow-num">4</span>Nur bei Erfolg: Shutdown()</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user