Konflikt in scoreboard/controllers/cli.js zugunsten der Remote-Version
aufgeloest: openBrowser()/killBrowser() bleiben erhalten, da routes/admin.js
sie verwendet. Der lokale Testcode wurde verworfen (er rief zudem das
child_process-Modul faelschlich als Funktion auf).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Julian Appel 2026-08-19 20:32:29 +02:00
commit c4325ae8ac
19 changed files with 546 additions and 78 deletions

View file

@ -1,23 +1,37 @@
// CLI-Controller (Testdatei)
// Zuständig für die Verarbeitung von Kommandozeilen-Befehlen des Scoreboards.
// Aktuell nur ein Funktionstest mit einem einfachen `ls`-Befehl.
// CLI-Controller
// Startet und beendet den Anzeige-Browser auf dem Monitor-Rechner (Raspberry Pi).
// Chromium wird im Kiosk-Modus auf Display :0 geöffnet und zeigt die Monitor-Ansicht an.
const exec = require('node:child_process');
const { spawn } = require('node:child_process')
// Testaufruf: Listet den Inhalt des aktuellen Verzeichnisses auf,
// um zu prüfen, ob child_process.exec korrekt funktioniert.
exec('ls ./', (err, output) => {
if (err) {
console.error("could not execute command: ", err)
return
let command; // Referenz auf den laufenden Chromium-Prozess
let browserOpen = false; // Status des Browsers, verhindert Mehrfachstart
// Startet Chromium im Kiosk-Modus, sofern noch kein Browser laeuft
async function openBrowser() {
if(!browserOpen) {
// Als Benutzer "pi" starten, damit der Prozess Zugriff auf das X-Display hat
command = spawn('sudo', ['-upi', 'chromium-browser', '--display=:0', '--incognito', '--noerrors', '--hide-crash-restore-bubble', '--disable-infobars', '--kiosk', 'http://localhost']);
command.stdout.on('data', data => {
console.log("stdout: ", data.toString());
});
command.stderr.on('data', data => {
console.log("sterr: ", data.toString());
});
browserOpen = true;
}
console.log("Output: \n", output)
})
}
// Beendet den laufenden Browserprozess, sofern einer gestartet wurde
async function killBrowser() {
if(browserOpen) {
command.kill();
browserOpen = false;
}
}
module.exports = {
openBrowser, killBrowser
}