added first version of single ip page breakdiwn
This commit is contained in:
committed by
Lorenzo Venerandi
parent
75722051d6
commit
f7416518fe
@@ -888,31 +888,34 @@ class DatabaseManager:
|
|||||||
logs = query.offset(offset).limit(page_size).all()
|
logs = query.offset(offset).limit(page_size).all()
|
||||||
# Get total count of attackers
|
# Get total count of attackers
|
||||||
total_access_logs = (
|
total_access_logs = (
|
||||||
session.query(AccessLog).filter(AccessLog.ip == sanitize_ip(ip_filter)).count()
|
session.query(AccessLog)
|
||||||
|
.filter(AccessLog.ip == sanitize_ip(ip_filter))
|
||||||
|
.count()
|
||||||
)
|
)
|
||||||
total_pages = (total_access_logs + page_size - 1) // page_size
|
total_pages = (total_access_logs + page_size - 1) // page_size
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"access_logs": [
|
"access_logs": [
|
||||||
{
|
{
|
||||||
"id": log.id,
|
"id": log.id,
|
||||||
"ip": log.ip,
|
"ip": log.ip,
|
||||||
"path": log.path,
|
"path": log.path,
|
||||||
"user_agent": log.user_agent,
|
"user_agent": log.user_agent,
|
||||||
"method": log.method,
|
"method": log.method,
|
||||||
"is_suspicious": log.is_suspicious,
|
"is_suspicious": log.is_suspicious,
|
||||||
"is_honeypot_trigger": log.is_honeypot_trigger,
|
"is_honeypot_trigger": log.is_honeypot_trigger,
|
||||||
"timestamp": log.timestamp.isoformat(),
|
"timestamp": log.timestamp.isoformat(),
|
||||||
"attack_types": [d.attack_type for d in log.attack_detections],
|
"attack_types": [d.attack_type for d in log.attack_detections],
|
||||||
}
|
}
|
||||||
for log in logs ],
|
for log in logs
|
||||||
|
],
|
||||||
"pagination": {
|
"pagination": {
|
||||||
"page": page,
|
"page": page,
|
||||||
"page_size": page_size,
|
"page_size": page_size,
|
||||||
"total_logs": total_access_logs,
|
"total_logs": total_access_logs,
|
||||||
"total_pages": total_pages,
|
"total_pages": total_pages,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
finally:
|
finally:
|
||||||
self.close_session()
|
self.close_session()
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ async def dashboard_page(request: Request):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/ip/{ip_address:path}")
|
@router.get("/ip/{ip_address:path}")
|
||||||
async def ip_page(ip_address: str, request: Request):
|
async def ip_page(ip_address: str, request: Request):
|
||||||
db = get_db()
|
db = get_db()
|
||||||
@@ -57,7 +58,7 @@ async def ip_page(ip_address: str, request: Request):
|
|||||||
"request": request,
|
"request": request,
|
||||||
"dashboard_path": dashboard_path,
|
"dashboard_path": dashboard_path,
|
||||||
"stats": stats,
|
"stats": stats,
|
||||||
"ip_address": ip_address
|
"ip_address": ip_address,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -67,4 +68,3 @@ async def ip_page(ip_address: str, request: Request):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
get_app_logger().error(f"Error fetching IP stats: {e}")
|
get_app_logger().error(f"Error fetching IP stats: {e}")
|
||||||
return JSONResponse(content={"error": str(e)})
|
return JSONResponse(content={"error": str(e)})
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ async def htmx_access_logs_by_ip(
|
|||||||
):
|
):
|
||||||
db = get_db()
|
db = get_db()
|
||||||
result = db.get_access_logs_paginated(
|
result = db.get_access_logs_paginated(
|
||||||
page=max(1, page),page_size=25, ip_filter=ip_filter
|
page=max(1, page), page_size=25, ip_filter=ip_filter
|
||||||
)
|
)
|
||||||
|
|
||||||
# Normalize pagination key (DB returns total_attackers, template expects total)
|
# Normalize pagination key (DB returns total_attackers, template expects total)
|
||||||
|
|||||||
Reference in New Issue
Block a user