diff --git a/core/server/errors/index.js b/core/server/errors/index.js index 2b2e005d83..f89b906ed5 100644 --- a/core/server/errors/index.js +++ b/core/server/errors/index.js @@ -324,7 +324,8 @@ errors = { function renderErrorInt(errorView) { var stack = null; - if (statusCode !== 404 && process.env.NODE_ENV !== 'production' && err.stack) { + // Not Found and Maintenance Errors don't need a stack trace + if (statusCode !== 404 && statusCode !== 503 && process.env.NODE_ENV !== 'production' && err.stack) { stack = parseStack(err.stack); } diff --git a/core/server/index.js b/core/server/index.js index 581cf2bedf..285a40e9c2 100644 --- a/core/server/index.js +++ b/core/server/index.js @@ -69,6 +69,7 @@ function init(options) { }).then(function () { return versioning.getDatabaseVersion() .then(function (currentVersion) { + var maintenanceState = config.maintenance.enabled || false; config.maintenance.enabled = true; migrations.update({ @@ -76,7 +77,7 @@ function init(options) { toVersion: versioning.getNewestDatabaseVersion(), forceMigration: process.env.FORCE_MIGRATION }).then(function () { - config.maintenance.enabled = false; + config.maintenance.enabled = maintenanceState; }).catch(function (err) { errors.logErrorAndExit(err, err.context, err.help); }); diff --git a/core/server/middleware/index.js b/core/server/middleware/index.js index a3f83c4729..f6e207d066 100644 --- a/core/server/middleware/index.js +++ b/core/server/middleware/index.js @@ -197,7 +197,9 @@ setupMiddleware = function setupMiddleware(blogApp) { // Mount admin express app to /ghost and set up routes adminApp.use(redirectToSetup); + adminApp.use(maintenance); adminApp.use(routes.admin()); + blogApp.use('/ghost', adminApp); // send 503 error page in case of maintenance diff --git a/core/server/middleware/maintenance.js b/core/server/middleware/maintenance.js index 68cc6ebb56..4462fc6890 100644 --- a/core/server/middleware/maintenance.js +++ b/core/server/middleware/maintenance.js @@ -1,9 +1,12 @@ -var config = require(__dirname + '/../config'), - errors = require(config.paths.corePath + '/server/errors'); +var config = require('../config'), + i18n = require('../i18n'), + errors = require('../errors'); module.exports = function (req, res, next) { if (config.maintenance.enabled) { - return next(new errors.Maintenance()); + return next(new errors.Maintenance( + i18n.t('errors.general.maintenance') + )); } next(); diff --git a/core/server/translations/en.json b/core/server/translations/en.json index 8b92c24c6a..364ccd0417 100644 --- a/core/server/translations/en.json +++ b/core/server/translations/en.json @@ -170,6 +170,7 @@ } }, "general": { + "maintenance": "Ghost is currently undergoing maintenance, please wait a moment then retry.", "moreInfo": "\nMore info: {info}", "requiredOnFuture": "This will be required in future. Please see {link}" },