20 lines
1.1 KiB
Markdown
20 lines
1.1 KiB
Markdown
# BanGUI — Task List
|
|
|
|
This document breaks the entire BanGUI project into development stages, ordered so that each stage builds on the previous one. Every task is described in prose with enough detail for a developer to begin work. References point to the relevant documentation.
|
|
|
|
---
|
|
|
|
## ✅ FIXED — Blocklist import: `No module named 'fail2ban'` on every IP (2026-03-01)
|
|
|
|
**Root cause:** In `app/main.py`, the `fail2ban-master` path was computed using
|
|
`Path(__file__).resolve().parents[2] / "fail2ban-master"`. This resolves correctly
|
|
in local dev (`backend/app/main.py` → repo root) but resolves to `/fail2ban-master`
|
|
inside the Docker container (where the source is copied to `/app/app/main.py`),
|
|
so `fail2ban` was never added to `sys.path` and `pickle.loads()` raised
|
|
`ModuleNotFoundError: No module named 'fail2ban'` for every socket response.
|
|
|
|
**Fix:** Replaced the hardcoded `parents[2]` with a walk-up loop
|
|
(`_find_fail2ban_master()`) that iterates over all ancestors until it finds a
|
|
`fail2ban-master/` sibling directory — correct in both local dev and Docker.
|
|
|
|
**Commit:** `19bb94e` — _Fix fail2ban-master path resolution for Docker container_ |