Merge pull request #3682 from overleaf/bg-check-maintenance-file

check maintenance file periodically to close site

GitOrigin-RevId: 8e29f40a23df96198c6e4603ede2bab852b98740
This commit is contained in:
Brian Gough
2021-02-26 03:04:07 +00:00
committed by Copybot
parent 54212385e6
commit bc4f5a687a
6 changed files with 35 additions and 19 deletions
@@ -10,8 +10,14 @@ const {
module.exports = {
check(req, res, next) {
// detach from express for cleaner stack traces
setTimeout(() => runSmokeTestsDetached(req, res).catch(next))
if (!settings.siteIsOpen || !settings.editorIsOpen) {
// always return successful health checks when site is closed
res.contentType('application/json')
res.sendStatus(200)
} else {
// detach from express for cleaner stack traces
setTimeout(() => runSmokeTestsDetached(req, res).catch(next))
}
},
checkActiveHandles(req, res, next) {
@@ -98,11 +98,13 @@ const AdminController = {
return res.render('admin/register')
},
dissconectAllUsers: (req, res) => {
disconnectAllUsers: (req, res) => {
logger.warn('disconecting everyone')
const delay = (req.query && req.query.delay) > 0 ? req.query.delay : 10
EditorRealTimeController.emitToAll(
'forceDisconnect',
'Sorry, we are performing a quick update to the editor and need to close it down. Please refresh the page to continue.'
'Sorry, we are performing a quick update to the editor and need to close it down. Please refresh the page to continue.',
delay
)
return res.sendStatus(200)
},
+12 -6
View File
@@ -954,9 +954,9 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
AdminController.closeEditor
)
webRouter.post(
'/admin/dissconectAllUsers',
'/admin/disconnectAllUsers',
AuthorizationMiddleware.ensureUserIsSiteAdmin,
AdminController.dissconectAllUsers
AdminController.disconnectAllUsers
)
webRouter.post(
'/admin/flushProjectToTpds',
@@ -981,14 +981,20 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
privateApiRouter.post(
'/disconnectAllUsers',
AdminController.dissconectAllUsers
AdminController.disconnectAllUsers
)
privateApiRouter.get('/perfTest', (req, res) => res.send('hello'))
publicApiRouter.get('/status', (req, res) =>
res.send('web sharelatex is alive (web)')
)
publicApiRouter.get('/status', (req, res) => {
if (!Settings.siteIsOpen) {
res.send('web site is closed (web)')
} else if (!Settings.editorIsOpen) {
res.send('web editor is closed (web)')
} else {
res.send('web sharelatex is alive (web)')
}
})
privateApiRouter.get('/status', (req, res) =>
res.send('web sharelatex is alive (api)')
)