import { readFileSync } from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' import { Router } from 'express' import { SITE_KEY_RE } from '../services/unterkunft/kontext.js' /** * Oeffentliche Standalone-Seiten des Buchungskalenders (Vorbild: shopSeite.js): * GET /unterkunft/:siteKey Widget public/embed/unterkunft.js auf neutraler Seite * GET /unterkunft/:siteKey/buchung/:id Buchungsseite fuer Gaeste (public/unterkunft-buchung.js, Token ?t= liest nur das Skript) * Die Seite verraet nicht, ob Schluessel oder Buchung existieren; das Skript fragt die oeffentliche Schnittstelle. * Ungueltige Schluessel (z. B. "ical" der Export-Route /unterkunft/ical/:token.ics) und Ids: next(), am Ende 404. */ const ID_RE = /^[A-Za-z0-9_-]{1,36}$/ const DATEI = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'public', 'unterkunft-seite.html') const CSP = [ "default-src 'self'", "img-src 'self' data:", "script-src 'self'", "style-src 'self' 'unsafe-inline'", // das Widget legt ein