injectIntoHtml nimmt eine Marke je Tag (geprüft gegen data-wk-[a-z]+), injectZeiten setzt den data-wk-zeiten-Tag ohne Datenschutzseite ein, validateJob lässt nur den siteKey durch, ZEITEN_PUBLIC_BASE in der Konfiguration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
1.3 KiB
JavaScript
27 lines
1.3 KiB
JavaScript
// Konfiguration aus Umgebungsvariablen. Pfade sind HOST-Pfade (R6): der Runner mountet sie identisch.
|
|
export function loadConfig(env = process.env) {
|
|
const analyticsPublicBase = env.ANALYTICS_PUBLIC_BASE || 'https://project.webklar.com/a/';
|
|
if (!/^https:\/\/[^\s"'<>]+\/$/.test(analyticsPublicBase)) throw new Error('ANALYTICS_PUBLIC_BASE muss mit https:// beginnen und mit / enden');
|
|
const zeitenPublicBase = env.ZEITEN_PUBLIC_BASE || 'https://project.webklar.com/embed/';
|
|
if (!/^https:\/\/[^\s"'<>]+\/$/.test(zeitenPublicBase)) throw new Error('ZEITEN_PUBLIC_BASE muss mit https:// beginnen und mit / enden');
|
|
return {
|
|
analyticsPublicBase,
|
|
zeitenPublicBase,
|
|
token: env.PREVIEW_RUNNER_TOKEN || '',
|
|
giteaUrl: env.GITEA_URL || '',
|
|
giteaToken: env.GITEA_TOKEN || '',
|
|
baseHost: env.PREVIEW_BASE_HOST || 'project.webklar.com',
|
|
previewsRoot: env.PREVIEWS_ROOT || '/var/www/previews',
|
|
workRoot: env.RUNNER_WORK_ROOT || '/srv/webklar-preview-runner/work',
|
|
cacheRoot: env.RUNNER_CACHE_ROOT || '/srv/webklar-preview-runner/cache',
|
|
sandboxSubnet: env.PREVIEW_SANDBOX_SUBNET || '172.30.0.0/24',
|
|
apiPort: 8080,
|
|
proxyPort: 8081,
|
|
minFreeBytes: 1.5 * 1024 ** 3,
|
|
buildTimeoutMs: 15 * 60e3,
|
|
devIdleMs: 20 * 60e3,
|
|
devMax: 3,
|
|
devReadyMs: 180e3,
|
|
};
|
|
}
|