Skip to content

Commit dd96a74

Browse files
authored
Fix proxy logging (#66)
1 parent 033b0ca commit dd96a74

File tree

4 files changed

+61
-6
lines changed

4 files changed

+61
-6
lines changed

dnstapir/starlette.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ async def dispatch(self, request: Request, call_next: Callable[[Request], Awaita
1515
logger = structlog.get_logger()
1616
request_id = str(uuid.uuid4())
1717

18-
remote = (
18+
remote: dict[str, str | int | None] = (
1919
{
20-
"client_host": str(request.client.host),
21-
"client_port": str(request.client.port),
20+
"client_host": request.client.host,
21+
"client_port": request.client.port or None,
2222
}
2323
if request.client
2424
else {}

poetry.lock

Lines changed: 36 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "dnstapir"
3-
version = "1.5.0"
3+
version = "1.5.1"
44
description = "DNS TAPIR Python Library"
55
authors = ["Jakob Schlyter <[email protected]>"]
66
readme = "README.md"
@@ -31,6 +31,7 @@ pytest-ruff = "^0.4.1"
3131
fakeredis = "^2.25.1"
3232
pytest-httpx = "^0.34.0"
3333
aiobotocore = "^2.19.0"
34+
uvicorn = "^0.34.0"
3435

3536
[tool.poetry.extras]
3637
keymanager = [

tests/test_starlette.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from fastapi import FastAPI
2+
from fastapi.testclient import TestClient
3+
from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware
4+
5+
from dnstapir.starlette import LoggingMiddleware
6+
7+
8+
def test_starlette():
9+
app = FastAPI()
10+
app.add_middleware(LoggingMiddleware)
11+
client = TestClient(app, client=("127.0.0.1", "1984"), headers={"X-Forwarded-For": "10.0.0.1"})
12+
client.get("/")
13+
14+
15+
def test_starlette_proxy():
16+
app = FastAPI()
17+
app.add_middleware(LoggingMiddleware)
18+
app.add_middleware(ProxyHeadersMiddleware, trusted_hosts=["127.0.0.1"])
19+
client = TestClient(app, client=("127.0.0.1", 1984), headers={"X-Forwarded-For": "10.0.0.1"})
20+
client.get("/proxy")

0 commit comments

Comments
 (0)