feat: implement IP ban and rate-limiting logic in database with migration scripts
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
|
||||
"""
|
||||
Memory cleanup task for Krawl honeypot.
|
||||
Periodically cleans expired bans and stale entries from ip_page_visits.
|
||||
|
||||
NOTE: This task is no longer needed. Ban/rate-limit state has been moved from
|
||||
in-memory ip_page_visits dict to the ip_stats DB table, eliminating unbounded
|
||||
memory growth. Kept disabled for reference.
|
||||
"""
|
||||
|
||||
from logger import get_app_logger
|
||||
@@ -13,8 +16,8 @@ from logger import get_app_logger
|
||||
|
||||
TASK_CONFIG = {
|
||||
"name": "memory-cleanup",
|
||||
"cron": "*/5 * * * *", # Run every 5 minutes
|
||||
"enabled": True,
|
||||
"cron": "*/5 * * * *",
|
||||
"enabled": False,
|
||||
"run_when_loaded": False,
|
||||
}
|
||||
|
||||
@@ -22,35 +25,4 @@ app_logger = get_app_logger()
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Clean up in-memory structures in the tracker.
|
||||
Called periodically to prevent unbounded memory growth.
|
||||
"""
|
||||
try:
|
||||
from tracker import get_tracker
|
||||
|
||||
tracker = get_tracker()
|
||||
if not tracker:
|
||||
app_logger.warning("Tracker not initialized, skipping memory cleanup")
|
||||
return
|
||||
|
||||
stats_before = tracker.get_memory_stats()
|
||||
|
||||
tracker.cleanup_memory()
|
||||
|
||||
stats_after = tracker.get_memory_stats()
|
||||
|
||||
visits_reduced = stats_before["ip_page_visits"] - stats_after["ip_page_visits"]
|
||||
|
||||
if visits_reduced > 0:
|
||||
app_logger.info(
|
||||
f"Memory cleanup: Removed {visits_reduced} stale ip_page_visits entries"
|
||||
)
|
||||
|
||||
app_logger.debug(
|
||||
f"Memory stats after cleanup: "
|
||||
f"ip_page_visits={stats_after['ip_page_visits']}"
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Error during memory cleanup: {e}")
|
||||
app_logger.debug("memory-cleanup task is disabled (ban state now in DB)")
|
||||
|
||||
Reference in New Issue
Block a user