bugfix
This commit is contained in:
parent
0b2584d6aa
commit
227533d01d
@ -21,11 +21,7 @@ from appPublic.rsawrap import RSA
|
|||||||
from appPublic.log import info, debug, warning, error, critical, exception
|
from appPublic.log import info, debug, warning, error, critical, exception
|
||||||
|
|
||||||
def get_client_ip(obj, request):
|
def get_client_ip(obj, request):
|
||||||
ip = request.headers.get('X-Forwarded-For')
|
return request['client_ip']
|
||||||
if not ip:
|
|
||||||
ip = request.remote
|
|
||||||
request['client_ip'] = ip
|
|
||||||
return ip
|
|
||||||
|
|
||||||
async def get_session_userinfo(request):
|
async def get_session_userinfo(request):
|
||||||
d = await auth.get_auth(request)
|
d = await auth.get_auth(request)
|
||||||
|
|||||||
@ -20,12 +20,14 @@ from .globalEnv import initEnv
|
|||||||
from .serverenv import ServerEnv
|
from .serverenv import ServerEnv
|
||||||
from .filestorage import TmpFileRecord
|
from .filestorage import TmpFileRecord
|
||||||
from .loadplugins import load_plugins
|
from .loadplugins import load_plugins
|
||||||
|
from .real_ip import real_ip_middleware
|
||||||
|
|
||||||
class AHApp(web.Application):
|
class AHApp(web.Application):
|
||||||
def __init__(self, *args, **kw):
|
def __init__(self, *args, **kw):
|
||||||
kw['client_max_size'] = 1024000000
|
kw['client_max_size'] = 1024000000
|
||||||
super().__init__(*args, **kw)
|
super().__init__(*args, **kw)
|
||||||
self.user_data = DictObject()
|
self.user_data = DictObject()
|
||||||
|
self.middlewares.insert(0, real_ip_middleware())
|
||||||
|
|
||||||
def set_data(self, k, v):
|
def set_data(self, k, v):
|
||||||
self.user_data[k] = v
|
self.user_data[k] = v
|
||||||
|
|||||||
24
ahserver/real_ip.py
Normal file
24
ahserver/real_ip.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
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
|
||||||
Loading…
x
Reference in New Issue
Block a user