This repository has been archived on 2024-06-12. You can view files and clone it, but cannot push or open issues or pull requests.
ipserv/ipserv.py
2024-04-18 11:26:09 +01:00

35 lines
1 KiB
Python

import requests
import json
import logging
from flask import Flask, request, make_response
app = Flask(__name__)
logging.basicConfig(level=logging.INFO)
@app.get("/")
def ip():
if "X-Forwarded-For" in request.headers:
ip = request.headers["X-Forwarded-For"]
else:
ip = request.remote_addr
logging.info("looking up IP info for %s", ip)
try:
response = requests.get(
"https://ip.shronk.net/lookup?ip=" + ip,
headers=request.headers
)
except Exception as e:
logging.error("Failed to get data for %s: %s", ip, e, exc_info=True)
return {"error": str(e)}, 500
try:
data = response.json()
except json.JSONDecodeError as e:
logging.error("Failed to parse data for %s: %s", ip, e, exc_info=True)
return {"error": str(e)}
logging.info("%s -> %r", ip, data)
data["ip"] = ip
data.pop("legalese", None)
data.pop("source", None)
data.pop("brexitRequired", None)
return data, response.status_code