Get client_ip from asgi.scope ()

* Get `client_ip` from `asgi.scope`

It seems like REMOTE_ADDR is always 127.0.0.1, which is not super useful when
trying to figure out where the websocket connection is originating from.

Of course this isn't a silver bullet because most-likely the WS will be passed
through a reverse proxy anyway... in that case, the client IP is likely in the
headers under `x_forwarded_for`

* client_ip: fallback to REMOTE_ADDR
This commit is contained in:
Masen Furer 2024-03-14 10:03:30 -07:00 committed by GitHub
parent e3db9adc70
commit fb2c3606d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1211,7 +1211,10 @@ class EventNamespace(AsyncNamespace):
}
# Get the client IP
client_ip = environ["REMOTE_ADDR"]
try:
client_ip = environ["asgi.scope"]["client"][0]
except (KeyError, IndexError):
client_ip = environ.get("REMOTE_ADDR", "0.0.0.0")
# Process the events.
async for update in process(self.app, event, sid, headers, client_ip):