diff --git a/deploy/maintenance-server.mjs b/deploy/maintenance-server.mjs index 298ab3e..ab52fa2 100644 --- a/deploy/maintenance-server.mjs +++ b/deploy/maintenance-server.mjs @@ -7,8 +7,10 @@ const host = process.env.MAINTENANCE_HOST || '127.0.0.1'; const port = Number.parseInt(process.env.PORT || '43821', 10); const dataDir = process.env.MAINTENANCE_DATA_DIR || dirname(process.env.DATABASE_PATH || '/var/lib/synapsis/synapsis.db'); +const appDir = process.env.MAINTENANCE_APP_DIR || process.cwd(); const brandingPath = join(dataDir, 'maintenance-branding.json'); const logoPath = join(dataDir, 'maintenance-logo'); +const defaultLogoPath = join(appDir, 'public', 'logotext.svg'); function validAccent(value) { return typeof value === 'string' && /^#[0-9a-f]{3}([0-9a-f]{3})?$/i.test(value) @@ -69,7 +71,8 @@ const externalLogoUrl = typeof branding.externalLogoUrl === 'string' && /^https? ? branding.externalLogoUrl : null; const hasStoredLogo = existsSync(logoPath); -const logoMarkup = hasStoredLogo || externalLogoUrl +const hasDefaultLogo = existsSync(defaultLogoPath); +const logoMarkup = hasStoredLogo || externalLogoUrl || hasDefaultLogo ? '' : '
Synapsis
'; @@ -131,6 +134,16 @@ const server = http.createServer((request, response) => { response.end(); return; } + if (hasDefaultLogo) { + const logo = readFileSync(defaultLogoPath); + response.writeHead(200, { + 'Content-Type': 'image/svg+xml', + 'Content-Length': logo.byteLength, + 'Cache-Control': 'no-store, max-age=0', + }); + response.end(logo); + return; + } } response.writeHead(503, { diff --git a/deploy/synapsis-maintenance.service b/deploy/synapsis-maintenance.service index e05c92a..340a896 100644 --- a/deploy/synapsis-maintenance.service +++ b/deploy/synapsis-maintenance.service @@ -10,6 +10,7 @@ User=synapsis Group=synapsis WorkingDirectory=/opt/synapsis EnvironmentFile=/etc/synapsis.env +Environment=MAINTENANCE_APP_DIR=/opt/synapsis ExecStart=/usr/bin/env node /opt/synapsis/deploy/maintenance-server.mjs Restart=on-failure RestartSec=1 @@ -17,4 +18,3 @@ NoNewPrivileges=true PrivateTmp=true ProtectSystem=strict ProtectHome=true - diff --git a/deploy/update.sh b/deploy/update.sh index 2b0a269..0a90bf4 100755 --- a/deploy/update.sh +++ b/deploy/update.sh @@ -69,6 +69,7 @@ fi install_update_units if ! runuser -u synapsis -- env \ PORT="${PORT:-43821}" \ + MAINTENANCE_APP_DIR="$APP_DIR" \ MAINTENANCE_DATA_DIR="$DATA_DIR" \ node "$APP_DIR/deploy/maintenance-server.mjs" --capture-branding; then echo "Warning: could not refresh maintenance-page branding; using the last captured branding." >&2