mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-10-19 22:00:15 -04:00
worked on app.ts
- fixed imports - used lib/web/index.ts instead of importing all over the place Signed-off-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: David Mehren <dmehren1@gmail.com>
This commit is contained in:
parent
823bd5e432
commit
9afc2e19a4
1 changed files with 37 additions and 35 deletions
72
lib/app.ts
72
lib/app.ts
|
@ -1,34 +1,38 @@
|
||||||
|
import express from 'express'
|
||||||
|
import ejs from 'ejs'
|
||||||
|
import passport from 'passport'
|
||||||
|
import methodOverride from 'method-override'
|
||||||
|
import cookieParser from 'cookie-parser'
|
||||||
|
import compression from 'compression'
|
||||||
|
import session from 'express-session'
|
||||||
|
// eslint-disable-next-line @typescript-eslint/camelcase
|
||||||
|
import connect_session_sequelize from 'connect-session-sequelize'
|
||||||
|
import fs from 'fs'
|
||||||
|
import path from 'path'
|
||||||
|
import morgan from 'morgan'
|
||||||
|
import passportSocketIo from 'passport.socketio'
|
||||||
|
import helmet from 'helmet'
|
||||||
|
import i18n from 'i18n'
|
||||||
|
import flash from 'connect-flash'
|
||||||
|
|
||||||
import { Revision, sequelize } from './models'
|
import { Revision, sequelize } from './models'
|
||||||
import { config } from './config'
|
import { config } from './config'
|
||||||
import { logger } from './logger'
|
import { logger } from './logger'
|
||||||
|
import { errors } from './errors'
|
||||||
|
import { addNonceToLocals, computeDirectives } from './csp'
|
||||||
|
import { AuthRouter, BaseRouter, HistoryRouter, ImageRouter, NoteRouter, StatusRouter } from './web/'
|
||||||
|
|
||||||
const express = require('express')
|
// others
|
||||||
|
import { realtime } from './realtime'
|
||||||
const ejs = require('ejs')
|
|
||||||
const passport = require('passport')
|
|
||||||
const methodOverride = require('method-override')
|
|
||||||
const cookieParser = require('cookie-parser')
|
|
||||||
const compression = require('compression')
|
|
||||||
const session = require('express-session')
|
|
||||||
const SequelizeStore = require('connect-session-sequelize')(session.Store)
|
|
||||||
const fs = require('fs')
|
|
||||||
const path = require('path')
|
|
||||||
|
|
||||||
const morgan = require('morgan')
|
|
||||||
const passportSocketIo = require('passport.socketio')
|
|
||||||
const helmet = require('helmet')
|
|
||||||
const i18n = require('i18n')
|
|
||||||
const flash = require('connect-flash')
|
|
||||||
const errors = require('./errors')
|
|
||||||
const csp = require('./csp')
|
|
||||||
|
|
||||||
|
const SequelizeStore = connect_session_sequelize(session.Store)
|
||||||
// server setup
|
// server setup
|
||||||
const app = express()
|
const app = express()
|
||||||
let server: any = null
|
let server: any = null
|
||||||
if (config.useSSL) {
|
if (config.useSSL) {
|
||||||
const ca = (function () {
|
const ca = (function (): string[] {
|
||||||
let i, len, results
|
let i, len
|
||||||
results = []
|
const results: string[] = []
|
||||||
for (i = 0, len = config.sslCAPath.length; i < len; i++) {
|
for (i = 0, len = config.sslCAPath.length; i < len; i++) {
|
||||||
results.push(fs.readFileSync(config.sslCAPath[i], 'utf8'))
|
results.push(fs.readFileSync(config.sslCAPath[i], 'utf8'))
|
||||||
}
|
}
|
||||||
|
@ -62,10 +66,6 @@ io.engine.ws = new (require('ws').Server)({
|
||||||
noServer: true,
|
noServer: true,
|
||||||
perMessageDeflate: false
|
perMessageDeflate: false
|
||||||
})
|
})
|
||||||
|
|
||||||
// others
|
|
||||||
const realtime = require('./realtime')
|
|
||||||
|
|
||||||
// assign socket io to realtime
|
// assign socket io to realtime
|
||||||
realtime.io = io
|
realtime.io = io
|
||||||
|
|
||||||
|
@ -100,13 +100,13 @@ app.use(
|
||||||
)
|
)
|
||||||
|
|
||||||
// Generate a random nonce per request, for CSP with inline scripts
|
// Generate a random nonce per request, for CSP with inline scripts
|
||||||
app.use(csp.addNonceToLocals)
|
app.use(addNonceToLocals)
|
||||||
|
|
||||||
// use Content-Security-Policy to limit XSS, dangerous plugins, etc.
|
// use Content-Security-Policy to limit XSS, dangerous plugins, etc.
|
||||||
// https://helmetjs.github.io/docs/csp/
|
// https://helmetjs.github.io/docs/csp/
|
||||||
if (config.csp.enable) {
|
if (config.csp.enable) {
|
||||||
app.use(helmet.contentSecurityPolicy({
|
app.use(helmet.contentSecurityPolicy({
|
||||||
directives: csp.computeDirectives()
|
directives: computeDirectives()
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
logger.info('Content-Security-Policy is disabled. This may be a security risk.')
|
logger.info('Content-Security-Policy is disabled. This may be a security risk.')
|
||||||
|
@ -204,13 +204,13 @@ app.locals.enableDropBoxSave = config.isDropboxEnable
|
||||||
app.locals.enableGitHubGist = config.isGitHubEnable
|
app.locals.enableGitHubGist = config.isGitHubEnable
|
||||||
app.locals.enableGitlabSnippets = config.isGitlabSnippetsEnable
|
app.locals.enableGitlabSnippets = config.isGitlabSnippetsEnable
|
||||||
|
|
||||||
app.use(require('./web/baseRouter'))
|
app.use(BaseRouter)
|
||||||
app.use(require('./web/statusRouter'))
|
app.use(StatusRouter)
|
||||||
app.use(require('./web/auth'))
|
app.use(AuthRouter)
|
||||||
app.use(require('./web/historyRouter'))
|
app.use(HistoryRouter)
|
||||||
app.use(require('./web/userRouter'))
|
app.use(require('./web/userRouter'))
|
||||||
app.use(require('./web/imageRouter'))
|
app.use(ImageRouter)
|
||||||
app.use(require('./web/note/router'))
|
app.use(NoteRouter)
|
||||||
|
|
||||||
// response not found if no any route matxches
|
// response not found if no any route matxches
|
||||||
app.get('*', function (req, res) {
|
app.get('*', function (req, res) {
|
||||||
|
@ -288,7 +288,9 @@ function handleTermSignals () {
|
||||||
}, 0)
|
}, 0)
|
||||||
})
|
})
|
||||||
if (config.path) {
|
if (config.path) {
|
||||||
fs.unlink(config.path)
|
// ToDo: add a proper error handler
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||||
|
fs.unlink(config.path, (_) => {})
|
||||||
}
|
}
|
||||||
const checkCleanTimer = setInterval(function () {
|
const checkCleanTimer = setInterval(function () {
|
||||||
if (realtime.isReady()) {
|
if (realtime.isReady()) {
|
||||||
|
|
Loading…
Reference in a new issue