diff --git a/assets/maintenance.ejs b/assets/maintenance.ejs new file mode 100644 index 000000000..9d5d776a0 --- /dev/null +++ b/assets/maintenance.ejs @@ -0,0 +1,59 @@ + + + + + + + + traxxx | maintenance + + + + + + + + + + <% if (analytics.enabled) { %> + + <% } %> + + + + + +
+ <%= text %> +
+ + diff --git a/config/default.js b/config/default.js index 435f735fe..482ad1f54 100755 --- a/config/default.js +++ b/config/default.js @@ -36,6 +36,10 @@ module.exports = { maxAge: 2629800000, // 1 month }, }, + maintenance: { + enabled: false, + text: 'Traxxx is currently under maintenance. We will be back shortly!', + }, }, redis: { host: 'localhost', diff --git a/public/img/maintenance_ella_reese.jpeg b/public/img/maintenance_ella_reese.jpeg new file mode 100755 index 000000000..a058df973 Binary files /dev/null and b/public/img/maintenance_ella_reese.jpeg differ diff --git a/src/web/server.js b/src/web/server.js index a96ccca96..45e53dbfb 100755 --- a/src/web/server.js +++ b/src/web/server.js @@ -162,7 +162,19 @@ async function initServer() { }); router.use(errorHandler); - app.use(router); + + if (config.web.maintenance.enabled) { + app.use(express.static('public')); + + app.get('/', (req, res) => { + res.status(503).render(path.join(__dirname, '../../assets/maintenance.ejs'), { + analytics: config.analytics, + text: config.web.maintenance.text, + }); + }); + } else { + app.use(router); + } const server = app.listen(config.web.port, config.web.host, () => { const { address, port } = server.address();