Explorar el Código

Add HSTS and do some reorganisation

Matt Coles hace 9 años
padre
commit
65d9ec6d13
Se han modificado 2 ficheros con 35 adiciones y 14 borrados
  1. 33 14
      index.js
  2. 2 0
      package.json

+ 33 - 14
index.js

1
 var fs = require('fs');
1
 var fs = require('fs');
2
+var compression = require('compression')
2
 var https = require('https');
3
 var https = require('https');
3
 var express = require('express');
4
 var express = require('express');
4
 var path = require('path');
5
 var path = require('path');
8
 var basic_auth = require('basic-auth');
9
 var basic_auth = require('basic-auth');
9
 var FileStreamRotator = require('file-stream-rotator');
10
 var FileStreamRotator = require('file-stream-rotator');
10
 var morgan = require('morgan');
11
 var morgan = require('morgan');
12
+var hsts = require('hsts');
11
 var route_manager = require("../ip-project-server/utils/route-manager.js");
13
 var route_manager = require("../ip-project-server/utils/route-manager.js");
12
 var scheduler = require("../ip-project-server/presenters/schedule-controller.js");
14
 var scheduler = require("../ip-project-server/presenters/schedule-controller.js");
13
 var app = express();
15
 var app = express();
14
 var logDirectory = 'log'
16
 var logDirectory = 'log'
17
+var nicklist = {};
15
 
18
 
16
 /*
19
 /*
17
 
20
 
37
   };
40
   };
38
 };
41
 };
39
 
42
 
40
-io.on('connection', function(socket){
41
-  console.log('a user connected');
42
-  nicklist[socket.id] = getRandomInt(0,99999);
43
-  socket.on('chat message', function(msg){
44
-    console.log(msg.nick + '#' + nicklist[socket.id] + ': ' + msg.msg);
45
-    msg.nick = msg.nick + '#' + nicklist[socket.id];
46
-    io.emit('chat message', msg);
47
-  });
48
-  socket.on('disconnect', function(){
49
-    console.log('user disconnected');
50
-    delete nicklist[socket.id];
51
-  });
52
-});
53
 
43
 
54
 fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory)
44
 fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory)
55
 var accessLogStream = FileStreamRotator.getStream({
45
 var accessLogStream = FileStreamRotator.getStream({
68
 */
58
 */
69
 
59
 
70
 // Always use SSL, comes first.
60
 // Always use SSL, comes first.
61
+app.use(compression());
71
 app.use(forceSSL);
62
 app.use(forceSSL);
63
+app.use(hsts({
64
+  maxAge: 31536000000,
65
+  includeSubDomains: true, // Must be enabled to be approved by Google 
66
+  preload: true
67
+}))
72
 
68
 
73
 app.use(bodyParser.json()); // for parsing application/json
69
 app.use(bodyParser.json()); // for parsing application/json
74
 app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
70
 app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
115
 var certi = fs.readFileSync('cert.pem');
111
 var certi = fs.readFileSync('cert.pem');
116
 var capem = fs.readFileSync('ca.pem');
112
 var capem = fs.readFileSync('ca.pem');
117
 
113
 
118
-https.createServer({
114
+var s = https.createServer({
119
   key: prkey,
115
   key: prkey,
120
   cert: certi,
116
   cert: certi,
121
   ca: capem
117
   ca: capem
126
 app.listen(80, function () {
122
 app.listen(80, function () {
127
   console.log('Now accepting HTTP connections on port 80.');
123
   console.log('Now accepting HTTP connections on port 80.');
128
 });
124
 });
125
+
126
+function getRandomInt(min, max) {
127
+  min = Math.ceil(min);
128
+  max = Math.floor(max);
129
+  return Math.floor(Math.random() * (max - min)) + min;
130
+}
131
+
132
+var io = require('socket.io')(s);
133
+
134
+io.on('connection', function(socket){
135
+  console.log('a user connected');
136
+  nicklist[socket.id] = getRandomInt(0,99999);
137
+  socket.on('chat message', function(msg){
138
+    console.log(msg.nick + '#' + nicklist[socket.id] + ': ' + msg.msg);
139
+    msg.nick = msg.nick + '#' + nicklist[socket.id];
140
+    io.emit('chat message', msg);
141
+  });
142
+  socket.on('disconnect', function(){
143
+    console.log('user disconnected');
144
+    delete nicklist[socket.id];
145
+  });
146
+});
147
+

+ 2 - 0
package.json

11
   "dependencies": {
11
   "dependencies": {
12
     "basic-auth": "^1.0.4",
12
     "basic-auth": "^1.0.4",
13
     "body-parser": "^1.15.1",
13
     "body-parser": "^1.15.1",
14
+    "compression": "^1.6.2",
14
     "express": "^4.13.4",
15
     "express": "^4.13.4",
15
     "express-force-ssl": "^0.3.2",
16
     "express-force-ssl": "^0.3.2",
16
     "file-stream-rotator": "0.0.6",
17
     "file-stream-rotator": "0.0.6",
18
+    "hsts": "^1.0.0",
17
     "morgan": "^1.7.0",
19
     "morgan": "^1.7.0",
18
     "serve-index": "^1.7.3",
20
     "serve-index": "^1.7.3",
19
     "socket.io": "^1.4.8"
21
     "socket.io": "^1.4.8"