mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-12 13:13:45 +01:00
[web] add config option for custom maintenance message (#27618)
GitOrigin-RevId: e01eebecce780af6e9e3f8b82321cb7776d414e2
This commit is contained in:
@@ -188,6 +188,8 @@ const settings = {
|
|||||||
// Add https:// protocol prefix if not set (Allow plain-text http:// for Server Pro/CE).
|
// Add https:// protocol prefix if not set (Allow plain-text http:// for Server Pro/CE).
|
||||||
(process.env.OVERLEAF_STATUS_PAGE_URL.startsWith('http://') || process.env.OVERLEAF_STATUS_PAGE_URL.startsWith('https://')) ? process.env.OVERLEAF_STATUS_PAGE_URL : `https://${process.env.OVERLEAF_STATUS_PAGE_URL}`
|
(process.env.OVERLEAF_STATUS_PAGE_URL.startsWith('http://') || process.env.OVERLEAF_STATUS_PAGE_URL.startsWith('https://')) ? process.env.OVERLEAF_STATUS_PAGE_URL : `https://${process.env.OVERLEAF_STATUS_PAGE_URL}`
|
||||||
: undefined,
|
: undefined,
|
||||||
|
maintenanceMessage: process.env.OVERLEAF_MAINTENANCE_MESSAGE,
|
||||||
|
maintenanceMessageHTML: process.env.OVERLEAF_MAINTENANCE_MESSAGE_HTML,
|
||||||
|
|
||||||
// The name this is used to describe your Overleaf Community Edition Installation
|
// The name this is used to describe your Overleaf Community Edition Installation
|
||||||
appName: process.env.OVERLEAF_APP_NAME || 'Overleaf Community Edition',
|
appName: process.env.OVERLEAF_APP_NAME || 'Overleaf Community Edition',
|
||||||
|
|||||||
@@ -144,9 +144,12 @@ module.exports = HttpErrorHandler = {
|
|||||||
} else {
|
} else {
|
||||||
res.status(503)
|
res.status(503)
|
||||||
}
|
}
|
||||||
let message = `${Settings.appName} is currently down for maintenance.`
|
let message = Settings.maintenanceMessage
|
||||||
if (Settings.statusPageUrl) {
|
if (!message) {
|
||||||
message += ` Please check ${Settings.statusPageUrl} for updates.`
|
message = `${Settings.appName} is currently down for maintenance.`
|
||||||
|
if (Settings.statusPageUrl) {
|
||||||
|
message += ` Please check ${Settings.statusPageUrl} for updates.`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
switch (req.accepts(['html', 'json'])) {
|
switch (req.accepts(['html', 'json'])) {
|
||||||
case 'html':
|
case 'html':
|
||||||
|
|||||||
@@ -8,7 +8,11 @@ block content
|
|||||||
.page-header
|
.page-header
|
||||||
h1 Maintenance
|
h1 Maintenance
|
||||||
p
|
p
|
||||||
if settings.statusPageUrl
|
if settings.maintenanceMessageHTML
|
||||||
|
| !{settings.maintenanceMessageHTML}
|
||||||
|
else if settings.maintenanceMessage
|
||||||
|
| #{settings.maintenanceMessage}
|
||||||
|
else if settings.statusPageUrl
|
||||||
| #{settings.appName} is currently down for maintenance.
|
| #{settings.appName} is currently down for maintenance.
|
||||||
| Please check our #[a(href=settings.statusPageUrl target='_blank') status page]
|
| Please check our #[a(href=settings.statusPageUrl target='_blank') status page]
|
||||||
| for updates.
|
| for updates.
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ import Settings from '@overleaf/settings'
|
|||||||
import request from './helpers/request.js'
|
import request from './helpers/request.js'
|
||||||
|
|
||||||
describe('siteIsOpen', function () {
|
describe('siteIsOpen', function () {
|
||||||
|
afterEach(function () {
|
||||||
|
delete Settings.maintenanceMessage
|
||||||
|
delete Settings.maintenanceMessageHTML
|
||||||
|
})
|
||||||
|
|
||||||
describe('when siteIsOpen is default (true)', function () {
|
describe('when siteIsOpen is default (true)', function () {
|
||||||
it('should get page', function (done) {
|
it('should get page', function (done) {
|
||||||
return request.get('/login', (error, response, body) => {
|
return request.get('/login', (error, response, body) => {
|
||||||
@@ -41,6 +46,29 @@ describe('siteIsOpen', function () {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should return a custom message on maintenance page', function (done) {
|
||||||
|
const message = `Hello world (${Math.random()})`
|
||||||
|
Settings.maintenanceMessage = message
|
||||||
|
request.get('/login', (error, response, body) => {
|
||||||
|
response.statusCode.should.equal(503)
|
||||||
|
body.should.contain(message)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return a custom HTML message on maintenance page', function (done) {
|
||||||
|
const message = `Hello world (${Math.random()})`
|
||||||
|
const messageHTML = `<p style="color: ghostwhite">Hello world (${Math.random()})</p>`
|
||||||
|
Settings.maintenanceMessage = message
|
||||||
|
Settings.maintenanceMessageHTML = messageHTML
|
||||||
|
request.get('/login', (error, response, body) => {
|
||||||
|
response.statusCode.should.equal(503)
|
||||||
|
body.should.not.contain(message)
|
||||||
|
body.should.contain(messageHTML)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
it('should return a plain text message for a json request', function (done) {
|
it('should return a plain text message for a json request', function (done) {
|
||||||
request.get('/some/route', { json: true }, (error, response, body) => {
|
request.get('/some/route', { json: true }, (error, response, body) => {
|
||||||
response.statusCode.should.equal(503)
|
response.statusCode.should.equal(503)
|
||||||
@@ -50,6 +78,18 @@ describe('siteIsOpen', function () {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should return a custom message for a json request', function (done) {
|
||||||
|
const message = `Hello world (${Math.random()})`
|
||||||
|
const messageHTML = `<p style="color: ghostwhite">Hello world (${Math.random()})</p>`
|
||||||
|
Settings.maintenanceMessage = message
|
||||||
|
Settings.maintenanceMessageHTML = messageHTML
|
||||||
|
request.get('/some/route', { json: true }, (error, response, body) => {
|
||||||
|
response.statusCode.should.equal(503)
|
||||||
|
body.message.should.equal(message)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
it('should return a 200 on / for load balancer health checks', function (done) {
|
it('should return a 200 on / for load balancer health checks', function (done) {
|
||||||
request.get('/', (error, response, body) => {
|
request.get('/', (error, response, body) => {
|
||||||
response.statusCode.should.equal(200)
|
response.statusCode.should.equal(200)
|
||||||
|
|||||||
Reference in New Issue
Block a user