апдейт 4
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user