66 lines
1.3 KiB
Python
66 lines
1.3 KiB
Python
"""
|
|
Router "misc" provides:
|
|
|
|
- getting the project version
|
|
- getting the device IP
|
|
"""
|
|
|
|
from importlib.metadata import version
|
|
from logging import getLogger
|
|
from socket import AF_INET, SOCK_DGRAM, socket
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from ..config import Config, LogoUIConfig, ServerUIConfig
|
|
from ..settings import SETTINGS
|
|
|
|
_logger = getLogger(__name__)
|
|
|
|
router = APIRouter(prefix="/misc", tags=["misc"])
|
|
|
|
|
|
@router.on_event("startup")
|
|
async def start_router() -> None:
|
|
_logger.debug(f"{router.prefix} router starting.")
|
|
|
|
|
|
@router.get("/lanip")
|
|
async def get_ip() -> str:
|
|
with socket(
|
|
family=AF_INET,
|
|
type=SOCK_DGRAM,
|
|
) as s:
|
|
s.settimeout(0)
|
|
try:
|
|
s.connect((SETTINGS.ping_host, SETTINGS.ping_port))
|
|
IP = s.getsockname()[0]
|
|
|
|
except Exception:
|
|
IP = "127.0.0.1"
|
|
|
|
return IP
|
|
|
|
|
|
@router.get("/version")
|
|
async def get_version() -> str:
|
|
return version("ovdashboard-api")
|
|
|
|
|
|
@router.get(
|
|
"/config/server",
|
|
response_model=ServerUIConfig,
|
|
)
|
|
async def get_server_ui_config(
|
|
cfg: Config = Depends(Config.get),
|
|
) -> ServerUIConfig:
|
|
return cfg.server
|
|
|
|
|
|
@router.get(
|
|
"/config/logo",
|
|
response_model=LogoUIConfig,
|
|
)
|
|
async def get_logo_ui_config(
|
|
cfg: Config = Depends(Config.get),
|
|
) -> LogoUIConfig:
|
|
return cfg.logo
|