Commit Graph

72 Commits (main)

Author SHA1 Message Date
boban f20a30839f Fix: 2FA-Setup funktioniert jetzt korrekt — Profilseite + secret column fix 2026-04-27 19:17:29 +02:00
boban ff28b98555 Fix: Fail2ban Restzeit via Python3-Script statt sqlite3-CLI (nicht installiert) 2026-04-27 05:20:10 +02:00
boban d84537b343 Fix: Fail2ban Restzeit-Fallback bei abgelaufenem DB-Eintrag + Update-Modal 2s Verzögerung vor done-State 2026-04-27 04:10:02 +02:00
boban 21015e69a3 Fix: Fail2ban SQLite-Abfrage nicht von is_readable abhängig machen (www-data hat kein Lesezugriff) 2026-04-27 04:05:55 +02:00
boban fc0ede4840 Feat: Fail2ban-Banlist zeigt Restlaufzeit und lesbaren Dienst-Namen 2026-04-27 04:03:01 +02:00
boban 653bf55415 Refactor: Config-Dateipfade generisch – mailwolt-* Prefix entfernt
- rspamd: mailwolt-actions.conf → actions.conf
- dovecot: 99-mailwolt-tls.conf → 99-tls.conf
- postfix: mailwolt-tls.cf → tls.cf
- fail2ban: mailwolt-whitelist.local / 00-mailwolt-defaults.local → generic
- neu: clubird:migrate-config-names Artisan-Kommando für Server-Migration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 01:13:56 +02:00
boban d3012792bc Fix: Artisan-Aufrufe von mailwolt:* auf clubird:* umgestellt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 01:04:09 +02:00
boban 7ccc7921c1 Fix: health:services Cache nach ClamAV enable/disable leeren
Dashboard zeigte ClamAV bis zu 5 Min. falsch als online/offline weil
der Monit-Cache veraltet war. Cache wird jetzt sofort invalidiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:29:33 +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 fa65bc1c2e Fix: ClamAV isInstalled() via file_exists statt Hardcode true
Prüft /usr/sbin/clamd und systemd unit-Dateien ohne exec().
Zeigt Install-Button wenn ClamAV nicht installiert ist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:17:24 +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 3f6f787fd3 Fix: ClamAV starting-State überlebt Reload + kein false-dirty bei untracked
Flag-Datei /tmp/mw-clamav-starting speichert Startzeitpunkt sodass
Spinner + Timer auch nach Seitenreload korrekt weiterläuft.
git_dirty_check filtert jetzt untracked Dateien (??) heraus damit
mailwolt-installer/ und ähnliche nicht fälschlich als dirty gelten.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:11:55 +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 029d959d51 Fix: ClamAV enable via Queue Job statt shell_exec im Web-Request
nohup/shell_exec wird von PHP-FPM-Prozessgroup nach Request-Ende gekillt.
ClamavEnable Job läuft im Queue-Worker und blockiert nicht den Web-Request.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 21:00:33 +02:00
boban 68e7635f6d Fix: ClamAV enable() blockiert nicht mehr – shell_exec + nohup + </dev/null
exec() wartet auch mit & auf Prozessende. shell_exec mit nohup und
stdin-Redirect auf /dev/null stellt echtes Hintergrund-Detaching sicher.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:54:42 +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 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 a9ad26757b Fix: installed immer true – Enable/Disable immer sichtbar
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:37:10 +02:00
boban 1bcd93908e Fix: isInstalled via systemctl list-unit-files statt Dateipfad-Check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:35:34 +02:00
boban 7d738392b2 Fix: isInstalled() prüft systemd-Unit statt Binary-Pfade
Zuverlässiger auf Servern wo PHP-FPM keinen Zugriff auf /usr/bin hat.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 20:33:37 +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 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 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 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 7bb922191f Feature: Update-System, Backup-Cron, SSL-Workflow, UI-Verbesserungen
- Update-Seite (/system/update) mit Log-Viewer, Fortschrittsbalken und goldenem Nav-Badge
- /usr/local/sbin/mailwolt-update Wrapper + backup:scheduled Cron-Command
- SSL: Checkbox entfernt, immer automatisch in Prod; local-Modus überspringt certbot mit manuellem Erzwingen-Modal
- Domain-Felder: live Validierung via updatedUiDomain/updatedMailDomain/updatedWebmailDomain
- DNS-Check in applyDomains() wiederhergestellt
- Backup-Cron: BackupScheduled Command + Laravel-Scheduler Eintrag in console.php
- /etc/cron.d/mailwolt-scheduler angelegt für schedule:run
- mailwolt-installer als regulärer Ordner (kein Submodule)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:23:43 +02:00
boban fc04ef44d0 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 23:17:06 +01:00
boban a7d84899fb Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 22:58:18 +01:00
boban e3dc81ef73 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 22:53:37 +01:00
boban 9acea7b89b Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 22:20:53 +01:00
boban 6c3cde5f65 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 22:10:01 +01:00
boban 77f22518c8 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-11-01 22:05:14 +01:00
boban 9aa9475387 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 18:17:27 +01:00
boban d4255b08fa Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 17:43:14 +01:00
boban 94aec78d4c Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 16:52:41 +01:00
boban d3783e1717 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 16:41:54 +01:00
boban dcf9a8d3e9 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 04:32:24 +01:00
boban 595828c5f6 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 04:29:30 +01:00
boban 834f173bb9 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 04:26:34 +01:00
boban a3a4ec4d06 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 04:13:39 +01:00
boban 2f390af9ed Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:42:36 +01:00
boban 530faf6b45 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:33:30 +01:00
boban 8058f9b814 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:27:36 +01:00
boban c4b906223c Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:18:53 +01:00
boban 81860d1851 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:14:26 +01:00
boban 792f0e3528 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 03:01:17 +01:00
boban 46591669d6 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 01:38:00 +01:00
boban 8690067d9c Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 01:21:22 +01:00
boban beb2f863a3 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 01:14:54 +01:00
boban e833033074 Fix: Mailbox Stats über Dovecot mit config/mailpool.php 2025-10-31 01:08:26 +01:00