MAJOR: Updates for Authenticated Web UI and CLI #30
| @ -12,6 +12,7 @@ var path = require('path'); | |||||||
| var YAML = require('js-yaml'); | var YAML = require('js-yaml'); | ||||||
| var TOML = require('toml'); | var TOML = require('toml'); | ||||||
| var TPLS = TOML.parse(fs.readFileSync(path.join(__dirname, "../lib/en-us.toml"), 'utf8')); | var TPLS = TOML.parse(fs.readFileSync(path.join(__dirname, "../lib/en-us.toml"), 'utf8')); | ||||||
|  | var JWT = require('../lib/jwt.js'); | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| if ('function' !== typeof TOML.stringify) { | if ('function' !== typeof TOML.stringify) { | ||||||
| @ -232,10 +233,9 @@ function askForConfig(state, mainCb) { | |||||||
|       //console.info("\tPrivate key (hex)");
 |       //console.info("\tPrivate key (hex)");
 | ||||||
|       console.info(""); |       console.info(""); | ||||||
|       rl.question('auth: ', function (resp) { |       rl.question('auth: ', function (resp) { | ||||||
|         var jwt = require('jsonwebtoken'); |  | ||||||
|         resp = (resp || '').trim(); |         resp = (resp || '').trim(); | ||||||
|         try { |         try { | ||||||
|           jwt.decode(resp); |           JWT.decode(resp); | ||||||
|           state.config.token = resp; |           state.config.token = resp; | ||||||
|         } catch(e) { |         } catch(e) { | ||||||
|           // is not jwt
 |           // is not jwt
 | ||||||
| @ -604,8 +604,8 @@ function parseConfig(err, text) { | |||||||
|         } |         } | ||||||
|         state._connecting = true; |         state._connecting = true; | ||||||
|         try { |         try { | ||||||
|           require('jsonwebtoken').decode(token); |           JWT.decode(token); | ||||||
|           //console.log(require('jsonwebtoken').decode(token));
 |           //console.log(JWT.decode(token));
 | ||||||
|         } catch(e) { |         } catch(e) { | ||||||
|           console.warn("[warning] could not decode token"); |           console.warn("[warning] could not decode token"); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -114,7 +114,7 @@ common.otp = function getOtp() { | |||||||
|   return Math.round(Math.random() * 9999).toString().padStart(4, '0'); |   return Math.round(Math.random() * 9999).toString().padStart(4, '0'); | ||||||
| }; | }; | ||||||
| common.signToken = function (state) { | common.signToken = function (state) { | ||||||
|   var jwt = require('jsonwebtoken'); |   var JWT = require('./jwt.js'); | ||||||
|   var tokenData = { |   var tokenData = { | ||||||
|     domains: Object.keys(state.config.servernames || {}).filter(function (name) { |     domains: Object.keys(state.config.servernames || {}).filter(function (name) { | ||||||
|       return /\./.test(name); |       return /\./.test(name); | ||||||
| @ -127,7 +127,7 @@ common.signToken = function (state) { | |||||||
|   , iss: Math.round(Date.now() / 1000) |   , iss: Math.round(Date.now() / 1000) | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   return jwt.sign(tokenData, state.config.secret); |   return JWT.sign(tokenData, state.config.secret); | ||||||
| }; | }; | ||||||
| common.promiseTimeout = function (ms) { | common.promiseTimeout = function (ms) { | ||||||
|   var tok; |   var tok; | ||||||
|  | |||||||
| @ -118,7 +118,7 @@ common.otp = function getOtp() { | |||||||
|   return Math.round(Math.random() * 9999).toString().padStart(4, '0'); |   return Math.round(Math.random() * 9999).toString().padStart(4, '0'); | ||||||
| }; | }; | ||||||
| common.signToken = function (state) { | common.signToken = function (state) { | ||||||
|   var jwt = require('jsonwebtoken'); |   var JWT = require('./jwt.js'); | ||||||
|   var tokenData = { |   var tokenData = { | ||||||
|     domains: Object.keys(state.config.servernames || {}).filter(function (name) { |     domains: Object.keys(state.config.servernames || {}).filter(function (name) { | ||||||
|       return /\./.test(name); |       return /\./.test(name); | ||||||
| @ -131,7 +131,7 @@ common.signToken = function (state) { | |||||||
|   , iss: Math.round(Date.now() / 1000) |   , iss: Math.round(Date.now() / 1000) | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   return jwt.sign(tokenData, state.config.secret); |   return JWT.sign(tokenData, state.config.secret); | ||||||
| }; | }; | ||||||
| common.api = {}; | common.api = {}; | ||||||
| common.api.directory = function (state, next) { | common.api.directory = function (state, next) { | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								lib/jwt-test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lib/jwt-test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | var crypto = require('crypto'); | ||||||
|  | var FAT = require('jsonwebtoken'); | ||||||
|  | var JWT = require('./jwt.js'); | ||||||
|  | 
 | ||||||
|  | var key = "justanothersecretsecret"; | ||||||
|  | var keyid = crypto.createHash('sha256').update(key).digest('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); | ||||||
|  | 
 | ||||||
|  | var tok1 = FAT.sign({ foo: "hello" }, key, { keyid: keyid }); | ||||||
|  | var tok2 = JWT.sign({ foo: "hello" }, key); | ||||||
|  | 
 | ||||||
|  | if (tok1 !== tok2) { | ||||||
|  |   console.error(JWT.decode(tok1)); | ||||||
|  |   console.error(JWT.decode(tok2)); | ||||||
|  |   throw new Error("our jwt doesn't match auth0/jsonwebtoken"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | console.info('Pass'); | ||||||
							
								
								
									
										43
									
								
								lib/jwt.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								lib/jwt.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | var crypto = require('crypto'); | ||||||
|  | var JWT = module.exports; | ||||||
|  | 
 | ||||||
|  | JWT.decode = function (jwt) { | ||||||
|  |   var parts; | ||||||
|  | 
 | ||||||
|  |   try { | ||||||
|  |     parts = jwt.split('.'); | ||||||
|  |     return { | ||||||
|  |       header: JSON.parse(Buffer.from(parts[0], 'base64')) | ||||||
|  |     , payload: JSON.parse(Buffer.from(parts[1], 'base64')) | ||||||
|  |     , signature: parts[2] //Buffer.from(parts[2], 'base64')
 | ||||||
|  |     }; | ||||||
|  |   } catch(e) { | ||||||
|  |     throw new Error("JWT Parse Error: could not split, base64 decode, and JSON.parse token " + jwt); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | JWT.verify = function (jwt) { | ||||||
|  |   var decoded = JWT.decode(jwt); | ||||||
|  |   throw new Error("not implemented yet"); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | function base64ToUrlSafe(str) { | ||||||
|  |   return str | ||||||
|  |     .replace(/\+/g, '-') | ||||||
|  |     .replace(/\//g, '_') | ||||||
|  |     .replace(/=/g, '') | ||||||
|  |   ; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | JWT.sign = function (claims, key) { | ||||||
|  |   if (!claims.iat && false !== claims.iat) { | ||||||
|  |     claims.iat = Math.round(Date.now()/1000); | ||||||
|  |   } | ||||||
|  |   var thumb = base64ToUrlSafe(crypto.createHash('sha256').update(key).digest('base64')); | ||||||
|  |   var protect = base64ToUrlSafe(Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT', kid: thumb })).toString('base64')); | ||||||
|  |   var payload = base64ToUrlSafe(Buffer.from(JSON.stringify(claims)).toString('base64')); | ||||||
|  |   var signature = base64ToUrlSafe(crypto.createHmac('sha256', key).update(protect + '.' + payload).digest('base64')); | ||||||
|  |   return protect + '.' + payload + '.' + signature; | ||||||
|  | }; | ||||||
							
								
								
									
										293
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										293
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -19,28 +19,22 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "acme": { |     "acme": { | ||||||
|       "version": "1.1.0", |       "version": "1.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/acme/-/acme-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/acme/-/acme-1.2.0.tgz", | ||||||
|       "integrity": "sha512-l2UAkE7aEKdYZ2dSok/ONxKLWj4HrSSPwuGsQE42LM8m6NukRXPKSWXyusqR4m+LhvN76183VvA8IDOOnLjSlw==", |       "integrity": "sha512-lG9Wq0Ol2OLpVrusq5OQ+KCT06rXaGjbHcDhKtNO6Hr3J3swISaCYi0slwLpEA9DGV+QhDkAnZ6qsXAo86SM5Q==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "acme-v2": "^1.1.0", |         "acme-v2": "^1.3.1" | ||||||
|         "bluebird": "^3.5.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "acme-v2": { |     "acme-v2": { | ||||||
|       "version": "1.1.0", |       "version": "1.5.2", | ||||||
|       "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.5.2.tgz", | ||||||
|       "integrity": "sha512-yODrKcfaqDwRM/nVZdupww7s7y/D1q6QMe8nbYPifVEO7JYi653FaoPbUFRXFKTEzFhJ4HNXZMGUKmLYJQq/Ag==", |       "integrity": "sha512-Ux0cFCxHeaGGeGyPGMLHBLIGF05OYaxuh4TvaVzwkVVRib/gPpioa50CGj2pnQimH/MRkg0VtWCEdfE45MV/0g==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@coolaj86/urequest": "^1.1.1", |         "@coolaj86/urequest": "^1.3.6", | ||||||
|         "rsa-compat": "^1.3.0" |         "rsa-compat": "^1.9.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "any-promise": { |  | ||||||
|       "version": "1.3.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", |  | ||||||
|       "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" |  | ||||||
|     }, |  | ||||||
|     "argparse": { |     "argparse": { | ||||||
|       "version": "1.0.10", |       "version": "1.0.10", | ||||||
|       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", |       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", | ||||||
| @ -49,11 +43,6 @@ | |||||||
|         "sprintf-js": "~1.0.2" |         "sprintf-js": "~1.0.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "asn1js": { |  | ||||||
|       "version": "1.2.12", |  | ||||||
|       "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz", |  | ||||||
|       "integrity": "sha1-h9XueXWWri0qPLAkciDcQv/D8hE=" |  | ||||||
|     }, |  | ||||||
|     "async-limiter": { |     "async-limiter": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", | ||||||
| @ -64,6 +53,15 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", |       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", | ||||||
|       "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" |       "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" | ||||||
|     }, |     }, | ||||||
|  |     "bindings": { | ||||||
|  |       "version": "1.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", | ||||||
|  |       "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", | ||||||
|  |       "optional": true, | ||||||
|  |       "requires": { | ||||||
|  |         "file-uri-to-path": "1.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "bluebird": { |     "bluebird": { | ||||||
|       "version": "3.5.1", |       "version": "3.5.1", | ||||||
|       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", |       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", | ||||||
| @ -83,11 +81,6 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", | ||||||
|       "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" |       "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" | ||||||
|     }, |     }, | ||||||
|     "buffer-equal-constant-time": { |  | ||||||
|       "version": "1.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", |  | ||||||
|       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" |  | ||||||
|     }, |  | ||||||
|     "buffer-fill": { |     "buffer-fill": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", | ||||||
| @ -98,21 +91,10 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", | ||||||
|       "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" |       "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" | ||||||
|     }, |     }, | ||||||
|     "buffer-v6-polyfill": { |     "cert-info": { | ||||||
|       "version": "1.0.5", |       "version": "1.5.0", | ||||||
|       "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.5.tgz", |       "resolved": "https://registry.npmjs.org/cert-info/-/cert-info-1.5.0.tgz", | ||||||
|       "integrity": "sha1-0c2v61YAvvbCjWFElkJWvRLgFnc=" |       "integrity": "sha512-3fE0DDJJ7FWwMsUqLqBd+FY5LQACK24R1p129BTCYMEe00Nql2Q9Dkr6TEBlZ8XJnNaSbjzf3qBLjLrD8KLutw==" | ||||||
|     }, |  | ||||||
|     "certpem": { |  | ||||||
|       "version": "1.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/certpem/-/certpem-1.0.1.tgz", |  | ||||||
|       "integrity": "sha1-+koljEBXllxGVwCCL7jYB9fy2fU=", |  | ||||||
|       "requires": { |  | ||||||
|         "asn1js": "^1.2.12", |  | ||||||
|         "buffer-v6-polyfill": "^1.0.3", |  | ||||||
|         "node.extend": "^1.1.5", |  | ||||||
|         "pkijs": "^1.3.27" |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     "core-util-is": { |     "core-util-is": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
| @ -158,14 +140,6 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||||||
|       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | ||||||
|     }, |     }, | ||||||
|     "ecdsa-sig-formatter": { |  | ||||||
|       "version": "1.0.10", |  | ||||||
|       "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", |  | ||||||
|       "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", |  | ||||||
|       "requires": { |  | ||||||
|         "safe-buffer": "^5.0.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "ee-first": { |     "ee-first": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||||||
| @ -191,6 +165,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", |       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||||||
|       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" |       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | ||||||
|     }, |     }, | ||||||
|  |     "file-uri-to-path": { | ||||||
|  |       "version": "1.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", | ||||||
|  |       "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", | ||||||
|  |       "optional": true | ||||||
|  |     }, | ||||||
|     "finalhandler": { |     "finalhandler": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", | ||||||
| @ -219,16 +199,6 @@ | |||||||
|         "readable-stream": "^2.0.0" |         "readable-stream": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "fs-symlink": { |  | ||||||
|       "version": "1.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/fs-symlink/-/fs-symlink-1.2.1.tgz", |  | ||||||
|       "integrity": "sha1-G+uoPqncqBI2AOPwuaUbGGQLvEA=", |  | ||||||
|       "requires": { |  | ||||||
|         "mkdirp": "^0.5.0", |  | ||||||
|         "mkdirp-then": "1", |  | ||||||
|         "mz": "^2.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "generate-function": { |     "generate-function": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", | ||||||
| @ -252,28 +222,19 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "greenlock": { |     "greenlock": { | ||||||
|       "version": "2.3.2", |       "version": "2.6.7", | ||||||
|       "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.3.2.tgz", |       "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.6.7.tgz", | ||||||
|       "integrity": "sha512-8jxb7gnKPMqUMBxa7ET3qTIALzEh30Na6TccIzaly62THZfiQtdPhVe9y26oaOEx5JGUMhc83FFo2hboeJz+ow==", |       "integrity": "sha512-cN8PU0tbpTyd0JiNhP78n6ZUYWhQs9fh4cuLjusKt0TjX0limP/u26wYGNK1cbgb9NsOeiox/wRhpGPh6EBocg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "acme": "^1.0.6", |         "acme": "^1.2.0", | ||||||
|         "acme-v2": "^1.0.6", |         "acme-v2": "^1.5.0", | ||||||
|         "asn1js": "^1.2.12", |         "cert-info": "^1.5.0", | ||||||
|         "bluebird": "^3.5.1", |  | ||||||
|         "certpem": "^1.0.0", |  | ||||||
|         "le-challenge-fs": "^2.0.2", |         "le-challenge-fs": "^2.0.2", | ||||||
|         "le-sni-auto": "^2.1.3", |         "le-sni-auto": "^2.1.3", | ||||||
|         "le-store-certbot": "^2.1.0", |         "le-store-certbot": "^2.1.7", | ||||||
|         "node.extend": "^1.1.5", |         "rsa-compat": "^1.9.2" | ||||||
|         "pkijs": "^1.3.27", |  | ||||||
|         "rsa-compat": "^1.4.0" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "hoek": { |  | ||||||
|       "version": "2.16.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", |  | ||||||
|       "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" |  | ||||||
|     }, |  | ||||||
|     "http-errors": { |     "http-errors": { | ||||||
|       "version": "1.6.3", |       "version": "1.6.3", | ||||||
|       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", |       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", | ||||||
| @ -298,11 +259,6 @@ | |||||||
|         "from2": "^2.1.1" |         "from2": "^2.1.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "is": { |  | ||||||
|       "version": "3.2.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", |  | ||||||
|       "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" |  | ||||||
|     }, |  | ||||||
|     "is-property": { |     "is-property": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", | ||||||
| @ -313,22 +269,6 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||||||
|       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" |       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||||
|     }, |     }, | ||||||
|     "isemail": { |  | ||||||
|       "version": "1.2.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", |  | ||||||
|       "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" |  | ||||||
|     }, |  | ||||||
|     "joi": { |  | ||||||
|       "version": "6.10.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", |  | ||||||
|       "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", |  | ||||||
|       "requires": { |  | ||||||
|         "hoek": "2.x.x", |  | ||||||
|         "isemail": "1.x.x", |  | ||||||
|         "moment": "2.x.x", |  | ||||||
|         "topo": "1.x.x" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "js-yaml": { |     "js-yaml": { | ||||||
|       "version": "3.12.0", |       "version": "3.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", |       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", | ||||||
| @ -343,37 +283,6 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", |       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | ||||||
|       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" |       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" | ||||||
|     }, |     }, | ||||||
|     "jsonwebtoken": { |  | ||||||
|       "version": "7.4.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", |  | ||||||
|       "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", |  | ||||||
|       "requires": { |  | ||||||
|         "joi": "^6.10.1", |  | ||||||
|         "jws": "^3.1.4", |  | ||||||
|         "lodash.once": "^4.0.0", |  | ||||||
|         "ms": "^2.0.0", |  | ||||||
|         "xtend": "^4.0.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "jwa": { |  | ||||||
|       "version": "1.1.6", |  | ||||||
|       "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", |  | ||||||
|       "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", |  | ||||||
|       "requires": { |  | ||||||
|         "buffer-equal-constant-time": "1.0.1", |  | ||||||
|         "ecdsa-sig-formatter": "1.0.10", |  | ||||||
|         "safe-buffer": "^5.0.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "jws": { |  | ||||||
|       "version": "3.1.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", |  | ||||||
|       "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", |  | ||||||
|       "requires": { |  | ||||||
|         "jwa": "^1.1.5", |  | ||||||
|         "safe-buffer": "^5.0.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "keypairs": { |     "keypairs": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/keypairs/-/keypairs-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/keypairs/-/keypairs-1.0.1.tgz", | ||||||
| @ -399,30 +308,23 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "le-sni-auto": { |     "le-sni-auto": { | ||||||
|       "version": "2.1.5", |       "version": "2.1.6", | ||||||
|       "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.5.tgz", |       "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.6.tgz", | ||||||
|       "integrity": "sha512-AUlFpYifutAAs0D0UwVVD5Jzf+X2J6+VNb03LCOFVAezQNpNcQFsWwrZzd+y24gF7jYHGBbD25q8gURQ5rhL8w==", |       "integrity": "sha512-LcfkF2yQ1nrep+ZfyG+SfR3pHphKFD3zMZ9FKervGfTfvgScCv/XGbX+vxsGZEKZjvzxKbFZ/5LdSCXuLXUU6A==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "bluebird": "^3.5.1" |         "bluebird": "^3.5.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "le-store-certbot": { |     "le-store-certbot": { | ||||||
|       "version": "2.1.3", |       "version": "2.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.1.3.tgz", |       "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.2.1.tgz", | ||||||
|       "integrity": "sha512-bUzbk4SfOKURUyLam4R7kI+7zGsO7/w/9mjeSDK+fAFLebjz/XND5VDzHotFEEbaOcu0UldD1/Dx3VShYnOFnw==", |       "integrity": "sha512-BhljZjTULhbNBAT6RBiv4TeZegFraMxURYEvh3WRUI048zmXf4ZfC8gwbdu5fnD2tTCsS9fbsCOAQyrFBl4jlA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "bluebird": "^3.5.1", |  | ||||||
|         "fs-symlink": "^1.2.1", |  | ||||||
|         "mkdirp": "^0.5.1", |         "mkdirp": "^0.5.1", | ||||||
|         "pyconf": "^1.1.2", |         "pyconf": "^1.1.5", | ||||||
|         "safe-replace": "^1.0.2" |         "safe-replace": "^1.0.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "lodash.once": { |  | ||||||
|       "version": "4.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", |  | ||||||
|       "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" |  | ||||||
|     }, |  | ||||||
|     "mime": { |     "mime": { | ||||||
|       "version": "1.4.1", |       "version": "1.4.1", | ||||||
|       "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", |       "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", | ||||||
| @ -454,34 +356,16 @@ | |||||||
|         "minimist": "0.0.8" |         "minimist": "0.0.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "mkdirp-then": { |  | ||||||
|       "version": "1.2.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/mkdirp-then/-/mkdirp-then-1.2.0.tgz", |  | ||||||
|       "integrity": "sha1-pJLIecpNhz9e5FAI+PVf0BUN48U=", |  | ||||||
|       "requires": { |  | ||||||
|         "any-promise": "^1.1.0", |  | ||||||
|         "mkdirp": "^0.5.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "moment": { |  | ||||||
|       "version": "2.22.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", |  | ||||||
|       "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" |  | ||||||
|     }, |  | ||||||
|     "ms": { |     "ms": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||||||
|       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||||||
|     }, |     }, | ||||||
|     "mz": { |     "nan": { | ||||||
|       "version": "2.7.0", |       "version": "2.12.1", | ||||||
|       "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", |       "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", | ||||||
|       "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", |       "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", | ||||||
|       "requires": { |       "optional": true | ||||||
|         "any-promise": "^1.0.0", |  | ||||||
|         "object-assign": "^4.0.1", |  | ||||||
|         "thenify-all": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     "ndjson": { |     "ndjson": { | ||||||
|       "version": "1.5.0", |       "version": "1.5.0", | ||||||
| @ -516,13 +400,11 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", |       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", | ||||||
|       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" |       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" | ||||||
|     }, |     }, | ||||||
|     "node.extend": { |     "node-forge": { | ||||||
|       "version": "1.1.6", |       "version": "0.7.6", | ||||||
|       "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", |       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", | ||||||
|       "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", |       "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", | ||||||
|       "requires": { |       "optional": true | ||||||
|         "is": "^3.1.0" |  | ||||||
|       } |  | ||||||
|     }, |     }, | ||||||
|     "object-assign": { |     "object-assign": { | ||||||
|       "version": "4.1.1", |       "version": "4.1.1", | ||||||
| @ -560,11 +442,6 @@ | |||||||
|         "pinkie": "^2.0.0" |         "pinkie": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "pkijs": { |  | ||||||
|       "version": "1.3.33", |  | ||||||
|       "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-1.3.33.tgz", |  | ||||||
|       "integrity": "sha1-ponvYhE7fDSOH/wJll0iOeW7TJI=" |  | ||||||
|     }, |  | ||||||
|     "process-nextick-args": { |     "process-nextick-args": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | ||||||
| @ -585,9 +462,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "pyconf": { |     "pyconf": { | ||||||
|       "version": "1.1.5", |       "version": "1.1.6", | ||||||
|       "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.5.tgz", |       "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.6.tgz", | ||||||
|       "integrity": "sha512-zXEg0oUJ4mY6azqVvRy6rePTIHZGhDQG3z9PVkE60uUabS9uILiIkHobU2Jzcs3tBltMBqyEATZZezRR/UFjkg==", |       "integrity": "sha512-4ujjwqch6nViWduSLc3/QFrDdJJAvAE7NRBarSGLANwh0tNW0MbXeJE8ZziJZvzRnUEN5scYwsS+ItYU1uj6dQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "safe-replace": "^1.0.2" |         "safe-replace": "^1.0.2" | ||||||
|       } |       } | ||||||
| @ -630,18 +507,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "rsa-compat": { |     "rsa-compat": { | ||||||
|       "version": "1.4.2", |       "version": "1.9.2", | ||||||
|       "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.4.2.tgz", |       "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.9.2.tgz", | ||||||
|       "integrity": "sha512-Ic0WfTwdiZ8DlSRDe3frod/8XGCZufwnsH4ap+6Ldt+j9bCCxIyoJZwlCvAL2NDeEO7ax0p/H0FmypprDF6B6w==", |       "integrity": "sha512-XY4I/74W+QENMd99zVsyHQcxYxWTXd0EihVXsI4oeb1bz7DYxEKasQrjyzYPnR1tZT7fTPu5HP/vTKfs9lzdGA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "node-forge": "^0.6.41" |         "node-forge": "^0.7.6", | ||||||
|       }, |         "ursa-optional": "^0.9.10" | ||||||
|       "dependencies": { |  | ||||||
|         "node-forge": { |  | ||||||
|           "version": "0.6.49", |  | ||||||
|           "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.49.tgz", |  | ||||||
|           "integrity": "sha1-8e6V1ddGI5OP4Z1piqWibVTS9g8=" |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "safe-buffer": { |     "safe-buffer": { | ||||||
| @ -650,9 +521,9 @@ | |||||||
|       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||||||
|     }, |     }, | ||||||
|     "safe-replace": { |     "safe-replace": { | ||||||
|       "version": "1.0.2", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.1.0.tgz", | ||||||
|       "integrity": "sha1-sYGrQJWs32qwqPhAUXSRyoqZIro=" |       "integrity": "sha512-9/V2E0CDsKs9DWOOwJH7jYpSl9S3N05uyevNjvsnDauBqRowBPOyot1fIvV5N2IuZAbYyvrTXrYFVG0RZInfFw==" | ||||||
|     }, |     }, | ||||||
|     "sclient": { |     "sclient": { | ||||||
|       "version": "1.4.1", |       "version": "1.4.1", | ||||||
| @ -795,22 +666,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "thenify": { |  | ||||||
|       "version": "3.3.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", |  | ||||||
|       "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", |  | ||||||
|       "requires": { |  | ||||||
|         "any-promise": "^1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "thenify-all": { |  | ||||||
|       "version": "1.6.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", |  | ||||||
|       "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", |  | ||||||
|       "requires": { |  | ||||||
|         "thenify": ">= 3.1.0 < 4" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "through2": { |     "through2": { | ||||||
|       "version": "2.0.3", |       "version": "2.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", |       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", | ||||||
| @ -825,19 +680,21 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/toml/-/toml-0.4.1.tgz", |       "resolved": "https://registry.npmjs.org/toml/-/toml-0.4.1.tgz", | ||||||
|       "integrity": "sha1-Iv5QHFe+WpV9o4JcHd5YS7LmL3M=" |       "integrity": "sha1-Iv5QHFe+WpV9o4JcHd5YS7LmL3M=" | ||||||
|     }, |     }, | ||||||
|     "topo": { |  | ||||||
|       "version": "1.1.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", |  | ||||||
|       "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", |  | ||||||
|       "requires": { |  | ||||||
|         "hoek": "2.x.x" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "unpipe": { |     "unpipe": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||||||
|       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" |       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" | ||||||
|     }, |     }, | ||||||
|  |     "ursa-optional": { | ||||||
|  |       "version": "0.9.10", | ||||||
|  |       "resolved": "https://registry.npmjs.org/ursa-optional/-/ursa-optional-0.9.10.tgz", | ||||||
|  |       "integrity": "sha512-RvEbhnxlggX4MXon7KQulTFiJQtLJZpSb9ZSa7ZTkOW0AzqiVTaLjI4vxaSzJBDH9dwZ3ltZadFiBaZslp6haA==", | ||||||
|  |       "optional": true, | ||||||
|  |       "requires": { | ||||||
|  |         "bindings": "^1.3.0", | ||||||
|  |         "nan": "^2.11.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "util-deprecate": { |     "util-deprecate": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||||
|  | |||||||
| @ -55,9 +55,8 @@ | |||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@coolaj86/urequest": "^1.3.5", |     "@coolaj86/urequest": "^1.3.5", | ||||||
|     "finalhandler": "^1.1.1", |     "finalhandler": "^1.1.1", | ||||||
|     "greenlock": "^2.3.1", |     "greenlock": "^2.6.7", | ||||||
|     "js-yaml": "^3.11.0", |     "js-yaml": "^3.11.0", | ||||||
|     "jsonwebtoken": "^7.1.9", |  | ||||||
|     "keypairs": "^1.0.1", |     "keypairs": "^1.0.1", | ||||||
|     "mkdirp": "^0.5.1", |     "mkdirp": "^0.5.1", | ||||||
|     "proxy-packer": "^2.0.2", |     "proxy-packer": "^2.0.2", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user