gonets/SRV/main.py

48 lines
2.8 KiB
Python
Raw Normal View History

2025-10-14 11:42:57 +05:00
"""
Инициализация FastAPI-приложения GONETS.
Содержимое модуля:
- Создание экземпляра приложения FastAPI с метаданными (title, description, version).
- Подключение CORS-политики через `CORSMiddlewareConfig` с заранее заданными
доверенными источниками (localhost и стандартные порты фронтенда).
- Монтаж корневого роутера `api.router`, который инкапсулирует все `v1`-эндпоинты
(auth, subnet, ip, network, ufw, websocket, settings).
- Инициализация `NetworkService` на уровне приложения для подготовки сетевой
подсистемы (например, ленивые проверки окружения/зависимостей).
- Точка входа для локального запуска через `uvicorn` (режим разработки с reload).
Замечания по развертыванию:
- В прод-среде приложение запускается через `systemd` юнит `gonets.service`,
где в качестве команды используется `python3 SRV/main.py`.
- Для TLS можно использовать закомментированную строку с указанием
`ssl_keyfile` и `ssl_certfile` (сертификаты ожидаются в `/etc/gonets/certs`).
Безопасность и окружение:
- Перекрестные запросы (CORS) ограничены списком localhost-источников, что
соответствует типичной локальной разработке (Vite/DevServer и т.д.).
- Все пути и сервисы, требующие повышенных прав (например, системные команды),
должны выполняться в соответствующем окружении с необходимыми разрешениями.
"""
from fastapi import FastAPI
import uvicorn
from api.router import router
from config.cors import CORSMiddlewareConfig
from services.network_service import NetworkService
app = FastAPI(
title="GONETS",
description="Панель для управления системными сервисами Linux",
version="0.0.3",
)
cors_config = CORSMiddlewareConfig(app)
cors_config.add_cors_middleware()
app.include_router(router)
network_service = NetworkService()
if __name__ == "__main__":
#uvicorn.run("main:app", host='0.0.0.0', port=8001, reload=True, ssl_keyfile="/etc/gonets/certs/gonets.key", ssl_certfile="/etc/gonets/certs/gonets.crt")
uvicorn.run("main:app", host="0.0.0.0", port=8001, reload=True)