Use import syntax for logger and config

Signed-off-by: David Mehren <dmehren1@gmail.com>
This commit is contained in:
David Mehren 2020-04-12 13:11:06 +02:00
parent dd11483f44
commit 9f284b752b
No known key found for this signature in database
GPG key ID: 6017AF117F9756CB
14 changed files with 98 additions and 113 deletions

View file

@ -1,46 +1,39 @@
'use strict' import { Revision, sequelize } from './models'
import { config } from './config'
import { logger } from './logger'
import { Revision } from "./models" const express = require('express')
import { sequelize } from './models'
// app const ejs = require('ejs')
// external modules const passport = require('passport')
const express = require('express'); 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 ejs = require('ejs'); const morgan = require('morgan')
const passport = require('passport'); const passportSocketIo = require('passport.socketio')
const methodOverride = require('method-override'); const helmet = require('helmet')
const cookieParser = require('cookie-parser'); const i18n = require('i18n')
const compression = require('compression'); const flash = require('connect-flash')
const session = require('express-session'); const errors = require('./errors')
const SequelizeStore = require('connect-session-sequelize')(session.Store); const csp = require('./csp')
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');
// core
const config = require('./config');
const logger = require('./logger');
const errors = require('./errors');
const csp = require('./csp');
// 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 () {
let i, len, results; let i, len, results
results = [] results = []
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'))
} }
return results return results
})(); })()
const options = { const options = {
key: fs.readFileSync(config.sslKeyPath, 'utf8'), key: fs.readFileSync(config.sslKeyPath, 'utf8'),
cert: fs.readFileSync(config.sslCertPath, 'utf8'), cert: fs.readFileSync(config.sslCertPath, 'utf8'),
@ -48,7 +41,7 @@ if (config.useSSL) {
dhparam: fs.readFileSync(config.dhParamPath, 'utf8'), dhparam: fs.readFileSync(config.dhParamPath, 'utf8'),
requestCert: false, requestCert: false,
rejectUnauthorized: false rejectUnauthorized: false
}; }
server = require('https').createServer(options, app) server = require('https').createServer(options, app)
} else { } else {
server = require('http').createServer(app) server = require('http').createServer(app)
@ -64,14 +57,14 @@ app.use(morgan('combined', {
})) }))
// socket io // socket io
const io = require('socket.io')(server); const io = require('socket.io')(server)
io.engine.ws = new (require('ws').Server)({ io.engine.ws = new (require('ws').Server)({
noServer: true, noServer: true,
perMessageDeflate: false perMessageDeflate: false
}) })
// others // others
const realtime = require('./realtime'); const realtime = require('./realtime')
// assign socket io to realtime // assign socket io to realtime
realtime.io = io realtime.io = io
@ -82,7 +75,7 @@ app.use(methodOverride('_method'))
// session store // session store
const sessionStore = new SequelizeStore({ const sessionStore = new SequelizeStore({
db: sequelize db: sequelize
}); })
// compression // compression
app.use(compression()) app.use(compression())
@ -152,7 +145,7 @@ app.use(session({
})) }))
// session resumption // session resumption
const tlsSessionStore = {}; const tlsSessionStore = {}
server.on('newSession', function (id, data, cb) { server.on('newSession', function (id, data, cb) {
tlsSessionStore[id.toString('hex')] = data tlsSessionStore[id.toString('hex')] = data
cb() cb()
@ -243,12 +236,12 @@ io.sockets.on('connection', realtime.connection)
// listen // listen
function startListen () { function startListen () {
let address; let address
const listenCallback = function () { const listenCallback = function () {
const schema = config.useSSL ? 'HTTPS' : 'HTTP'; const schema = config.useSSL ? 'HTTPS' : 'HTTP'
logger.info('%s Server listening at %s', schema, address) logger.info('%s Server listening at %s', schema, address)
realtime.maintenance = false realtime.maintenance = false
}; }
// use unix domain socket if 'path' is specified // use unix domain socket if 'path' is specified
if (config.path) { if (config.path) {
@ -287,7 +280,7 @@ function handleTermSignals () {
realtime.maintenance = true realtime.maintenance = true
// disconnect all socket.io clients // disconnect all socket.io clients
Object.keys(io.sockets.sockets).forEach(function (key) { Object.keys(io.sockets.sockets).forEach(function (key) {
const socket = io.sockets.sockets[key]; const socket = io.sockets.sockets[key]
// notify client server going into maintenance status // notify client server going into maintenance status
socket.emit('maintenance') socket.emit('maintenance')
setTimeout(function () { setTimeout(function () {
@ -307,7 +300,7 @@ function handleTermSignals () {
} }
}) })
} }
}, 100); }, 100)
} }
process.on('SIGINT', handleTermSignals) process.on('SIGINT', handleTermSignals)
process.on('SIGTERM', handleTermSignals) process.on('SIGTERM', handleTermSignals)

View file

@ -1,4 +1,5 @@
var config = require('./config') import { config } from './config'
var uuid = require('uuid') var uuid = require('uuid')
var CspStrategy = {} var CspStrategy = {}

View file

@ -1,7 +1,7 @@
'use strict' 'use strict'
import { createHash } from 'crypto' import { createHash } from 'crypto'
import randomColor from 'randomcolor' import randomColor from 'randomcolor'
import config from './config' import { config } from './config'
// core // core
export function generateAvatar (name: string): string { export function generateAvatar (name: string): string {

View file

@ -1,22 +1,20 @@
import {Sequelize} from 'sequelize-typescript'; import { Sequelize } from 'sequelize-typescript'
import {Author} from './author'; import { Author } from './author'
import {Note} from './note'; import { Note } from './note'
import {Revision} from './revision'; import { Revision } from './revision'
import {Temp} from './temp'; import { Temp } from './temp'
import {User} from './user'; import { User } from './user'
const {cloneDeep} = require('lodash') import { logger } from '../logger'
import { config } from '../config'
// core const { cloneDeep } = require('lodash')
var config = require('../config') const dbconfig = cloneDeep(config.db)
var logger = require('../logger')
var dbconfig = cloneDeep(config.db)
dbconfig.logging = config.debug ? (data) => { dbconfig.logging = config.debug ? (data) => {
logger.info(data) logger.info(data)
} : false } : false
export let sequelize: any; export let sequelize: any
// Heroku specific // Heroku specific
if (config.dbURL) { if (config.dbURL) {
@ -25,8 +23,6 @@ if (config.dbURL) {
sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password, dbconfig) sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password, dbconfig)
} }
sequelize.addModels([Author, Note, Revision, Temp, User]); sequelize.addModels([Author, Note, Revision, Temp, User])
export {Author, Note, Revision, Temp, User};
export { Author, Note, Revision, Temp, User }

View file

@ -30,8 +30,8 @@ import moment from 'moment'
// eslint-disable-next-line @typescript-eslint/camelcase // eslint-disable-next-line @typescript-eslint/camelcase
import { diff_match_patch, patch_obj } from 'diff-match-patch' import { diff_match_patch, patch_obj } from 'diff-match-patch'
import S from 'string' import S from 'string'
import config from '../config' import { config } from '../config'
import logger from '../logger' import { logger } from '../logger'
import ot from '../ot' import ot from '../ot'
const md = markdownIt() const md = markdownIt()

View file

@ -4,13 +4,13 @@ import { Note } from './note'
import { Utils } from '../utils' import { Utils } from '../utils'
import Sequelize from 'sequelize' import Sequelize from 'sequelize'
// core
import { logger } from '../logger'
import async = require('async'); import async = require('async');
import moment = require('moment'); import moment = require('moment');
import childProcess = require('child_process'); import childProcess = require('child_process');
import shortId = require('shortid'); import shortId = require('shortid');
import path = require('path'); import path = require('path');
// core
import logger = require('../logger');
const Op = Sequelize.Op const Op = Sequelize.Op

View file

@ -2,7 +2,7 @@ import { Note } from './note'
import { Table, BeforeCreate, BeforeUpdate, HasMany, Unique, IsEmail, Column, DataType, PrimaryKey, Model, Default } from 'sequelize-typescript' import { Table, BeforeCreate, BeforeUpdate, HasMany, Unique, IsEmail, Column, DataType, PrimaryKey, Model, Default } from 'sequelize-typescript'
import scrypt from 'scrypt-kdf' import scrypt from 'scrypt-kdf'
import { generateAvatarURL } from '../letter-avatars' import { generateAvatarURL } from '../letter-avatars'
import logger from '../logger' import { logger } from '../logger'
import { UUIDV4 } from 'sequelize' import { UUIDV4 } from 'sequelize'
// core // core

View file

@ -2,8 +2,8 @@ import { Author, Note, Revision, User } from './models'
import ot from './ot' import ot from './ot'
import history from './history' import history from './history'
import logger from './logger' import { logger } from './logger'
import config from './config' import { config } from './config'
import moment from 'moment' import moment from 'moment'
import randomcolor from 'randomcolor' import randomcolor from 'randomcolor'
import async from 'async' import async from 'async'
@ -26,10 +26,8 @@ const realtime: any = {
} }
/* eslint-enable @typescript-eslint/no-use-before-define */ /* eslint-enable @typescript-eslint/no-use-before-define */
const disconnectSocketQueue: any = [] const disconnectSocketQueue: any = []
function onAuthorizeSuccess (data, accept) { function onAuthorizeSuccess (data, accept) {
accept() accept()
} }
@ -384,7 +382,6 @@ function failConnection (code, err, socket) {
return socket.disconnect(true) return socket.disconnect(true)
} }
function interruptConnection (socket, noteId, socketId) { function interruptConnection (socket, noteId, socketId) {
if (notes[noteId]) delete notes[noteId] if (notes[noteId]) delete notes[noteId]
if (users[socketId]) delete users[socketId] if (users[socketId]) delete users[socketId]
@ -537,7 +534,6 @@ function operationCallback (socket, operation) {
}) })
} }
function startConnection (socket) { function startConnection (socket) {
if (isConnectionBusy) return if (isConnectionBusy) return
isConnectionBusy = true isConnectionBusy = true
@ -715,7 +711,6 @@ setInterval(function () {
}) })
}, 60000) }, 60000)
function updateUserData (socket, user) { function updateUserData (socket, user) {
// retrieve user data from passport // retrieve user data from passport
if (socket.request.user && socket.request.user.logged_in) { if (socket.request.user && socket.request.user.logged_in) {
@ -731,7 +726,6 @@ function updateUserData (socket, user) {
} }
} }
function connection (socket) { function connection (socket) {
if (realtime.maintenance) return if (realtime.maintenance) return
parseNoteIdFromSocket(socket, function (err, noteId) { parseNoteIdFromSocket(socket, function (err, noteId) {

View file

@ -1,11 +1,13 @@
'use strict' 'use strict'
// response // response
// external modules // external modules
// core
import { config } from './config'
var fs = require('fs') var fs = require('fs')
var path = require('path') var path = require('path')
var request = require('request') var request = require('request')
// core
var config = require('./config')
var logger = require('./logger') var logger = require('./logger')
var models = require('./models') var models = require('./models')
const noteUtil = require('./web/note/util') const noteUtil = require('./web/note/util')

View file

@ -1,8 +1,8 @@
import { Response } from 'express' import { Response } from 'express'
import { Note, Revision } from '../../models' import { Note, Revision } from '../../models'
import logger from '../../logger' import { logger } from '../../logger'
import config from '../../config' import { config } from '../../config'
import errors from '../../errors' import errors from '../../errors'
import shortId from 'shortid' import shortId from 'shortid'
import moment from 'moment' import moment from 'moment'

View file

@ -1,9 +1,9 @@
import { NextFunction, Response } from 'express' import { NextFunction, Request, Response } from 'express'
import { NoteUtils } from './util' import { NoteUtils } from './util'
import * as ActionController from './actions' import * as ActionController from './actions'
import errors from '../../errors' import errors from '../../errors'
import config from '../../config' import { config } from '../../config'
import logger from '../../logger' import { logger } from '../../logger'
import { User, Note } from '../../models' import { User, Note } from '../../models'
export module NoteController { export module NoteController {

View file

@ -1,8 +1,8 @@
import { NextFunction, Response } from "express"; import { NextFunction, Response } from "express";
import { NoteUtils } from "./util"; import { NoteUtils } from "./util";
import errors from '../../errors'; import errors from '../../errors';
import logger from '../../logger'; import { logger } from '../../logger'
import config from '../../config'; import { config } from '../../config'
import { User } from "../../models/user"; import { User } from "../../models/user";
import { Note } from "../../models/note"; import { Note } from "../../models/note";

View file

@ -1,20 +1,19 @@
import { Includeable } from "sequelize"; import { Includeable } from 'sequelize'
import { Response } from "express"; import { Response } from 'express'
import path from "path"; import path from 'path'
import fs from "fs"; import fs from 'fs'
import errors from "../../errors"; import errors from '../../errors'
import config from "../../config"; import { config } from '../../config'
import logger from "../../logger"; import { logger } from '../../logger'
import { Note } from "../../models/note"; import { Note , User } from '../../models'
import { User } from "../../models/user";
export module NoteUtils { export module NoteUtils {
export function findNoteOrCreate(req, res, callback: (note: any) => void, include?: Includeable[]) { export function findNoteOrCreate(req, res, callback: (note: any) => void, include?: Includeable[]) {
const id = req.params.noteId || req.params.shortid; const id = req.params.noteId || req.params.shortid
Note.parseNoteId(id, function (err, _id) { Note.parseNoteId(id, function (err, _id) {
if (err) { if (err) {
logger.error(err); logger.error(err)
return errors.errorInternalError(res) return errors.errorInternalError(res)
} }
Note.findOne({ Note.findOne({
@ -31,13 +30,13 @@ export module NoteUtils {
return callback(note) return callback(note)
} }
}).catch(function (err) { }).catch(function (err) {
logger.error(err); logger.error(err)
return errors.errorInternalError(res) return errors.errorInternalError(res)
}) })
}) })
} }
export function checkViewPermission(req: any, note: any) { export function checkViewPermission (req: any, note: any) {
if (note.permission === 'private') { if (note.permission === 'private') {
return req.isAuthenticated() && note.ownerId === req.user.id return req.isAuthenticated() && note.ownerId === req.user.id
} else if (note.permission === 'limited' || note.permission === 'protected') { } else if (note.permission === 'limited' || note.permission === 'protected') {
@ -47,9 +46,9 @@ export module NoteUtils {
} }
} }
export function newNote(req: any, res: Response, body: string | null) { export function newNote (req: any, res: Response, body: string | null) {
let owner = null; let owner = null
const noteId = req.params.noteId ? req.params.noteId : null; const noteId = req.params.noteId ? req.params.noteId : null
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
owner = req.user.id owner = req.user.id
} else if (!config.allowAnonymous) { } else if (!config.allowAnonymous) {
@ -67,21 +66,21 @@ export module NoteUtils {
}).then(function (note) { }).then(function (note) {
return res.redirect(config.serverURL + '/' + (note.alias ? note.alias : Note.encodeNoteId(note.id))) return res.redirect(config.serverURL + '/' + (note.alias ? note.alias : Note.encodeNoteId(note.id)))
}).catch(function (err) { }).catch(function (err) {
logger.error(err); logger.error(err)
return errors.errorInternalError(res) return errors.errorInternalError(res)
}) })
} }
export function getPublishData(req: any, res: Response, note: any, callback: (data: any) => void) { export function getPublishData (req: any, res: Response, note: any, callback: (data: any) => void) {
const body = note.content; const body = note.content
const extracted = Note.extractMeta(body); const extracted = Note.extractMeta(body)
const markdown = extracted.markdown; const markdown = extracted.markdown
const meta = Note.parseMeta(extracted.meta); const meta = Note.parseMeta(extracted.meta)
const createtime = note.createdAt; const createtime = note.createdAt
const updatetime = note.lastchangeAt; const updatetime = note.lastchangeAt
let title = Note.decodeTitle(note.title); let title = Note.decodeTitle(note.title)
title = Note.generateWebTitle(meta.title || title); title = Note.generateWebTitle(meta.title || title)
const ogdata = Note.parseOpengraph(meta, title); const ogdata = Note.parseOpengraph(meta, title)
const data = { const data = {
title: title, title: title,
description: meta.description || (markdown ? Note.generateDescription(markdown) : null), description: meta.description || (markdown ? Note.generateDescription(markdown) : null),
@ -101,15 +100,14 @@ export module NoteUtils {
cspNonce: res.locals.nonce, cspNonce: res.locals.nonce,
dnt: req.headers.dnt, dnt: req.headers.dnt,
opengraph: ogdata opengraph: ogdata
}; }
callback(data) callback(data)
} }
function isRevealTheme(theme: string) { function isRevealTheme (theme: string) {
if (fs.existsSync(path.join(__dirname, '..', '..', '..', 'public', 'build', 'reveal.js', 'css', 'theme', theme + '.css'))) { if (fs.existsSync(path.join(__dirname, '..', '..', '..', 'public', 'build', 'reveal.js', 'css', 'theme', theme + '.css'))) {
return theme return theme
} }
return undefined return undefined
} }
} }

View file

@ -1,10 +1,11 @@
'use strict' 'use strict'
import { config } from '../config'
const Router = require('express').Router const Router = require('express').Router
const errors = require('../errors') const errors = require('../errors')
const realtime = require('../realtime') const realtime = require('../realtime')
const config = require('../config')
const models = require('../models') const models = require('../models')
const logger = require('../logger') const logger = require('../logger')