feat(stage-1): inactive jail discovery and activation
- Backend: config_file_service.py parses jail.conf/jail.local/jail.d/*
following fail2ban merge order; discovers jails not running in fail2ban
- Backend: 3 new API endpoints (GET /jails/inactive, POST /jails/{name}/activate,
POST /jails/{name}/deactivate); moved /jails/inactive before /jails/{name}
to fix route-ordering conflict
- Frontend: ActivateJailDialog component with optional parameter overrides
- Frontend: JailsTab extended with inactive jail list and InactiveJailDetail pane
- Frontend: JailsPage JailOverviewSection shows inactive jails with toggle
- Tests: 57 service tests + 16 router tests for all new endpoints (all pass)
- Docs: Features.md, Architekture.md, Tasks.md updated; Tasks 1.1-1.5 marked done
This commit is contained in:
@@ -90,6 +90,8 @@ A dedicated view for managing fail2ban jails and taking manual ban actions.
|
||||
- A list of all jails showing their name, current status (running / stopped / idle), backend type, and key metrics.
|
||||
- For each jail: number of currently banned IPs, total bans since start, current failures detected, and total failures.
|
||||
- Quick indicators for the jail's find time, ban time, and max retries.
|
||||
- A toggle to also show **Inactive Jails** — jails that are defined in fail2ban config files but are not currently running.
|
||||
- Each inactive jail has an **Activate** button that enables and reloads it immediately, with optional overrides for ban time, find time, max retries, port, and log path.
|
||||
|
||||
### Jail Detail
|
||||
|
||||
@@ -154,6 +156,7 @@ A page to inspect and modify the fail2ban configuration without leaving the web
|
||||
- A scrollable left pane lists all items (jail names, filter filenames, action filenames).
|
||||
- Each item displays an **Active** or **Inactive** badge. Active items are sorted to the top; items within each group are sorted alphabetically.
|
||||
- A jail is "active" if fail2ban reports it as enabled at runtime. A filter or action is "active" if it is referenced by at least one enabled jail.
|
||||
- Inactive jails (present in config files but not running) are discoverable from the Jails tab. Selecting one shows its config file settings and allows activating it.
|
||||
- Clicking an item loads its structured configuration form in the right detail pane.
|
||||
- On narrow screens (< 900 px) the list pane collapses into a dropdown above the detail pane.
|
||||
- Show global fail2ban settings (ban time, find time, max retries, etc.) on the Global Settings tab.
|
||||
@@ -169,6 +172,8 @@ A page to inspect and modify the fail2ban configuration without leaving the web
|
||||
- Configure ban-time escalation: enable incremental banning and set factor, formula, multipliers, maximum ban time, and random jitter.
|
||||
- Save changes and optionally reload fail2ban to apply them immediately.
|
||||
- Validation feedback if a regex pattern or setting value is invalid before saving.
|
||||
- **Activate** an inactive jail directly from the Jails tab detail pane, with optional parameter overrides.
|
||||
- **Deactivate** a running jail from the Jails tab; writes ``enabled = false`` to a local override file and reloads fail2ban.
|
||||
|
||||
### Raw Configuration Editing
|
||||
|
||||
|
||||
Reference in New Issue
Block a user