bifrost/bifrost/routers.py

44 lines
1.1 KiB
Python

from functools import lru_cache
import logging as logger
from fastapi import APIRouter, Header, Request, Depends
from .auth import get_current_username
from .digital_ocean import update_domain
from . import config
router = APIRouter()
@lru_cache()
def get_settings():
return config.Settings
@router.get("/update")
def update_view(
domain: str,
request: Request,
ip: str = None,
x_forwarded_for: str = Header(None),
username: str = Depends(get_current_username),
settings: config.Settings = Depends(get_settings),
):
logger.info("Here is your log")
if ip is not None:
current_ip = ip
elif x_forwarded_for is not None:
current_ip = x_forwarded_for
else:
current_ip = request.ip
name, domain = domain.split(".", maxsplit=1)
update_domain(
domain, name, current_ip, settings.api_url_base, settings.api_token, logger
)
return {
"domain": domain,
"name": name,
"current_ip": current_ip,
"api_base": settings.api_url_base,
"api_token": settings.api_token,
}