Merge origin/main: Review-Branch mit v2.4.0-Features zusammenführen

Konfliktauflösung kombiniert beide Seiten:
- Auth: Secure-Cookie-Flag + DB-Session-Handler (main)
- UniFiController: createVouchers (n-Parameter, 1 API-Call) + QoS-Optionen (main)
- index.php: IP-Rate-Limit/PRG/Sticky-Forms + CAPTCHA/SMS/QoS/Tageslimit (main)
- users.php: 2FA-Reset (main) auf POST+PRG umgestellt wie übrige Aktionen
- forgot_password: Session-Throttle (main) + IP-Throttle kombiniert
- Eigene Migrationen wegen Nummernkollision auf 0005/0006 umbenannt

https://claude.ai/code/session_01KKVpVPJjrTKGoRgpJcySD4
This commit is contained in:
Claude 2026-06-09 20:03:32 +00:00
commit 1a2f86ed3d
No known key found for this signature in database
65 changed files with 3136 additions and 32 deletions

View file

@ -90,6 +90,7 @@ set_exception_handler(function($e) use ($isCli) {
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/includes/Database.php';
require_once __DIR__ . '/includes/UniFiController.php';
require_once __DIR__ . '/includes/Notifier.php';
$db = Database::getInstance();
@ -196,6 +197,9 @@ try {
$siteResult['error'] = $e->getMessage();
$totalStats['sites_failed']++;
logMessage(" FEHLER - " . $e->getMessage(), $isCli);
if (class_exists('Notifier')) {
Notifier::controllerUnreachable($site['name'], $e->getMessage());
}
}
$results[] = $siteResult;