PNAC / ENTWICKLUNG
Oeffentliche Skripte und JSON-Dateien stehen auf pnac.online und pnac.link bereit. Diese beiden Server liefern die Ressourcen und Node.js-APIs. Die aufrufenden Websites sind: pnac.ch, pnac.tech, ffwd.onl, sprintmail.ch, sprintmail.uk, existent.ch, notexistent.ch, falseprophet.ch, itbsol.ch, me-ict.ch.
Diesen Startcode direkt im eigenen Projekt speichern. So kann auch das Modul selbst vom zweiten Server geladen werden. Bei einer Content Security Policy beide PNAC-Domains in script-src und connect-src erlauben.
const pnac = await Promise.any(
['https://pnac.online', 'https://pnac.link'].map(origin =>
import(origin + '/shared/pnac-client.v2.js')
)
);
const data = await pnac.getJSON('example.json');
console.log(data);
Der Code gehört in ein Modul (type="module"). Das Modul wird parallel von beiden Servern geladen; die erste erfolgreiche Antwort wird verwendet. JSON-Aufrufe haben fünf Sekunden Zeitlimit je Server. Wenn beide Server ausfallen, wird ein Fehler ausgelöst, den das Projekt abfangen kann. Alternativ das Modul direkt im eigenen Projekt mitliefern.
Node.js wird auf pnac.online und pnac.link ausgefuehrt. Eure Websites koennen diese HTTPS-API mit dem JavaScript-Modul oben aufrufen. Fuer die vorhandene Status-API ist kein Node.js im Plesk-Hosting erforderlich.
// Nach dem Laden des pnac-Moduls aus dem Beispiel oben:
try {
const health = await pnac.getHealth();
console.log(health.status); // "ok"
} catch (error) {
console.error('Die PNAC-API ist momentan nicht erreichbar.', error);
}
getHealth() fragt zuerst pnac.online ab und wechselt bei einem Fehler automatisch zu pnac.link. Die oeffentliche API erlaubt lesende Aufrufe von allen oben genannten Domains ohne Cookies. Eine vorhandene Content Security Policy der einbindenden Website muss beide Server erlauben.
Aktuell ist /api/health eingerichtet. Fuer weitere Node.js-Projekte werden Anwendungscode, ein eigener Dienst und ein HTTPS-Endpunkt eingerichtet. Die oben genannten Domains sind die aufrufenden Websites, keine Ausweichserver. Nur pnac.online und pnac.link stellen die Node.js-Dienste bereit und dienen einander als Ausweichserver. Der Einbindungscode wird im jeweiligen Plesk-Projekt gespeichert; DNS-Aenderungen sind fuer diese API-Aufrufe nicht erforderlich.
Die PHP-Vorlage herunterladen, als private PHP-Datei im Projekt speichern und per require_once einbinden. PHP-cURL muss aktiviert sein.
require_once __DIR__ . '/includes/pnac-resources.php';
$data = pnacJson('/shared/example.json');
Öffentliche Dateien werden auf beiden Servern im gleichen Stand veröffentlicht. Keine Passwörter, API-Schlüssel oder privaten Nutzerdaten in diesen Bereich legen. Die Auslieferung ist lesend, ohne Anmeldung und für alle Website-Domains freigegeben.
Neue Node.js-Anwendungen erhalten einen eigenen Dienst und HTTPS-Endpunkt. Datenbanken, Schreibzugriffe und vollständige Anwendungen brauchen ein eigenes Konzept für Replikation und Ausfallsicherheit. Die Websites auf Plesk müssen die Beispiele noch selbst einbinden.