Adiciona auto-reload do Chromium via CDP por stream
---
- Adicionado scripts/autoreload.sh: loop com reload via WebSocket CDP raw (net + frames manuais), sem dependências externas; trap de SIGTERM encerra limpo sem aguardar o sleep;
- Adicionado [program:autoreload-{{STREAM_ID}}] em stream.template.conf com autostart=false e autorestart=unexpected;
- Adicionados campos AUTO_RELOAD e AUTO_RELOAD_INTERVAL em reprovision.mjs e supervisor.ts (provisionStream);
- Adicionados campos autoReload e autoReloadInterval em src/types/stream.ts;
- Adicionado autoreload nas listas de startStream e stopStream em supervisor.ts; adicionada função applyAutoReload;
- Adicionado endpoint dedicado POST /api/streams/[id]/autoreload: salva, re-provisiona e aplica sem reiniciar o stream inteiro;
- Adicionado toggle + input de intervalo (minutos) no menu de 3 pontos do card em StreamCard.tsx; toggle pill corrigido com posicionamento left absoluto;
- Atualizado README e CHANGELOG com a nova feature;
---
This commit is contained in:
+12
-3
@@ -63,7 +63,9 @@ export function provisionStream(stream: Stream): void {
|
||||
THREADS: stream.threads ?? 0,
|
||||
USER: stream.user ?? "",
|
||||
PASS: stream.pass ?? "",
|
||||
GPU_FLAGS: stream.gpu ? "" : " --disable-gpu \\\n",
|
||||
GPU_FLAGS: stream.gpu ? "" : " --disable-gpu \\\n",
|
||||
AUTO_RELOAD: stream.autoReload ? "true" : "false",
|
||||
AUTO_RELOAD_INTERVAL: stream.autoReloadInterval ?? 3600,
|
||||
}
|
||||
|
||||
const confTpl = fs.readFileSync("/opt/scripts/stream.template.conf", "utf-8")
|
||||
@@ -91,16 +93,23 @@ export function recreateStream(id: string): void {
|
||||
}
|
||||
|
||||
export function startStream(id: string): void {
|
||||
const programs = ["xvfb", "chromium", "autologin", "x11vnc", "ffmpeg"]
|
||||
const programs = ["xvfb", "chromium", "autologin", "autoreload", "x11vnc", "ffmpeg"]
|
||||
for (const p of programs) supervisorctl(`start ${p}-${id}`)
|
||||
captureThumb(id, 60)
|
||||
}
|
||||
|
||||
export function stopStream(id: string): void {
|
||||
const programs = ["ffmpeg", "x11vnc", "autologin", "chromium", "xvfb"]
|
||||
const programs = ["ffmpeg", "x11vnc", "autoreload", "autologin", "chromium", "xvfb"]
|
||||
for (const p of programs) supervisorctl(`stop ${p}-${id}`)
|
||||
}
|
||||
|
||||
export function applyAutoReload(id: string): void {
|
||||
const stream = getStream(id)
|
||||
if (!stream) return
|
||||
supervisorctl(`stop autoreload-${id}`)
|
||||
if (stream.autoReload) supervisorctl(`start autoreload-${id}`)
|
||||
}
|
||||
|
||||
export function restartStream(id: string): void {
|
||||
stopStream(id)
|
||||
startStream(id)
|
||||
|
||||
Reference in New Issue
Block a user