Geekzeug

Checkmk: Doom im Dashboard

Alle Checks auf OK? Problem-Dashboard leer? Langeweile? BOOOM!

Es ist eine Art Sport, Doom auf jedem Gerät zum Laufen zu bringen - mit entsprechenden Doom-Source-Ports. Für Checkmk genügt erfreulicherweise Vorhandenes: JS-DOS, ein Doom für DOS und eine HTML-Datei.

Im Grunde ist es ganz simpel: JS-DOS und sogar das benötigte Doom gibt es direkt aus dem Netz und dann braucht es nur noch eine HTML-Datei, um JS-DOS einzubinden und automatisch Doom zu starten.

Und natürlich: Auch wenn der Doom-Quellcode Open Source ist benötigt man, um (mehr oder weniger) legal unterwegs zu sein, selbst ein lizenziertes Doom. Genauer: Die WAD-Datei. Das ist einfach ein Dateiformat, dass die Assets von Doom beinhaltet, sprich Bilder, Level etc. Von daher ist das hier auch nur als Proof of Concept zu verstehen. Ihr könnt Doom I + II bei Steam kaufen. Oder Euch im Doom-Wiki in die komplexe Versionsgeschichte von Doom stürzen.

HTML vorbereiten

Die Syntax für die HTML-Datei hat - mit einigen Runden Fehlerbehebung und Neukonzeption ... - ChatGPT geschrieben. Hinterfragt also besser nicht jede Zeile, es ist nur ein PoC und KI längst nicht so clever, wie oft behauptet.

Man benötigt also eine Datei im Web-Root auf dem Checkmk-Server, etwa /var/www/html/doom.html mit folgendem Inhalt:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>DOOM in JS-DOS (canvas fix)</title>
  <link rel="stylesheet" href="https://v8.js-dos.com/latest/js-dos.css">
  <script src="https://js-dos.com/6.22/current/js-dos.js"></script>
  <style>
    html, body { margin: 0; padding: 0; height: 100%; background: black; }
    canvas { width: 100%; height: 100%; display: block; }
  </style>
</head>
<body>
  <!-- ✅ Explicit canvas element for js-dos v6.22 -->
  <canvas id="dosbox" tabindex="0" onclick="this.focus();"></canvas>

  <script>
    Dos(document.getElementById("dosbox"), {
      wdosboxUrl: "https://js-dos.com/6.22/current/wdosbox.js",
      cycles: 10000
    }).ready(function(fs, main) {
      fs.extract("https://XXXXXXXXXXXXX/DOOM-@evilution.zip")
        .then(function() {
          main(["-c", "cd DOOM", "-c", "DOOM.EXE"]);
        });
    });
  </script>
</body>
</html>

Sorry für die XXXXXXXXXXXXX-URL, aber wie gesagt, Copyrightmäßig ist das tendenziell etwas unsauber.

Das ganze Blabla mal beiseite, wird zunächst die Web-Dos-Box geladen und in einem Canvas-Element dargestellt:

...
script src="https://js-dos.com/6.22/current/js-dos.js"
...
canvas id="dosbox" tabindex="0" onclick="this.focus();"

Dann wird per JS-DOS-Funktion das gehostete Doom-ZIP extrahiert und DOOM.EXE wird gestartet:

fs.extract("https://XXXXXXXXXXXXX/DOOM-@evilution.zip")
        .then(function() {
          main(["-c", "cd DOOM", "-c", "DOOM.EXE"]);

Ganz ähnlich ließe sich das mit lokalen Dateien bewerkstelligen.

Dashboard bauen

Anschließend braucht es in Checkmk nur noch ein Dashboard und darauf das "Custom URL"-Dashlet.

In dem Dashlet wird schlicht die URL der angelegten HTML-Datei angegeben:

http://localhost/doom.html
checkmk-dashlet-konfiguration.
"Custom URL" kann Seiten aus dem Web-Root des Chekmk-Servers rendern

Und schon läuft Doom im Dashboard.

Musste einfach mal sein 😉

Nachbauen wird das vermutlich niemand, oder? ODER?? Aber Ihr könnt das Konzept auf etliche Web-basierte Tools übertragen - oder auch einfach den Doom-Part skippen und schon habt Ihr einen DOS-Terminal im Dashboard!

Mehr zu Checkmk.

P.S.: Ja, ich weiß, die Service-Status im Bild sprechen gegen derlei Spielereien 😉

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"