loadbalanced/main.py

52 lines
1.3 KiB
Python
Raw Permalink Normal View History

2022-02-02 13:27:46 +01:00
import platform
import socket
2022-02-02 12:25:58 +01:00
from fastapi import FastAPI, Header, Request
2022-02-02 13:27:46 +01:00
import netifaces
2022-02-02 12:25:58 +01:00
app = FastAPI()
@app.get("/")
2022-02-03 15:52:07 +01:00
def root(request: Request, x_full_response: bool = Header(False)):
response = {
2022-02-02 12:25:58 +01:00
"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,
},
2022-02-02 13:27:46 +01:00
"host": {
"hostname": platform.node(),
"fqdn": socket.getfqdn(),
}
2022-02-02 12:25:58 +01:00
}
2022-02-03 15:52:07 +01:00
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