@@ -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,31 +25,34 @@ 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 , results
32+ 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' , {
5658 'stream' : logger . stream
@@ -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 ( {
@@ -113,7 +112,7 @@ if (config.csp.enable) {
113112}
114113
115114i18n . configure ( {
116- locales : [ 'en' , 'zh-CN' , 'zh-TW' , 'fr' , 'de' , 'ja' , 'es' , 'ca' , 'el' , 'pt' , 'it' , 'tr' , 'ru' , 'nl' , 'hr' , 'pl' , 'uk' , 'hi' , 'sv' , 'eo' , 'da' , 'ko' , 'id' ] ,
115+ locales : [ 'en' , 'zh-CN' , 'zh-TW' , 'fr' , 'de' , 'ja' , 'es' , 'ca' , 'el' , 'pt' , 'it' , 'tr' , 'ru' , 'nl' , 'hr' , 'pl' , 'uk' , 'hi' , 'sv' , 'eo' , 'da' , 'ko' , 'id' , 'sr' ] ,
117116 cookie : 'locale' ,
118117 directory : path . join ( __dirname , '/locales' ) ,
119118 updateFiles : config . updateI18nFiles
@@ -279,6 +278,7 @@ process.on('uncaughtException', function (err) {
279278function handleTermSignals ( ) {
280279 logger . info ( 'CodiMD has been killed by signal, try to exit gracefully...' )
281280 realtime . maintenance = true
281+ realtime . terminate ( )
282282 // disconnect all socket.io clients
283283 Object . keys ( io . sockets . sockets ) . forEach ( function ( key ) {
284284 var socket = io . sockets . sockets [ key ]
@@ -299,6 +299,9 @@ function handleTermSignals () {
299299 } )
300300 }
301301 } , 100 )
302+ setTimeout ( ( ) => {
303+ process . exit ( 1 )
304+ } , 5000 )
302305}
303306process . on ( 'SIGINT' , handleTermSignals )
304307process . on ( 'SIGTERM' , handleTermSignals )
0 commit comments