48 lines
2.8 KiB
Python
48 lines
2.8 KiB
Python
"""
|
||
Инициализация 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)
|