all(minor): replace django-ipware with custom implementation
This commit is contained in:
24
passbook/lib/utils/http.py
Normal file
24
passbook/lib/utils/http.py
Normal file
@ -0,0 +1,24 @@
|
||||
"""http helpers"""
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from django.http import HttpRequest
|
||||
|
||||
|
||||
def _get_client_ip_from_meta(meta: Dict[str, Any]) -> Optional[str]:
|
||||
"""Attempt to get the client's IP by checking common HTTP Headers.
|
||||
Returns none if no IP Could be found"""
|
||||
headers = (
|
||||
'HTTP_X_FORWARDED_FOR',
|
||||
'HTTP_X_REAL_IP',
|
||||
'REMOTE_ADDR',
|
||||
)
|
||||
for _header in headers:
|
||||
if _header in meta:
|
||||
return meta.get(_header)
|
||||
return None
|
||||
|
||||
|
||||
def get_client_ip(request: HttpRequest) -> Optional[str]:
|
||||
"""Attempt to get the client's IP by checking common HTTP Headers.
|
||||
Returns none if no IP Could be found"""
|
||||
return _get_client_ip_from_meta(request.META)
|
Reference in New Issue
Block a user