@@ -7,7 +7,6 @@ var ejs = require('ejs')
77var passport = require ( 'passport' )
88var methodOverride = require ( 'method-override' )
99var cookieParser = require ( 'cookie-parser' )
10- var compression = require ( 'compression' )
1110var session = require ( 'express-session' )
1211var SequelizeStore = require ( 'connect-session-sequelize' ) ( session . Store )
1312var fs = require ( 'fs' )
@@ -26,34 +25,37 @@ var response = require('./lib/response')
2625var models = require ( './lib/models' )
2726var csp = require ( './lib/csp' )
2827
29- // server setup
30- var app = express ( )
31- var server = null
32- if ( config . useSSL ) {
33- var ca = ( function ( ) {
34- var i , len , results
35- results = [ ]
36- for ( i = 0 , len = config . sslCAPath . length ; i < len ; i ++ ) {
37- results . push ( fs . readFileSync ( config . sslCAPath [ i ] , 'utf8' ) )
28+ function createHttpServer ( ) {
29+ if ( config . useSSL ) {
30+ const ca = ( function ( ) {
31+ let i , len
32+ const results = [ ]
33+ for ( i = 0 , len = config . sslCAPath . length ; i < len ; i ++ ) {
34+ results . push ( fs . readFileSync ( config . sslCAPath [ i ] , 'utf8' ) )
35+ }
36+ return results
37+ } ) ( )
38+ const options = {
39+ key : fs . readFileSync ( config . sslKeyPath , 'utf8' ) ,
40+ cert : fs . readFileSync ( config . sslCertPath , 'utf8' ) ,
41+ ca : ca ,
42+ dhparam : fs . readFileSync ( config . dhParamPath , 'utf8' ) ,
43+ requestCert : false ,
44+ rejectUnauthorized : false
3845 }
39- return results
40- } ) ( )
41- var options = {
42- key : fs . readFileSync ( config . sslKeyPath , 'utf8' ) ,
43- cert : fs . readFileSync ( config . sslCertPath , 'utf8' ) ,
44- ca : ca ,
45- dhparam : fs . readFileSync ( config . dhParamPath , 'utf8' ) ,
46- requestCert : false ,
47- rejectUnauthorized : false
46+ return require ( 'https' ) . createServer ( options , app )
47+ } else {
48+ return require ( 'http' ) . createServer ( app )
4849 }
49- server = require ( 'https' ) . createServer ( options , app )
50- } else {
51- server = require ( 'http' ) . createServer ( app )
5250}
5351
52+ // server setup
53+ var app = express ( )
54+ var server = createHttpServer ( )
55+
5456// logger
5557app . use ( morgan ( 'combined' , {
56- ' stream' : logger . stream
58+ stream : logger . stream
5759} ) )
5860
5961// socket io
@@ -77,9 +79,6 @@ var sessionStore = new SequelizeStore({
7779 db : models . sequelize
7880} )
7981
80- // compression
81- app . use ( compression ( ) )
82-
8382// use hsts to tell https users stick to this
8483if ( config . hsts . enable ) {
8584 app . use ( helmet . hsts ( {
@@ -181,6 +180,7 @@ app.locals.serverURL = config.serverURL
181180app . locals . sourceURL = config . sourceURL
182181app . locals . allowAnonymous = config . allowAnonymous
183182app . locals . allowAnonymousEdits = config . allowAnonymousEdits
183+ app . locals . permission = config . permission
184184app . locals . allowPDFExport = config . allowPDFExport
185185app . locals . authProviders = {
186186 facebook : config . isFacebookEnable ,
@@ -279,6 +279,7 @@ process.on('uncaughtException', function (err) {
279279function handleTermSignals ( ) {
280280 logger . info ( 'CodiMD has been killed by signal, try to exit gracefully...' )
281281 realtime . maintenance = true
282+ realtime . terminate ( )
282283 // disconnect all socket.io clients
283284 Object . keys ( io . sockets . sockets ) . forEach ( function ( key ) {
284285 var socket = io . sockets . sockets [ key ]
@@ -299,6 +300,9 @@ function handleTermSignals () {
299300 } )
300301 }
301302 } , 100 )
303+ setTimeout ( ( ) => {
304+ process . exit ( 1 )
305+ } , 5000 )
302306}
303307process . on ( 'SIGINT' , handleTermSignals )
304308process . on ( 'SIGTERM' , handleTermSignals )
0 commit comments