1.1 KiB
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