Download core/utils/ip.py from Rsnarsna/Saas-Base: direct link, hf CLI and curl.
- Browser
- Download file 1 kB
-
https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/core/utils/ip.py
- Command line
-
hf download hf://spaces/Rsnarsna/Saas-Base/core/utils/ip.py
-
curl -L -o ip.py https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/core/utils/ip.py
1 kB
| """ | |
| IP address and request utilities. | |
| Used across all phases for login history, rate limiting, security events. | |
| """ | |
| def get_client_ip(request) -> str: | |
| """Extract the real client IP from the request, respecting proxy headers.""" | |
| x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR") | |
| if x_forwarded_for: | |
| return x_forwarded_for.split(",")[0].strip() | |
| return request.META.get("REMOTE_ADDR", "") | |
| def get_user_agent(request) -> str: | |
| """Extract User-Agent header from request.""" | |
| return request.META.get("HTTP_USER_AGENT", "") | |
| def get_device_fingerprint(request) -> str: | |
| """ | |
| Generate a simple device fingerprint from request headers. | |
| Combines IP + User-Agent + Accept-Language for basic fingerprinting. | |
| """ | |
| parts = [ | |
| get_client_ip(request), | |
| get_user_agent(request), | |
| request.META.get("HTTP_ACCEPT_LANGUAGE", ""), | |
| ] | |
| import hashlib | |
| raw = "|".join(parts) | |
| return hashlib.sha256(raw.encode()).hexdigest()[:32] | |