MHSanaei
ce8b1bed77
feat(iplimit): gate IP limit on fail2ban and reset stale limits
...
Per-client IP limit only enforces where fail2ban is installed, so the panel now reports enforceability and disables the field otherwise:
- Add GET /panel/api/server/fail2banStatus (enabled/installed/usable/windows), cached 30s.
- ClientFormModal and ClientBulkAddModal disable the IP Limit input when not usable and show a hover tooltip; Windows gets a platform-specific message instead of the bash-menu hint.
- One-time migration ResetIpLimitNoFail2ban zeroes existing client limitIp (inbound settings JSON + clients table) on hosts without fail2ban, where the limit never applied.
- Drop the recurring '[LimitIP] Fail2Ban is not installed' warning.
- Add limitIpFail2banMissing/limitIpFail2banWindows/limitIpDisabled across all 13 locales.
2026-06-22 23:15:58 +02:00
..
2026-06-22 20:20:55 +02:00
2026-06-17 17:24:16 +02:00
2026-06-13 11:48:02 +02:00
2026-06-10 15:19:22 +02:00
2026-06-22 21:55:58 +02:00
2026-06-20 10:35:46 +02:00
2026-06-22 21:55:58 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-12 01:22:15 +02:00
2026-06-20 10:35:46 +02:00
2026-06-17 15:55:56 +02:00
2026-06-10 15:19:22 +02:00
2026-06-14 20:57:14 +02:00
2026-06-11 12:04:02 +02:00
2026-06-17 15:55:56 +02:00
2026-06-12 15:30:41 +02:00
2026-06-20 10:35:46 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-11 15:14:08 +02:00
2026-06-10 15:19:22 +02:00
2026-06-21 23:06:10 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-22 00:22:28 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 23:01:33 +02:00
2026-06-10 15:19:22 +02:00
2026-06-22 00:22:28 +02:00
2026-06-17 12:06:55 +02:00
2026-06-17 12:06:55 +02:00
2026-06-20 10:35:46 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-11 14:05:02 +02:00
2026-06-22 00:22:28 +02:00
2026-06-12 13:00:04 +02:00
2026-06-15 15:17:03 +02:00
2026-06-15 15:17:03 +02:00
2026-06-12 17:58:45 +02:00
2026-06-22 20:20:55 +02:00
2026-06-22 20:20:55 +02:00
2026-06-14 23:10:52 +02:00
2026-06-22 20:20:55 +02:00
2026-06-11 12:04:02 +02:00
2026-06-11 12:04:02 +02:00
2026-06-12 12:03:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-11 15:14:08 +02:00
2026-06-22 00:22:28 +02:00
2026-06-11 20:24:15 +02:00
2026-06-12 12:03:22 +02:00
2026-06-21 02:34:57 +02:00
2026-06-21 17:29:22 +02:00
2026-06-20 10:35:46 +02:00
2026-06-22 20:20:55 +02:00
2026-06-15 15:46:19 +02:00
2026-06-22 00:22:28 +02:00
2026-06-20 01:09:53 +02:00
2026-06-21 17:27:53 +02:00
2026-06-16 12:19:33 +02:00
2026-06-16 12:19:33 +02:00
2026-06-16 12:19:33 +02:00
2026-06-22 20:20:55 +02:00
2026-06-22 20:20:55 +02:00
2026-06-10 15:19:22 +02:00
2026-06-11 20:48:26 +02:00
2026-06-10 15:19:22 +02:00
2026-06-22 20:20:55 +02:00
2026-06-22 20:20:55 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-15 17:21:06 +02:00
2026-06-15 17:21:06 +02:00
2026-06-20 10:35:46 +02:00
2026-06-10 15:19:22 +02:00
2026-06-20 00:37:35 +02:00
2026-06-22 23:15:58 +02:00
2026-06-16 12:19:33 +02:00
2026-06-16 12:19:33 +02:00
2026-06-15 21:03:41 +02:00
2026-06-22 22:01:22 +02:00
2026-06-17 14:11:35 +02:00
2026-06-10 15:19:22 +02:00
2026-06-20 10:35:46 +02:00
2026-06-10 15:19:22 +02:00
2026-06-17 15:55:47 +02:00
2026-06-10 15:19:22 +02:00
2026-06-12 17:58:45 +02:00
2026-06-15 21:03:41 +02:00
2026-06-20 01:18:31 +02:00
2026-06-20 01:18:31 +02:00
2026-06-10 15:19:22 +02:00
2026-06-17 17:24:16 +02:00
2026-06-15 00:43:49 +02:00
2026-06-15 00:43:49 +02:00