loadbalanced/main.py

52 lines
1.3 KiB
Python

import platform
import socket
from fastapi import FastAPI, Header, Request
import netifaces
app = FastAPI()
@app.get("/")
def root(request: Request, x_full_response: bool = Header(False)):
response = {
"method": request.method,
"url": {
"url": request.url._url,
"scheme": request.url.scheme,
"hostname": request.url.hostname,
"port": request.url.port,
"path": request.url.path,
},
"headers": request.headers,
"client": {
"ip-address": request.client.host,
"port": request.client.port,
},
"host": {
"hostname": platform.node(),
"fqdn": socket.getfqdn(),
}
}
if not x_full_response:
return response
interfaces = {}
for interface in netifaces.interfaces():
interfaces[interface] = []
for link in netifaces.ifaddresses(interface).values():
for group in link:
interfaces[interface].append(group['addr'])
response["host"].update({
"python": platform.python_version(),
"os": {
"system": platform.system(),
"release": platform.release(),
"version": platform.version(),
},
"ip-addresses": interfaces,
})
return response