feat: Implement SQLite schema and migrations for intrusion detection system
- Added schema definition and migration logic in app/db/schema.py. - Created tables for log sources, requests, IP stats, scans, blocklist, whitelist, and firewall rules. - Introduced functions to apply migrations and ensure database integrity. feat: Enhance scan functionality with database integration - Added _sync_blocklist_to_db function to synchronize blocklist with SQLite. - Updated run_scan function to handle database connections and scan records. - Implemented error handling for database operations during scans. feat: Introduce log analysis page and API endpoints - Created analysis.html template for displaying log analysis results. - Added routes for fetching top IPs, IP request timelines, and cross-source IPs. - Integrated analysis data into the dashboard and status endpoints. fix: Ensure whitelists are synchronized with the database - Implemented sync_whitelists_to_db function to persist in-memory whitelists. - Updated constants.py to define the path for the SQLite database. refactor: Modularize analysis helpers for better maintainability - Created _analysis_helpers function to encapsulate SQLite query logic. - Updated routes.py to utilize new analysis helper functions for API responses.
This commit is contained in:
1 parent
0137264fe4
commit
6036fa8b1e
17 files changed
+1292
-5
No files matched your search
@@ -49,6 +49,10 @@ intrusion-detection/
|
||||
│ ├── scan/ scan pipeline
|
||||
│ │ ├── __init__.py consolidated scanner (run_scan, ScanParams, ScanResult)
|
||||
│ │ └── scan_state.py incremental log scan state (load/save)
|
||||
│ ├── db/ SQLite store (see .github/instructions/DATABASE.md)
|
||||
│ │ ├── __init__.py connection factory + migrations runner
|
||||
│ │ ├── schema.py DDL for all tables (PRAGMA user_version migrations)
|
||||
│ │ └── repositories.py queries: logs, scans, blocklist, whitelist, firewall
|
||||
│ ├── utils/ shared utilities
|
||||
│ │ ├── constants.py all config constants (paths, env vars, thresholds)
|
||||
│ │ ├── files.py read_lines, find_logs, write_csv/json/lines
|
||||
@@ -67,8 +71,9 @@ intrusion-detection/
|
||||
│ ├── cloudflare/
|
||||
│ │ ├── ips-v4.txt
|
||||
│ │ └── ips-v6.txt
|
||||
│ └── paloalto/
|
||||
│ └── scanner-ips.txt
|
||||
│ ├── paloalto/
|
||||
│ │ └── scanner-ips.txt
|
||||
│ └── ids.db local SQLite store (log/scan/blocklist/whitelist history; auto-created)
|
||||
├── reports/ generated reports (per-run + per-source)
|
||||
│ ├── copyparty/
|
||||
│ ├── npm/
|
||||
@@ -253,6 +258,8 @@ Pages:
|
||||
| `/blocklist` | view the consolidated blocklist, add/remove entries |
|
||||
| `/firewall` | view address lists + rules, preview/apply a sync |
|
||||
| `/whitelist` | view/manage provider whitelist CIDRs |
|
||||
| `/graph` | visualize the 0.0.0.0/8 address space (blocked/whitelisted pixels) |
|
||||
| `/analysis` | detailed persisted-log analysis (top IPs, drill-down, cross-source) |
|
||||
|
||||
Scans run in a background thread (only one at a time) and report progress via
|
||||
the JSON API, so the UI never blocks. Firewall sync is **dry-run by default**
|
||||
|
||||
Reference in new issue
Block a user