179 lines
13 KiB
PHP
179 lines
13 KiB
PHP
<x-slot:breadcrumbParent>Sicherheit</x-slot:breadcrumbParent>
|
||
<x-slot:breadcrumb>Virenschutz</x-slot:breadcrumb>
|
||
|
||
<div>
|
||
|
||
<div class="mbx-page-header">
|
||
<div class="mbx-page-title">
|
||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
||
<path d="M8 1.5C8 1.5 3 3.5 3 7.5v3.5l5 2.5 5-2.5V7.5C13 3.5 8 1.5 8 1.5Z" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/>
|
||
<path d="M5.5 8l1.5 1.5L10 6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg>
|
||
Virenschutz (ClamAV)
|
||
</div>
|
||
<div class="mbx-page-actions">
|
||
<button wire:click="refresh" class="mbx-act-btn">
|
||
<svg width="12" height="12" viewBox="0 0 14 14" fill="none" wire:loading.class="animate-spin" wire:target="refresh,enable,disable,updateDb"><path d="M12 7A5 5 0 1 1 7 2" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><path d="M7 2l2-2v4H5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
Aktualisieren
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Fehler-Banner --}}
|
||
@if($lastError)
|
||
<div style="margin-bottom:16px;padding:10px 14px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.25);border-radius:8px;display:flex;align-items:center;gap:8px">
|
||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" style="color:#ef4444;flex-shrink:0"><circle cx="7" cy="7" r="6" stroke="currentColor" stroke-width="1.3"/><path d="M7 4v3.5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><circle cx="7" cy="10" r=".6" fill="currentColor"/></svg>
|
||
<span style="font-size:12.5px;color:#fca5a5">{{ $lastError }}</span>
|
||
</div>
|
||
@endif
|
||
|
||
<div class="sec-layout">
|
||
<div style="min-width:0;display:flex;flex-direction:column;gap:16px">
|
||
|
||
{{-- RAM-Hinweis --}}
|
||
<div style="padding:12px 16px;background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.25);border-radius:10px;display:flex;gap:12px;align-items:flex-start">
|
||
<svg width="18" height="18" viewBox="0 0 16 16" fill="none" style="color:#f59e0b;flex-shrink:0;margin-top:1px"><path d="M8 1.5L13.5 12H2.5L8 1.5Z" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/><path d="M8 6v3" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><circle cx="8" cy="10.5" r=".6" fill="currentColor"/></svg>
|
||
<div>
|
||
<div style="font-size:12.5px;font-weight:600;color:#fcd34d;margin-bottom:3px">Hoher RAM-Verbrauch</div>
|
||
<div style="font-size:12px;color:rgba(253,230,138,.7);line-height:1.5">
|
||
ClamAV lädt die komplette Viren-Datenbank (~500 MB) in den Arbeitsspeicher.
|
||
Auf Servern mit weniger als 2 GB RAM kann das die Performance beeinträchtigen.
|
||
Empfohlen für Produktiv-Mailserver mit ausreichend RAM.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Status-Karte --}}
|
||
<div class="mbx-section">
|
||
<div class="mbx-domain-head">
|
||
<div class="mbx-domain-info">
|
||
<span class="mbx-badge-mute">Status</span>
|
||
</div>
|
||
</div>
|
||
<div style="padding:16px 18px">
|
||
|
||
@if(!$installed)
|
||
{{-- Nicht installiert --}}
|
||
<div style="display:flex;flex-direction:column;gap:14px">
|
||
<div style="display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:8px">
|
||
<div style="width:8px;height:8px;border-radius:50%;background:#6b7280;flex-shrink:0"></div>
|
||
<div>
|
||
<div style="font-size:13px;font-weight:500;color:var(--mw-t2)">ClamAV nicht installiert</div>
|
||
<div style="font-size:11.5px;color:var(--mw-t4);margin-top:2px">Das Paket <code style="font-size:11px;background:var(--mw-bg3);padding:1px 5px;border-radius:4px">clamav clamav-daemon</code> ist nicht verfügbar.</div>
|
||
</div>
|
||
</div>
|
||
<div style="padding:12px 14px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:8px">
|
||
<div style="font-size:12px;font-weight:500;color:var(--mw-t3);margin-bottom:6px">Installation</div>
|
||
<code style="font-size:11.5px;color:var(--mw-t2);background:var(--mw-bg3);padding:6px 10px;border-radius:6px;display:block">apt install clamav clamav-daemon -y</code>
|
||
<div style="font-size:11.5px;color:var(--mw-t4);margin-top:6px">Nach der Installation diese Seite neu laden.</div>
|
||
</div>
|
||
</div>
|
||
|
||
@else
|
||
{{-- Installiert --}}
|
||
<div style="display:flex;flex-direction:column;gap:16px">
|
||
|
||
{{-- Status-Zeile --}}
|
||
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:8px">
|
||
<div style="display:flex;align-items:center;gap:10px">
|
||
@if($running)
|
||
<div style="width:8px;height:8px;border-radius:50%;background:#34d399;box-shadow:0 0 6px rgba(52,211,153,.4);flex-shrink:0"></div>
|
||
<div>
|
||
<div style="font-size:13px;font-weight:500;color:var(--mw-t1)">ClamAV läuft</div>
|
||
<div style="font-size:11.5px;color:var(--mw-t4);margin-top:1px">
|
||
Aktiv{{ $enabled ? ', Autostart ein' : '' }}
|
||
@if($ramMb) · {{ $ramMb }} MB RAM @endif
|
||
</div>
|
||
</div>
|
||
@else
|
||
<div style="width:8px;height:8px;border-radius:50%;background:#6b7280;flex-shrink:0"></div>
|
||
<div>
|
||
<div style="font-size:13px;font-weight:500;color:var(--mw-t2)">ClamAV inaktiv</div>
|
||
<div style="font-size:11.5px;color:var(--mw-t4);margin-top:1px">Installiert, aber nicht aktiv{{ $enabled ? '' : ' · Autostart aus' }}</div>
|
||
</div>
|
||
@endif
|
||
</div>
|
||
|
||
<div style="display:flex;gap:8px">
|
||
@if($running)
|
||
<button wire:click="disable" wire:loading.attr="disabled" wire:target="disable"
|
||
class="mbx-act-danger"
|
||
onclick="return confirm('ClamAV wirklich stoppen und deaktivieren?')">
|
||
<svg width="12" height="12" viewBox="0 0 14 14" fill="none"><rect x="2" y="2" width="10" height="10" rx="2" stroke="currentColor" stroke-width="1.3"/></svg>
|
||
<span wire:loading.remove wire:target="disable">Deaktivieren</span>
|
||
<span wire:loading wire:target="disable">Bitte warten…</span>
|
||
</button>
|
||
@else
|
||
<button wire:click="enable" wire:loading.attr="disabled" wire:target="enable"
|
||
class="mbx-btn-primary">
|
||
<svg width="12" height="12" viewBox="0 0 14 14" fill="none"><path d="M7 2v10M2 7h10" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/></svg>
|
||
<span wire:loading.remove wire:target="enable">Aktivieren & starten</span>
|
||
<span wire:loading wire:target="enable">Wird gestartet…</span>
|
||
</button>
|
||
@endif
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Signaturen --}}
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
|
||
<div style="padding:10px 14px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:8px">
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:3px">Signatur-Datenbank</div>
|
||
<div style="font-size:13px;font-weight:500;color:var(--mw-t1)">{{ $dbDate }}</div>
|
||
@if($dbVersion !== '—')<div style="font-size:11.5px;color:var(--mw-t4);margin-top:1px">Version {{ $dbVersion }}</div>@endif
|
||
</div>
|
||
<div style="padding:10px 14px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:8px;display:flex;align-items:center;justify-content:space-between">
|
||
<div>
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:3px">Signaturen aktualisieren</div>
|
||
<div style="font-size:12px;color:var(--mw-t3)">Läuft automatisch täglich</div>
|
||
</div>
|
||
<button wire:click="updateDb" wire:loading.attr="disabled" wire:target="updateDb" class="mbx-act-btn" style="flex-shrink:0">
|
||
<svg width="11" height="11" viewBox="0 0 14 14" fill="none" wire:loading.class="animate-spin" wire:target="updateDb"><path d="M12 7A5 5 0 1 1 7 2" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><path d="M7 2l2-2v4H5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||
<span wire:loading.remove wire:target="updateDb">Jetzt</span>
|
||
<span wire:loading wire:target="updateDb">…</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
@endif
|
||
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Info-Box --}}
|
||
<div class="mbx-section">
|
||
<div class="mbx-domain-head">
|
||
<div class="mbx-domain-info">
|
||
<span class="mbx-badge-mute">Info</span>
|
||
</div>
|
||
</div>
|
||
<div style="padding:16px 18px;display:flex;flex-direction:column;gap:10px">
|
||
<div style="font-size:12.5px;color:var(--mw-t3);line-height:1.6">
|
||
ClamAV ist ein Open-Source-Virenscanner der in Kombination mit Rspamd eingehende E-Mails auf Schadsoftware prüft.
|
||
Infizierte Anhänge werden automatisch abgewiesen oder in Quarantäne verschoben.
|
||
</div>
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px">
|
||
<div style="padding:8px 12px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:7px">
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:2px">Empfohlen bei</div>
|
||
<div style="font-size:12px;color:var(--mw-t2)">≥ 2 GB RAM</div>
|
||
</div>
|
||
<div style="padding:8px 12px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:7px">
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:2px">RAM-Verbrauch</div>
|
||
<div style="font-size:12px;color:var(--mw-t2)">~500–700 MB</div>
|
||
</div>
|
||
<div style="padding:8px 12px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:7px">
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:2px">Integration</div>
|
||
<div style="font-size:12px;color:var(--mw-t2)">Rspamd → Milter</div>
|
||
</div>
|
||
<div style="padding:8px 12px;background:var(--mw-bg4);border:1px solid var(--mw-b2);border-radius:7px">
|
||
<div style="font-size:11px;color:var(--mw-t4);margin-bottom:2px">Signaturen</div>
|
||
<div style="font-size:12px;color:var(--mw-t2)">Täglich automatisch</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|