nova-api/api/helpers/network.py

28 lines
747 B
Python
Raw Normal View History

2023-08-30 20:55:31 +02:00
import os
import time
from dotenv import load_dotenv
from slowapi.util import get_remote_address
2023-08-30 20:55:31 +02:00
load_dotenv()
2023-08-04 17:29:49 +02:00
2023-08-04 03:30:56 +02:00
async def get_ip(request) -> str:
2023-08-12 17:49:31 +02:00
"""Get the IP address of the incoming request."""
2023-08-05 02:30:42 +02:00
xff = None
if request.headers.get('x-forwarded-for'):
xff, *_ = request.headers['x-forwarded-for'].split(', ')
2023-10-12 00:03:15 +02:00
possible_ips = [xff, request.headers.get('cf-connecting-ip'), request.client.host]
2023-08-05 02:30:42 +02:00
detected_ip = next((i for i in possible_ips if i), None)
return detected_ip
2023-08-27 04:29:16 +02:00
2023-08-30 20:55:31 +02:00
def get_ratelimit_key(request) -> str:
2023-08-27 04:29:16 +02:00
"""Get the IP address of the incoming request."""
custom = os.environ('NO_RATELIMIT_IPS')
ip = get_remote_address(request)
2023-08-27 04:29:16 +02:00
if ip in custom:
return f'enterprise_{ip}'
2023-08-30 20:55:31 +02:00
return ip