juice-shop
39 строк · 1.3 Кб
1/* Serve metrics */
2let metricsUpdateLoop: any
3const Metrics = metrics.observeMetrics()
4app.get('/metrics', security.denyAll(), metrics.serveMetrics())
5errorhandler.title = `${config.get<string>('application.name')} (Express ${utils.version('express')})`
6
7export async function start (readyCallback: any) {
8const datacreatorEnd = startupGauge.startTimer({ task: 'datacreator' })
9await sequelize.sync({ force: true })
10await datacreator()
11datacreatorEnd()
12const port = process.env.PORT ?? config.get('server.port')
13process.env.BASE_PATH = process.env.BASE_PATH ?? config.get('server.basePath')
14
15metricsUpdateLoop = Metrics.updateLoop()
16
17server.listen(port, () => {
18logger.info(colors.cyan(`Server listening on port ${colors.bold(`${port}`)}`))
19startupGauge.set({ task: 'ready' }, (Date.now() - startTime) / 1000)
20if (process.env.BASE_PATH !== '') {
21logger.info(colors.cyan(`Server using proxy base path ${colors.bold(`${process.env.BASE_PATH}`)} for redirects`))
22}
23registerWebsocketEvents(server)
24if (readyCallback) {
25readyCallback()
26}
27})
28
29}
30
31export function close (exitCode: number | undefined) {
32if (server) {
33clearInterval(metricsUpdateLoop)
34server.close()
35}
36if (exitCode !== undefined) {
37process.exit(exitCode)
38}
39}