Настраиваемый BASE_URL для share-ссылок и поддержка HTTPS (CERT_FILE/KEY_FILE)

This commit is contained in:
apuc committed 2026-09-17 22:31:06 +03:00
1 parent f11ec6298d
commit 0cb2c5e41a
3 files changed
+28 -8

No files matched your search

+19 -4
View File
@@ -99,6 +99,11 @@ VIDEO_MIME = {
app = Flask(__name__)
app.config["MAX_CONTENT_LENGTH"] = 100 * 1024 * 1024 # 100 МБ
# Базовый URL для share-ссылок и OG-тегов.
# По умолчанию — прод-домен; для локального запуска задайте BASE_URL,
# например https://192.168.31.248:18018
BASE_URL = os.environ.get("BASE_URL", "https://med.my-dpr.ru").rstrip("/")
# CORS для интеграции с WordPress (кросс-доменные запросы с сайта на API).
# Список разрешённых origin через запятую, по умолчанию "*" (любой).
CORS_ORIGINS = [o.strip() for o in os.environ.get("CORS_ORIGINS", "*").split(",") if o.strip()]
@@ -381,10 +386,10 @@ def shared_result(share_id):
"""Публичная страница результата по ссылке (с OG-тегами для соцсетей)."""
result = storage.get_result(share_id)
if result is None:
return render_template("result.html", result=None, error="Результат не найден", video_exists=False), 404
return render_template("result.html", result=None, error="Результат не найден", video_exists=False, base_url=BASE_URL), 404
video_exists = bool(glob.glob(os.path.join(VIDEO_DIR, f"{share_id}.*")))
return render_template("result.html", result=result, error=None, video_exists=video_exists)
return render_template("result.html", result=result, error=None, video_exists=video_exists, base_url=BASE_URL)
@app.route("/download/<share_id>/pdf")
@@ -509,7 +514,7 @@ def analyze():
# 6. Сохранение результата
logger.info(f"[{job_id}] Сохранение результата")
share_id = storage.save_result(interpretation, result)
share_url = f"https://med.my-dpr.ru/r/{share_id}"
share_url = f"{BASE_URL}/r/{share_id}"
logger.info(f"[{job_id}] Результат сохранён: {share_url}")
# Переименовываем видео под share_id (чтобы ссылка была стабильной)
@@ -551,4 +556,14 @@ if __name__ == "__main__":
print("🩺 Диагностика по видео — ФПГ")
print(f"Откройте в браузере: http://localhost:5000")
print("=" * 60)
app.run(host="0.0.0.0", port=18018, debug=False)
# HTTPS (для доступа к камере из локальной сети нужен безопасный контекст).
# Задайте CERT_FILE и KEY_FILE (самоподписанный сертификат) — сервер поднимется по HTTPS.
cert_file = os.environ.get("CERT_FILE")
key_file = os.environ.get("KEY_FILE")
ssl_context = None
if cert_file and key_file:
ssl_context = (cert_file, key_file)
print(f"HTTPS включён: {cert_file}")
app.run(host="0.0.0.0", port=18018, debug=False, ssl_context=ssl_context)