1a3401f418
T-10: Fix get_geo_batch_lookup for proper injection with GeoCache instance
...
Instead of returning a bound method (geo_cache.lookup_batch), now inject
the GeoCache instance directly into routers and services. This provides
proper runtime isolation since T-04 made GeoCache a proper object.
Changes:
- Remove get_geo_batch_lookup() dependency provider
- Add GeoCacheDep type alias for injecting GeoCache instances
- Update all routers (bans, blocklist, dashboard, jails) to use GeoCacheDep
- Update ban_service, blocklist_service, jail_service to accept GeoCache
- Update service protocols to match new signatures
- Update docstrings to reference GeoCache methods instead of module functions
All callers now call geo_cache.lookup_batch(...) directly instead of
geo_batch_lookup(...), providing real dependency injection with proper
testing isolation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-25 18:53:47 +02:00
fdfd24508f
Refactor backend services and routers
...
- Reorganized dashboard router with improved structure
- Enhanced ban_service with better separation of concerns
- Updated history service with cleaner logic
- Improved constants and configuration handling
- Updated documentation of completed tasks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-23 16:06:10 +02:00
fd685e8211
refactor: Remove unused HTTPException imports from routers
...
After removing all try/except blocks that used HTTPException for domain
exception conversion, these imports are no longer needed in the routers.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-23 16:01:44 +02:00
5480dce221
refactor: Remove duplicate router-level exception helpers
...
All routers now let domain exceptions propagate to the global handlers in main.py
instead of catching and converting them to HTTPException. This eliminates:
- Duplicate exception-to-HTTP-status mappings across 8 routers
- Duplicate helper functions (_bad_gateway, _not_found, _conflict, etc.)
- Inconsistent error response formats
Changes:
- Removed all try/except blocks from routers that catch domain exceptions
- Removed duplicate helper functions from all routers
- Added missing exception handlers to main.py for:
* ActionNameError
* FilterNameError
* JailNameError
* JailNotFoundInConfigError
* FilterInvalidRegexError
- Removed unused imports from affected routers
All domain exceptions now propagate to the single authoritative mapping in
main.py, ensuring consistent error codes, messages, and logging across the API.
Affected routers:
- action_config.py: Removed _action_not_found, _bad_request, _not_found helpers
- bans.py: Removed try/except in ban/unban endpoints
- config_misc.py: Removed try/except blocks
- file_config.py: Removed 6 try/except blocks and _service_unavailable helper
- filter_config.py: Removed try/except blocks
- geo.py: Removed try/except in lookup_ip endpoint
- jail_config.py: Removed try/except blocks
- jails.py: Removed try/except blocks
- server.py: Removed try/except blocks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-04-23 16:00:37 +02:00
900d111a5d
Refactor geo enrichment into jail_service and mark Task 14 done
2026-04-17 16:36:22 +02:00
487f252a4d
Move history geo enrichment into history service
2026-04-17 16:28:53 +02:00
8c6950afc1
Task 13: move ban_ip, unban_ip, and get_active_bans from jail_service to ban_service and update routers/tests
2026-04-17 16:22:20 +02:00
6e1e3c4546
Remove unused service protocol aliases and use direct service imports
2026-04-17 16:01:27 +02:00
7d16391c6c
Centralise DbDep and mark Task 11 complete
2026-04-17 15:44:13 +02:00
58112fb191
Move auth session signing into auth_service.login
2026-04-17 15:33:09 +02:00
33643880ed
Extract fail2ban restart orchestration into jail_service
2026-04-17 15:23:54 +02:00
c21cf82e9e
Refactor map color threshold storage into dedicated settings service
2026-04-17 15:13:07 +02:00
13b3fde274
Fix stale activation record on failed jail activation
...
Record activation only after a successful jail activate request and add regression coverage to prevent stale last_activation state.
2026-04-17 14:53:57 +02:00
73cc212e28
Invert blocklist scheduler dependency to task callback
2026-04-15 21:31:08 +02:00
cdb0c3681e
Task 3: remove config_file_service facade, update direct imports and tests
2026-04-15 21:16:00 +02:00
0e22d1c425
Move config file exceptions into app.exceptions
...
Move ConfigDirError, ConfigFileNotFoundError, ConfigFileExistsError, ConfigFileWriteError, and ConfigFileNameError from raw_config_io_service into the shared domain exception module. Update router and tests to import the exceptions from app.exceptions.
2026-04-15 10:28:27 +02:00
328f3575e2
Move Fail2Ban exceptions into central app.exceptions module
2026-04-15 10:22:48 +02:00
a79f5339bc
Refactor fail2ban DB path lookup and simplify geo router response
2026-04-15 09:15:50 +02:00
a8f2d2d7b9
Refactor geo re-resolve endpoint into geo_service and add typed response
2026-04-15 08:56:37 +02:00
b70dc6fa7a
Refactor blocklist schedule management into service
2026-04-14 15:25:36 +02:00
86fa271c40
Remove FastAPI dependency from jail config service signatures
2026-04-14 15:01:05 +02:00
6b436dc354
Fix undefined names and config router imports / task status update
2026-04-14 13:53:39 +02:00
0e84f1f60c
Fix config sub-router prefixes and router tags
2026-04-14 10:25:36 +02:00
41a67d52ab
Remove ghost service imports from config router
2026-04-14 10:20:28 +02:00
56ade7fb08
Task 13: wire geo_batch_lookup through dependency injection and mark task completed
2026-04-14 09:51:23 +02:00
a564830abb
Fix blocklist service injection and centralize session cookie name
2026-04-14 09:21:38 +02:00
a5674f9e4c
Consolidate domain exceptions into app.exceptions
...
Move all shared domain exception classes to backend/app/exceptions.py and update services/routers to import the canonical exceptions. Update docs to reflect the shared exceptions source.
2026-04-13 19:35:12 +02:00
4b2e86edbb
Fix filter_config router import and mark Task 3 complete
2026-04-13 19:10:24 +02:00
e221cd414f
Split monolithic config router into focused subrouters
2026-04-12 19:41:43 +02:00
952469e667
Task 7 complete: move config operational orchestration from routers into service/task layer
2026-04-10 21:24:54 +02:00
f61d497e4e
Refactor backend auth, setup, router, and runtime state handling
2026-04-10 21:00:36 +02:00
3371ff8324
Introduce service/repository dependency protocols and tests
2026-04-10 19:51:19 +02:00
1dfc17f4f5
Replace process-local session cache with pluggable session cache backend
2026-04-10 19:22:02 +02:00
2157502670
Eliminate direct app.state access from routers
2026-04-10 19:15:37 +02:00
4043cdfa3c
Harden session cookie security with configurable cookie flags
2026-04-09 21:43:32 +02:00
208f98dc97
Use session_secret for signed auth session tokens
2026-04-09 21:30:08 +02:00
6eab47f7ba
Fix setup persistence and load persisted runtime configuration
2026-04-07 21:41:55 +02:00
1e39e5a1d6
Refactor app helpers and use AppStateDep in config router
...
Move service-dependent helper wrappers from app.utils to app.helpers and update config router activation/rollback to use explicit AppState dependency.
2026-04-07 20:39:56 +02:00
ed3aa61c35
Refactor routers to use explicit FastAPI app dependencies
2026-04-07 20:27:06 +02:00
30e0dd71c9
Use explicit AppState dependency in config router and update task status
2026-04-07 20:15:28 +02:00
59a56f2e4f
Use dependency injection for health status and add health router regression test
2026-04-07 20:05:54 +02:00
0a70e40d8b
Refactor config router to use explicit dependency injection
2026-04-06 21:11:02 +02:00
89ab41cc9e
Convert setup guard to startup-driven cache and update tests
2026-04-06 20:38:15 +02:00
594f55d157
Refactor router dependency wiring to explicit app state providers
2026-04-06 20:12:04 +02:00
f0ee466603
backup
2026-04-06 19:49:53 +02:00
3b58179845
Refactor router dependencies to use explicit fail2ban socket and HTTP session injection
2026-04-06 16:38:17 +02:00
42c030c706
Refactor backend to use request-scoped SQLite connections
2026-04-05 23:14:46 +02:00
c51858ec71
Add country-specific companion table filtering for map page
2026-04-05 22:12:06 +02:00
ffaa14f864
Switch dashboard/map/history views to archive source for long-term data
...
Update fail2ban dbpurgeage to 648000 and history sync backfill/pagination for archive-based 7.5 day history.
2026-04-05 20:21:54 +02:00
9f05da2d4d
Complete history archive support for dashboard/map data and mark task finished
...
Add source=archive option for dashboard endpoints and history service; update Docs/Tasks.md; include archive branch for list_bans, bans_by_country, ban_trend, bans_by_jail; tests for archive paths.
2026-03-28 12:39:47 +01:00