Commit Graph

130 Commits (7a89493efdb5102864fb8f64c05afdbaf1283d54)

Author SHA1 Message Date
boban 7a89493efd Feat: Standard DKIM-Selektor von mwl1 auf clb1 geändert 2026-04-27 06:18:05 +02:00
boban afce3d9687 Feat: Quarantäne pro Zeile und pro Tab löschen (lokal via Cache) 2026-04-27 06:16:03 +02:00
boban 0beb12569b Feat: Quarantäne-Verlauf leeren Button (RSpamd historyreset) 2026-04-27 06:11:41 +02:00
boban 30d2c28504 Fix: UpdateCard dispatcht Toast+closeModal gleichzeitig; Fail2ban Dienst-Badge nicht gestreckt 2026-04-27 05:39:02 +02:00
boban 93699108eb Feat: Fail2ban-Banlist mit Grid-Layout für saubere Spaltenausrichtung 2026-04-27 05:28:55 +02:00
boban fc0ede4840 Feat: Fail2ban-Banlist zeigt Restlaufzeit und lesbaren Dienst-Namen 2026-04-27 04:03:01 +02:00
boban 41de455826 Add: Logs-Button in UpdateCard + logos.svg 2026-04-27 03:50:20 +02:00
boban 49463bf34d Fix: Tab-URL-Keys auf Englisch (general, domains, backup, notifications) 2026-04-27 03:41:34 +02:00
boban eb77ec3342 Feat: Einstellungs-Tabs auf Deutsch (sicherung/meldungen) + Sidebars für alle Tabs 2026-04-27 03:40:40 +02:00
boban ff6002ca0b Feat: Einstellungen mit URL-Tabs (Allgemein, Domains & SSL, Backup, Benachrichtigungen) 2026-04-27 03:35:59 +02:00
boban dcb4456ba6 Fix: Update-Modal auf v403-Basis zurückgesetzt (ohne Slider) 2026-04-27 03:27:36 +02:00
boban 2fb66df19e Fix: Update-Modal – nur Ping-Animation und Slider entfernt, Basis v406 2026-04-27 03:25:57 +02:00
boban f756789cc4 Fix: Update-Modal ohne Slider und Ping-Dots, Spinner im Header 2026-04-27 03:18:22 +02:00
boban 32cf27bcd2 Fix: Update-Modal ohne Alpine.js – verhindert leeres Modal bei laufendem Update 2026-04-27 03:17:47 +02:00
boban 74600185ba Redesign: Update-Modal mit CluBird-Icon, Progress-Bar und besserem Log-Bereich 2026-04-27 03:14:28 +02:00
boban 93bcb56605 Rename: WoltGuard → CluGuard in UI-Labels 2026-04-27 02:48:48 +02:00
boban 20c9100226 Fix: doppeltes "v" in Dashboard-Versions-Anzeige
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 02:22:14 +02:00
boban 23d6d9cb46 Design: Update-Card mit CluBird Logo + mw-* Farbsystem
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 01:04:40 +02:00
boban bbc7cc6c34 refactor: config/mailwolt.php → config/clubird.php + Artisan Commands umbenennen
- config/mailwolt.php → config/clubird.php (Datei umbenannt)
- Alle config('mailwolt.*') → config('clubird.*') ersetzt (15 PHP + 3 Blade)
- Artisan-Signaturen: mailwolt:* → clubird:* (5 Commands)
- Artisan-Aufrufe in Jobs + Scheduler aktualisiert
- Config-Cache neu aufgebaut

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 01:00:46 +02:00
boban 597773123f feat: Rebranding Mailwolt → CluBird
- SVG-Dateien erstellt: icon, icon-sm, favicon, logo-dark, logo-sidebar
- Sidebar: CluBird-Vogellogo + Wordmark mit Indigo-Akzent
- Alle sichtbaren "Mailwolt"-Texte in Blade-Dateien auf CluBird geändert
- Favicon-Link in dvx.blade.php ergänzt
- CSS-Klassen (.mw-*), config/mailwolt.php und Sudo-Scripts bleiben unverändert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 00:44:42 +02:00
boban afad3c3471 Fix: Gap zwischen System-Domain und leerem Domains-State
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 00:35:57 +02:00
boban cdfdcc0756 Fix: Benachrichtigungs-Defaults – User-Email + sinnvoller Absendername
Absendername-Default: '{Instanzname} Benachrichtigung'.
Admin-Email-Default: Login-Email des eingeloggten Users (notifyEmail()).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 23:40:45 +02:00
boban c6d6798898 Feat: Benachrichtigungs-Einstellungen + sysmail.BASE_DOMAIN zurückgesetzt
- Absendername und Admin-E-Mail konfigurierbar in Einstellungen
- MAIL_FROM_NAME wird automatisch in .env synchronisiert
- Sysmail-Domain wieder sysmail.<BASE_DOMAIN> (nicht MTA-FQDN)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 23:37:55 +02:00
boban 496912f5ca Fix: Webmail-Icon bei System-Domain entfernt
System-Domain ist nur zum Versenden (no-reply), Webmail-Zugriff macht dort keinen Sinn.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 23:31:55 +02:00
boban a2ba9a7c03 UI: Update-Seite überarbeitet – sauberes mbx-Design, eine Karte
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:52:34 +02:00
boban ea37abacf8 Fix: Livewire multiple root elements – style-Tag in Root-div verschoben
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:50:42 +02:00
boban 32a3b51b2a UI: Update-Seite im korrekten mw-Design – 2-spaltig, responsiv
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:50:06 +02:00
boban 0375aed2ce UI: Update-Seite komplett neu gestaltet – responsiv, mobile-first
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:46:53 +02:00
boban 9673e717d1 Fix: UpdateCard-Status korrekt + Dashboard-Card zeigt neue Version an
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:24:39 +02:00
boban ce66a84c8d Fix: ClamAV wird beim Update automatisch installiert, UI nur Ein/Aus
ensure_system() installiert clamav-daemon falls nicht vorhanden,
deaktiviert aber den Dienst. User sieht nur noch Ein/Ausschalten.
Install-Button, $installed-Property und install()-Methode entfernt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:19:26 +02:00
boban 5f627dcb0e Fix: ClamAV enable mit --no-block + kein Queue-Job nötig
systemctl start --no-block kehrt sofort zurück, systemd startet ClamAV
im Hintergrund. runCmd('enable') direkt aufrufen statt Queue-Job.
wire:poll.keep-alive verhindert payload-Fehler in der Browser-Console.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:15:18 +02:00
boban 2331ef74f6 Feat: ClamAV Aktivieren mit Spinner + Sekundentimer bis ClamAV läuft
wire:poll.3s prüft serviceActive() nach Klick. Zeigt laufenden Spinner
mit Sekundenanzeige (0s, 3s, 6s…) bis ClamAV aktiv ist, dann Erfolgsmeldung.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:08:46 +02:00
boban d0e1d5613c Fix: ClamAV – kein blockierendes Overlay mehr, Spinner nur auf Klick
Vollflächiges wire:loading-Overlay entfernt das beim Seitenaufruf
blockierte. wire:loading.class animate-spin nur noch auf wire:target=refresh
beschränkt damit kein Spinner beim Laden erscheint.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:56:59 +02:00
boban 673e9ec1df Fix: ClamAV enable() – kein Spinner mehr, einfache Textmeldung
$starting-Property, pollStatus() und wire:poll entfernt.
enable() startet ClamAV im Hintergrund und zeigt nur eine
Info-Meldung an – kein dauerhafter Spinner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:53:35 +02:00
boban 0fc6ee81d6 Fix: wire:poll nur innerhalb @if($starting) – kein dauerhafter Poll
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:49:06 +02:00
boban 79b1eeb93c Fix: ClamAV enable non-blocking – Hintergrund-Start + Poll alle 3s
- enable() startet Dienst via nohup im Hintergrund (kein Request-Timeout)
- $starting=true → wire:poll.3s ruft pollStatus() auf
- Overlay zeigt "ClamAV wird gestartet… lädt Viren-DB / bis 60s"
- pollStatus() erkennt wenn Dienst läuft → Overlay weg, Erfolg-Banner

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:44:56 +02:00
boban dc5d8582e1 Fix: ClamAV Feedback – Loading-Overlay + Erfolg/Fehler-Banner inline
- Loading-Overlay über Status-Karte beim Aktivieren/Deaktivieren/Installieren
- $lastSuccess Property für grünen Erfolg-Banner (kein Toast nötig)
- runCmd() helper mit Log für Debugging
- Fehler-Text white-space:pre-wrap für mehrzeilige Ausgaben

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:42:45 +02:00
boban 6fa77f9f9b Feature: ClamAV Installation direkt aus der UI + install-Befehl im Wrapper
- mailwolt-clamav: install) apt-get install clamav clamav-daemon clamav-freshclam
- ClamavManager: install() Methode + $installing State
- Blade: Installieren-Button wenn nicht installiert (statt nur Text-Hinweis)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:32:30 +02:00
boban 7b1274f349 Fix: ClamAV Button-Styles korrigiert + mbx-btn-danger CSS-Klasse
- Aktualisieren + Jetzt: mbx-act-btn (icon-only 28px) → mbx-btn-mute (text+icon)
- Deaktivieren: mbx-act-danger (kein base-style) → mbx-btn-danger (neue Klasse)
- mbx-btn-danger: transparent mit rotem Border/Text, flex align-items:center

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:03:10 +02:00
boban cbdab12c19 UI: ClamAV-Seite Layout verbessert – Sidebar mit RAM-Hinweis + Info
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 19:59:14 +02:00
boban b107e9a580 Feature: ClamAV-Verwaltung in Sicherheit-Sidebar
- Neue Seite /security/clamav: Status, Aktivieren/Deaktivieren,
  Signatur-Update, RAM-Hinweis, Info-Box
- Optionale Dienste (ClamAV) im Dashboard nur sichtbar wenn aktiv
- mailwolt-clamav sbin-Wrapper + sudoers-Regel in ensure_system

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 19:21:37 +02:00
boban 1b79454df5 Fix: Blade-Syntaxfehler in SSL-Seite (@if/@elseif/@endif inline)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 10:22:44 +02:00
boban 38d6fdba6f Fix: SSL-Seite zweispaltig (Tabelle links, Einrichten rechts) + Settings kompakt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 10:20:28 +02:00
boban 871d69cc2d Fix: Korrekte Route-Namen ui.security.ssl + ui.system.settings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 10:09:25 +02:00
boban f12c412bbe Fix: Route-Name security.ssl + SSL-Seite zweispaltig
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 10:07:11 +02:00
boban 7f56926b70 Refactor: SSL-Verwaltung nach Security/SSL verschoben
- Zertifikate einrichten/erneuern nur noch unter Sicherheit → SSL/TLS
- SSL-Seite: Provisioning mit Fortschritt, Ablaufdatum + Tage in Tabelle
- Einstellungen: nur noch read-only Status + Link zu SSL-Seite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 10:01:58 +02:00
boban 904d60ed2b Fix: 503 fetch-Interceptor + Auto-Update-Polling + SSL-Banner prüft echte Certs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 09:26:20 +02:00
boban d60d228012 Fix: mx-Domain bekommt LE-Zertifikat + Postfix/Dovecot werden konfiguriert
- mailwolt-apply-domains: MAIL_HOST wird in ACME-Challenge-Block aufgenommen,
  certbot wird auch für die Mail-Domain ausgeführt, Postfix + Dovecot erhalten
  danach automatisch das neue Zertifikat
- SslCertificatesTable: certbot-Ausgabe korrekt geparst (Einrückung mit Leerzeichen)
- settings-form: "kein Zertifikat nötig" entfernt (Mail-Domain braucht Zertifikat)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 09:04:02 +02:00
boban bd7bb50a52 Fix: SSL-Cert-Status robuster + Provisioning-State nach Reload erhalten
- loadSslStatus(): clearstatcache() + renewal-Conf als primärer Existenzcheck
  (renewal/ ist immer 755, zuverlässiger als is_dir auf live/ das 750 sein kann)
  + /usr/bin/openssl (voller Pfad für sudoers-Matching)
- restoreSslProvisioningState(): stellt letzten Provisioning-Zustand aus
  State-Dateien wieder her, so dass Status nach Page-Reload sichtbar bleibt
- Button zeigt nach Abschluss "Erneut einrichten" statt disabled zu bleiben

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 08:44:08 +02:00
boban f740ffc753 Feature: Dedizierter SSL-Abschnitt in Einstellungen mit Echtzeit-Fortschritt
- Neuer Abschnitt "SSL-Zertifikate" in den Einstellungen:
  · Zeigt pro Domain (UI, Webmail, Mailserver) ob LE-Cert vorhanden ist,
    Ablaufdatum und Status (OK / fehlt / läuft ab / abgelaufen)
  · Button "Let's Encrypt Zertifikate einrichten" startet Provisioning
    im Hintergrund (nohup, non-blocking)
  · Live-Fortschrittsanzeige per wire:poll.2s mit Status-Icons pro Domain
    (pending → running → done/error/skip)
- saveDomains() ruft apply-domains jetzt ohne certbot auf (--ssl-auto 0) —
  Domains speichern und SSL einrichten sind damit getrennte Aktionen
- loadSslStatus() liest Certbot-Zertifikat-Info direkt aus openssl
- spin-Keyframe für Spinner-Animation in app.css

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 08:04:58 +02:00