апдейт 4

This commit is contained in:
2026-07-29 11:03:12 +03:00
parent 8e38505f69
commit 77adc31a1a
2 changed files with 48 additions and 6 deletions

View File

@@ -4,16 +4,40 @@ import xml.etree.ElementTree as ET
import io
import platform
import os
from pathlib import Path
from urllib.parse import urlparse
from dotenv import load_dotenv
load_dotenv(override=True)
PROJECT_ROOT = Path(__file__).resolve().parent.parent
def get_env_path() -> Path:
"""Возвращает тот же .env, который использует systemd на сервере.
На production deploy.sh подключает /mnt/wfl/.env через EnvironmentFile.
Для локальной разработки остаётся <project>/.env. Путь можно явно
переопределить переменной WFL_ENV_FILE.
"""
configured = str(os.getenv("WFL_ENV_FILE") or "").strip()
if configured:
return Path(configured)
production_env = Path("/mnt/wfl/.env")
if production_env.exists():
return production_env
return PROJECT_ROOT / ".env"
def _refresh_env() -> None:
# Читаем .env заново перед скачиванием, чтобы изменение SYNO_PATH_VMIX_2
# применялось без пересборки кода.
load_dotenv(override=True)
# ВАЖНО: не используем load_dotenv() без пути. Иначе /root/WFL/.env
# может перезаписать значения из systemd EnvironmentFile=/mnt/wfl/.env.
env_path = get_env_path()
if env_path.exists():
load_dotenv(env_path, override=True)
_refresh_env()
def get_syno_settings() -> tuple[str | None, str | None, str | None]:
@@ -203,12 +227,30 @@ def build_vmix_project_bytes(
)
syno_url, syno_username, syno_password = get_syno_settings()
print(f"[vmix] source_key={source_key or '-'} preset_path={vmix_preset_path}")
env_path = get_env_path()
if not syno_url:
raise RuntimeError(f"Не задан SYNO_URL (env: {env_path})")
if not syno_username:
raise RuntimeError(f"Не задан SYNO_USERNAME (env: {env_path})")
if not syno_password:
raise RuntimeError(f"Не задан SYNO_PASSWORD (env: {env_path})")
# nasio ожидает имя хоста/IP отдельно от порта, поэтому убираем случайно
# добавленную схему https:// и завершающий slash.
normalized_syno_url = str(syno_url).strip().rstrip("/")
if normalized_syno_url.startswith(("http://", "https://")):
normalized_syno_url = urlparse(normalized_syno_url).hostname or normalized_syno_url
print(
f"[vmix] source_key={source_key or '-'} preset_path={vmix_preset_path} "
f"nas={normalized_syno_url}:443 env={env_path}"
)
vmix_bio = nasio.load_bio(
user=syno_username,
password=syno_password,
nas_ip=syno_url,
nas_ip=normalized_syno_url,
nas_port="443",
path=vmix_preset_path,
)