fix
This commit is contained in:
+5
-1
@@ -2,7 +2,7 @@ FROM python:3.12-slim
|
||||
|
||||
# ffmpeg/ffprobe — движок записи и перекодирования
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ffmpeg \
|
||||
&& apt-get install -y --no-install-recommends ffmpeg openssl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
@@ -12,6 +12,10 @@ RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY backend/app ./app
|
||||
COPY frontend ./frontend
|
||||
COPY backend/entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
EXPOSE 8090
|
||||
# entrypoint генерирует self-signed TLS-сертификат при отсутствии, затем запускает CMD/команду
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8090"]
|
||||
|
||||
@@ -280,3 +280,18 @@ async def delete_camera(cam_id: str, request: Request) -> dict:
|
||||
await runtime.supervisor.remove_camera(cam_id)
|
||||
await go2rtc.remove_camera_streams(runtime.config, cam_id)
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.post("/clear")
|
||||
async def clear_cameras(request: Request) -> dict:
|
||||
"""Удаляет ВСЕ камеры: чистит cameras.yaml, останавливает запись и потоки go2rtc.
|
||||
|
||||
Архив (nvr.db + файлы .mp4) НЕ трогает — очищается только список камер."""
|
||||
require_role(request, "admin")
|
||||
ids = [c.id for c in runtime.config.cameras]
|
||||
runtime.config.cameras = []
|
||||
save_config(runtime.config)
|
||||
for cam_id in ids:
|
||||
await runtime.supervisor.remove_camera(cam_id)
|
||||
await go2rtc.remove_camera_streams(runtime.config, cam_id)
|
||||
return {"ok": True, "removed": len(ids)}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
# Гарантирует наличие self-signed TLS-сертификата перед стартом uvicorn.
|
||||
# Если cert.pem/key.pem отсутствуют (свежий деплой) — генерирует их;
|
||||
# иначе использует существующие. Затем запускает переданную команду (CMD).
|
||||
set -e
|
||||
|
||||
CERT_DIR=/app/certs
|
||||
if [ ! -f "$CERT_DIR/cert.pem" ] || [ ! -f "$CERT_DIR/key.pem" ]; then
|
||||
echo "[entrypoint] TLS cert not found in $CERT_DIR — generating self-signed (CN=${NVR_TLS_CN:-localhost})"
|
||||
mkdir -p "$CERT_DIR"
|
||||
openssl req -x509 -newkey rsa:2048 -nodes \
|
||||
-keyout "$CERT_DIR/key.pem" -out "$CERT_DIR/cert.pem" \
|
||||
-days 3650 -subj "/CN=${NVR_TLS_CN:-localhost}"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user