50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
/*
|
|
Das Script fetchMessagesData.mjs lädt Meldungen von einem CPL-Gerät über eine HTTPS-API für einen angegebenen Zeitraum herunter.
|
|
Es authentifiziert sich mit Benutzername und Passwort, akzeptiert selbst-signierte Zertifikate und speichert die abgerufenen Daten
|
|
als JSON in zwei Dateien ( messages_all.json) im Verzeichnis meldungen. Das Script dient dazu,
|
|
Mockdaten für Tests oder Simulationen aktuell zu halten.
|
|
*/
|
|
|
|
import fetch from "node-fetch";
|
|
import https from "https";
|
|
import fs from "fs/promises";
|
|
import path from "path";
|
|
import { fileURLToPath } from "url";
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
const CPL_URL =
|
|
"https://10.10.0.118/CPL?Service/ae.ACP&MSS1=2025;07;11;2025;08;11;All";
|
|
const USERNAME = "Littwin";
|
|
const PASSWORD = "Littwin";
|
|
const targetDir = path.join(__dirname, "../device-cgi-simulator/meldungen");
|
|
|
|
async function fetchAndSaveMessages() {
|
|
console.log("Fetch:", CPL_URL);
|
|
const agent = new https.Agent({ rejectUnauthorized: false });
|
|
const res = await fetch(CPL_URL, {
|
|
headers: {
|
|
Authorization:
|
|
"Basic " + Buffer.from(`${USERNAME}:${PASSWORD}`).toString("base64"),
|
|
},
|
|
agent,
|
|
});
|
|
if (!res.ok)
|
|
throw new Error(`Fehler beim Abrufen der Meldungen: ${res.status}`);
|
|
const data = await res.json();
|
|
await fs.mkdir(targetDir, { recursive: true });
|
|
|
|
await fs.writeFile(
|
|
path.join(targetDir, "messages_all.json"),
|
|
JSON.stringify(data, null, 2)
|
|
);
|
|
}
|
|
|
|
(async () => {
|
|
try {
|
|
await fetchAndSaveMessages();
|
|
console.log("Meldungen aktualisiert.");
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
})();
|