slower 1.1.17 → 1.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/router.js +26 -2
- package/package.json +1 -1
package/lib/router.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const http = require('http');
|
|
2
|
+
const https = require('https');
|
|
2
3
|
const fs = require('fs');
|
|
3
4
|
const { clone, noop, slugify, isSparseEqual, last, renderDynamicHTML, setSocketLocals, setSocketSecurityHeaders } = require('./utils');
|
|
4
5
|
const mimetable = require('./mimetable.json');
|
|
@@ -42,6 +43,8 @@ class SlowerRouter {
|
|
|
42
43
|
this.fallback = noop;
|
|
43
44
|
this.allowedMethods = clone(SlowerRouter.http_methods);
|
|
44
45
|
this.blockedMethodCallback = noop;
|
|
46
|
+
this.mime_table = SlowerRouter.mime_table;
|
|
47
|
+
this.tls = { use: false, key: null, cert: null };
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
enableStrictHeaders () {
|
|
@@ -58,6 +61,17 @@ class SlowerRouter {
|
|
|
58
61
|
return this;
|
|
59
62
|
}
|
|
60
63
|
|
|
64
|
+
setSecureContext (key = null, cert = null) {
|
|
65
|
+
// Activates TLS and HTTPS using a certificate and a key
|
|
66
|
+
if (!key || !cert || !Buffer.isBuffer(key) || !Buffer.isBuffer(cert)) {
|
|
67
|
+
throw new Error ("INVALID SECURE CONTEXT INFORMATION PROVIDED - CHECK KEY AND CERTIFICATE");
|
|
68
|
+
}
|
|
69
|
+
this.tls.use = true;
|
|
70
|
+
this.tls.key = key;
|
|
71
|
+
this.tls.cert = cert;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
|
|
61
75
|
/**
|
|
62
76
|
* Defines a route for a determined request method
|
|
63
77
|
* @category Router
|
|
@@ -298,7 +312,16 @@ class SlowerRouter {
|
|
|
298
312
|
let allowedMethods = this.allowedMethods;
|
|
299
313
|
let blockedMethodCallback = this.blockedMethodCallback;
|
|
300
314
|
|
|
301
|
-
let server
|
|
315
|
+
let server;
|
|
316
|
+
|
|
317
|
+
if (this.tls.use && this.tls.cert && this.tls.key) {
|
|
318
|
+
server = https.createServer({ key:this.tls.key, cert: this.tls.cert }, mainServerHandler);
|
|
319
|
+
|
|
320
|
+
} else {
|
|
321
|
+
server = http.createServer({}, mainServerHandler);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function mainServerHandler (req, res) {
|
|
302
325
|
try {
|
|
303
326
|
// Sets local req.session object
|
|
304
327
|
setSocketLocals(req);
|
|
@@ -332,7 +355,8 @@ class SlowerRouter {
|
|
|
332
355
|
} catch(err) {
|
|
333
356
|
console.log(err);
|
|
334
357
|
}
|
|
335
|
-
}
|
|
358
|
+
}
|
|
359
|
+
|
|
336
360
|
callback(server);
|
|
337
361
|
if (!host) host = undefined; // Turn falsy values into undefined, for default behaviour
|
|
338
362
|
server.listen(port, host);
|