Ghost/core/app.js

41 lines
1.1 KiB
JavaScript
Raw Normal View History

const sentry = require('./shared/sentry');
const express = require('./shared/express');
const config = require('./shared/config');
const urlService = require('./server/services/url');
const fs = require('fs');
const path = require('path');
const isMaintenanceModeEnabled = (req) => {
if (req.app.get('maintenance') || config.get('maintenance').enabled || !urlService.hasFinished()) {
return true;
}
return false;
};
// We never want middleware functions to be anonymous
const maintenanceMiddleware = (req, res, next) => {
if (!isMaintenanceModeEnabled(req)) {
return next();
}
res.set({
'Cache-Control': 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
});
res.writeHead(503, {'content-type': 'text/html'});
fs.createReadStream(path.resolve(__dirname, './server/views/maintenance.html')).pipe(res);
};
const rootApp = () => {
const app = express('root');
app.use(sentry.requestHandler);
app.enable('maintenance');
app.use(maintenanceMiddleware);
return app;
};
module.exports = rootApp;