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.
Files changed (2) hide show
  1. package/lib/router.js +26 -2
  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 = http.createServer(function (req, res) {
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slower",
3
- "version": "1.1.17",
3
+ "version": "1.1.18",
4
4
  "description": "A package for simple HTTP server routing.",
5
5
  "main": "index.js",
6
6
  "directories": {