feat: add IP tracking functionality with track and untrack actions
This commit is contained in:
@@ -171,6 +171,38 @@ async def ban_override(request: Request, body: BanOverrideRequest):
|
|||||||
return JSONResponse(content={"error": "IP not found"}, status_code=404)
|
return JSONResponse(content={"error": "IP not found"}, status_code=404)
|
||||||
|
|
||||||
|
|
||||||
|
# ── Protected IP Tracking API ────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
|
class TrackIpRequest(BaseModel):
|
||||||
|
ip: str
|
||||||
|
action: str # "track" or "untrack"
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/api/track-ip")
|
||||||
|
async def track_ip(request: Request, body: TrackIpRequest):
|
||||||
|
if not verify_auth(request):
|
||||||
|
return JSONResponse(content={"error": "Unauthorized"}, status_code=401)
|
||||||
|
|
||||||
|
db = get_db()
|
||||||
|
if body.action == "track":
|
||||||
|
success = db.track_ip(body.ip)
|
||||||
|
elif body.action == "untrack":
|
||||||
|
success = db.untrack_ip(body.ip)
|
||||||
|
else:
|
||||||
|
return JSONResponse(
|
||||||
|
content={"error": "Invalid action. Use: track, untrack"},
|
||||||
|
status_code=400,
|
||||||
|
)
|
||||||
|
|
||||||
|
if success:
|
||||||
|
get_app_logger().info(f"IP tracking: {body.action} on IP {body.ip}")
|
||||||
|
return JSONResponse(
|
||||||
|
content={"success": True, "ip": body.ip, "action": body.action}
|
||||||
|
)
|
||||||
|
return JSONResponse(content={"error": "IP not found"}, status_code=404)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/api/all-ip-stats")
|
@router.get("/api/all-ip-stats")
|
||||||
async def all_ip_stats(request: Request):
|
async def all_ip_stats(request: Request):
|
||||||
db = get_db()
|
db = get_db()
|
||||||
|
|||||||
Reference in New Issue
Block a user