25 lines
597 B
Python
25 lines
597 B
Python
|
|
from appPublic.log import exception, debug, error
|
|
from aiohttp import web
|
|
|
|
from aiohttp_middlewares.annotations import DictStrStr, Handler, Middleware
|
|
|
|
def real_ip_middleware() -> Middleware:
|
|
@web.middleware
|
|
async def middleware(
|
|
request: web.Request, handler: Handler
|
|
) -> web.StreamResponse:
|
|
match_header_keys = [
|
|
"X-Forwarded-For",
|
|
"X-real-ip"
|
|
]
|
|
request['client_ip'] = request.remote
|
|
for k,v in request.headers.items():
|
|
if k in match_header_keys:
|
|
v = v.split(',')[-1].strip()
|
|
request['client_ip'] = v
|
|
break
|
|
return await handler(request)
|
|
|
|
return middleware
|