diff --git a/app/Livewire/Ui/Security/Modal/Fail2BanJailModal.php b/app/Livewire/Ui/Security/Modal/Fail2BanJailModal.php index 52142a3..2152db4 100644 --- a/app/Livewire/Ui/Security/Modal/Fail2BanJailModal.php +++ b/app/Livewire/Ui/Security/Modal/Fail2BanJailModal.php @@ -134,31 +134,22 @@ class Fail2BanJailModal extends ModalComponent foreach ($ips as $ip) { $banAt = null; $until = null; $remaining = null; - // 2) DB-Info pro IP (optional, je nach Schema belegt) + // 1) Primär: DB if ($info = $this->banInfoFromDb($jail, $ip)) { $banAt = $info['banned_at']; if ((int)$info['expire'] === -1) { - $remaining = -1; + $remaining = -1; // permanent } elseif ((int)$info['expire'] > 0) { $until = (int)$info['expire']; $remaining = max(0, $until - time()); - } - } - - // 3) Fallback: Log + Default-Bantime - if ($remaining === null) { - $banAt = $banAt ?? $this->lastBanTimestamp($jail, $ip); - if ($banAt !== null) { - $remaining = max(0, $defaultBantime - (time() - $banAt)); - $until = $remaining > 0 ? $banAt + $defaultBantime : null; } else { - $remaining = -2; // ~unbekannt/approx + // kein expire in DB → Fallback unten } } - // 4) Safety: falls 0s, aber F2B hält sie noch → als „~unbekannt“ kennzeichnen - if ($remaining === 0 && $this->isStillBanned($jail, $ip)) { - $remaining = -2; + // 2) Fallback: KEIN fixes Datum, nur "~ Bantime" + if ($remaining === null) { + $remaining = -2; // "~ ca. {$defaultBantime}s" } [$timeText, $metaText, $boxClass] = $this->present($remaining, $banAt, $until);