From 40e5e281f9fbc0945ae402d9b3749c94f3ae666b Mon Sep 17 00:00:00 2001 From: Luke Hinds Date: Mon, 13 Jan 2025 12:18:05 +0000 Subject: [PATCH] Log User-agents from clients Had this branch hanging around and after chat with Jakub we figured its worth having for when we need to figure out client providers --- src/codegate/providers/copilot/provider.py | 2 ++ src/codegate/server.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/codegate/providers/copilot/provider.py b/src/codegate/providers/copilot/provider.py index f8bfeb1e..fd3c9971 100644 --- a/src/codegate/providers/copilot/provider.py +++ b/src/codegate/providers/copilot/provider.py @@ -236,6 +236,8 @@ def get_headers_dict(self) -> Dict[str, str]: try: name, value = header.decode("utf-8").split(":", 1) headers_dict[name.strip().lower()] = value.strip() + if name == "user-agent": + logger.debug(f"User-Agent header received: {value} from {self.peername}") except ValueError: continue diff --git a/src/codegate/server.py b/src/codegate/server.py index 57206712..88e14ea7 100644 --- a/src/codegate/server.py +++ b/src/codegate/server.py @@ -1,7 +1,7 @@ import traceback import structlog -from fastapi import APIRouter, FastAPI +from fastapi import APIRouter, FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse from starlette.middleware.errors import ServerErrorMiddleware @@ -35,6 +35,15 @@ def init_app(pipeline_factory: PipelineFactory) -> FastAPI: description=__description__, version=__version__, ) + + @app.middleware("http") + async def log_user_agent(request: Request, call_next): + user_agent = request.headers.get("user-agent") + client_host = request.client.host if request.client else "unknown" + logger.debug(f"User-Agent header received: {user_agent} from {client_host}") + response = await call_next(request) + return response + app.add_middleware( CORSMiddleware, allow_origins=["*"],