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:
Philip Molares 2020-04-12 20:52:28 +02:00 committed by David Mehren
parent 823bd5e432
commit 9afc2e19a4
No known key found for this signature in database
GPG key ID: 6017AF117F9756CB

View file

@ -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()) {