MAJOR: Updates for Authenticated Web UI and CLI #30
| @ -12,6 +12,7 @@ var path = require('path'); | ||||
| var YAML = require('js-yaml'); | ||||
| var TOML = require('toml'); | ||||
| 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) { | ||||
| @ -232,10 +233,9 @@ function askForConfig(state, mainCb) { | ||||
|       //console.info("\tPrivate key (hex)");
 | ||||
|       console.info(""); | ||||
|       rl.question('auth: ', function (resp) { | ||||
|         var jwt = require('jsonwebtoken'); | ||||
|         resp = (resp || '').trim(); | ||||
|         try { | ||||
|           jwt.decode(resp); | ||||
|           JWT.decode(resp); | ||||
|           state.config.token = resp; | ||||
|         } catch(e) { | ||||
|           // is not jwt
 | ||||
| @ -604,8 +604,8 @@ function parseConfig(err, text) { | ||||
|         } | ||||
|         state._connecting = true; | ||||
|         try { | ||||
|           require('jsonwebtoken').decode(token); | ||||
|           //console.log(require('jsonwebtoken').decode(token));
 | ||||
|           JWT.decode(token); | ||||
|           //console.log(JWT.decode(token));
 | ||||
|         } catch(e) { | ||||
|           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'); | ||||
| }; | ||||
| common.signToken = function (state) { | ||||
|   var jwt = require('jsonwebtoken'); | ||||
|   var JWT = require('./jwt.js'); | ||||
|   var tokenData = { | ||||
|     domains: Object.keys(state.config.servernames || {}).filter(function (name) { | ||||
|       return /\./.test(name); | ||||
| @ -127,7 +127,7 @@ common.signToken = function (state) { | ||||
|   , iss: Math.round(Date.now() / 1000) | ||||
|   }; | ||||
| 
 | ||||
|   return jwt.sign(tokenData, state.config.secret); | ||||
|   return JWT.sign(tokenData, state.config.secret); | ||||
| }; | ||||
| common.promiseTimeout = function (ms) { | ||||
|   var tok; | ||||
|  | ||||
| @ -118,7 +118,7 @@ common.otp = function getOtp() { | ||||
|   return Math.round(Math.random() * 9999).toString().padStart(4, '0'); | ||||
| }; | ||||
| common.signToken = function (state) { | ||||
|   var jwt = require('jsonwebtoken'); | ||||
|   var JWT = require('./jwt.js'); | ||||
|   var tokenData = { | ||||
|     domains: Object.keys(state.config.servernames || {}).filter(function (name) { | ||||
|       return /\./.test(name); | ||||
| @ -131,7 +131,7 @@ common.signToken = function (state) { | ||||
|   , iss: Math.round(Date.now() / 1000) | ||||
|   }; | ||||
| 
 | ||||
|   return jwt.sign(tokenData, state.config.secret); | ||||
|   return JWT.sign(tokenData, state.config.secret); | ||||
| }; | ||||
| common.api = {}; | ||||
| 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": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/acme/-/acme-1.1.0.tgz", | ||||
|       "integrity": "sha512-l2UAkE7aEKdYZ2dSok/ONxKLWj4HrSSPwuGsQE42LM8m6NukRXPKSWXyusqR4m+LhvN76183VvA8IDOOnLjSlw==", | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/acme/-/acme-1.2.0.tgz", | ||||
|       "integrity": "sha512-lG9Wq0Ol2OLpVrusq5OQ+KCT06rXaGjbHcDhKtNO6Hr3J3swISaCYi0slwLpEA9DGV+QhDkAnZ6qsXAo86SM5Q==", | ||||
|       "requires": { | ||||
|         "acme-v2": "^1.1.0", | ||||
|         "bluebird": "^3.5.1" | ||||
|         "acme-v2": "^1.3.1" | ||||
|       } | ||||
|     }, | ||||
|     "acme-v2": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.1.0.tgz", | ||||
|       "integrity": "sha512-yODrKcfaqDwRM/nVZdupww7s7y/D1q6QMe8nbYPifVEO7JYi653FaoPbUFRXFKTEzFhJ4HNXZMGUKmLYJQq/Ag==", | ||||
|       "version": "1.5.2", | ||||
|       "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.5.2.tgz", | ||||
|       "integrity": "sha512-Ux0cFCxHeaGGeGyPGMLHBLIGF05OYaxuh4TvaVzwkVVRib/gPpioa50CGj2pnQimH/MRkg0VtWCEdfE45MV/0g==", | ||||
|       "requires": { | ||||
|         "@coolaj86/urequest": "^1.1.1", | ||||
|         "rsa-compat": "^1.3.0" | ||||
|         "@coolaj86/urequest": "^1.3.6", | ||||
|         "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": { | ||||
|       "version": "1.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", | ||||
| @ -49,11 +43,6 @@ | ||||
|         "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": { | ||||
|       "version": "1.0.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "3.5.1", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.0.0", | ||||
|       "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", | ||||
|       "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" | ||||
|     }, | ||||
|     "buffer-v6-polyfill": { | ||||
|       "version": "1.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.5.tgz", | ||||
|       "integrity": "sha1-0c2v61YAvvbCjWFElkJWvRLgFnc=" | ||||
|     }, | ||||
|     "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" | ||||
|       } | ||||
|     "cert-info": { | ||||
|       "version": "1.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/cert-info/-/cert-info-1.5.0.tgz", | ||||
|       "integrity": "sha512-3fE0DDJJ7FWwMsUqLqBd+FY5LQACK24R1p129BTCYMEe00Nql2Q9Dkr6TEBlZ8XJnNaSbjzf3qBLjLrD8KLutw==" | ||||
|     }, | ||||
|     "core-util-is": { | ||||
|       "version": "1.0.2", | ||||
| @ -158,14 +140,6 @@ | ||||
|       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||||
|       "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": { | ||||
|       "version": "1.1.1", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", | ||||
| @ -219,16 +199,6 @@ | ||||
|         "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": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", | ||||
| @ -252,28 +222,19 @@ | ||||
|       } | ||||
|     }, | ||||
|     "greenlock": { | ||||
|       "version": "2.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.3.2.tgz", | ||||
|       "integrity": "sha512-8jxb7gnKPMqUMBxa7ET3qTIALzEh30Na6TccIzaly62THZfiQtdPhVe9y26oaOEx5JGUMhc83FFo2hboeJz+ow==", | ||||
|       "version": "2.6.7", | ||||
|       "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.6.7.tgz", | ||||
|       "integrity": "sha512-cN8PU0tbpTyd0JiNhP78n6ZUYWhQs9fh4cuLjusKt0TjX0limP/u26wYGNK1cbgb9NsOeiox/wRhpGPh6EBocg==", | ||||
|       "requires": { | ||||
|         "acme": "^1.0.6", | ||||
|         "acme-v2": "^1.0.6", | ||||
|         "asn1js": "^1.2.12", | ||||
|         "bluebird": "^3.5.1", | ||||
|         "certpem": "^1.0.0", | ||||
|         "acme": "^1.2.0", | ||||
|         "acme-v2": "^1.5.0", | ||||
|         "cert-info": "^1.5.0", | ||||
|         "le-challenge-fs": "^2.0.2", | ||||
|         "le-sni-auto": "^2.1.3", | ||||
|         "le-store-certbot": "^2.1.0", | ||||
|         "node.extend": "^1.1.5", | ||||
|         "pkijs": "^1.3.27", | ||||
|         "rsa-compat": "^1.4.0" | ||||
|         "le-store-certbot": "^2.1.7", | ||||
|         "rsa-compat": "^1.9.2" | ||||
|       } | ||||
|     }, | ||||
|     "hoek": { | ||||
|       "version": "2.16.3", | ||||
|       "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", | ||||
|       "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" | ||||
|     }, | ||||
|     "http-errors": { | ||||
|       "version": "1.6.3", | ||||
|       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", | ||||
| @ -298,11 +259,6 @@ | ||||
|         "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": { | ||||
|       "version": "1.0.2", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "3.12.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/keypairs/-/keypairs-1.0.1.tgz", | ||||
| @ -399,30 +308,23 @@ | ||||
|       } | ||||
|     }, | ||||
|     "le-sni-auto": { | ||||
|       "version": "2.1.5", | ||||
|       "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.5.tgz", | ||||
|       "integrity": "sha512-AUlFpYifutAAs0D0UwVVD5Jzf+X2J6+VNb03LCOFVAezQNpNcQFsWwrZzd+y24gF7jYHGBbD25q8gURQ5rhL8w==", | ||||
|       "version": "2.1.6", | ||||
|       "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.6.tgz", | ||||
|       "integrity": "sha512-LcfkF2yQ1nrep+ZfyG+SfR3pHphKFD3zMZ9FKervGfTfvgScCv/XGbX+vxsGZEKZjvzxKbFZ/5LdSCXuLXUU6A==", | ||||
|       "requires": { | ||||
|         "bluebird": "^3.5.1" | ||||
|       } | ||||
|     }, | ||||
|     "le-store-certbot": { | ||||
|       "version": "2.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.1.3.tgz", | ||||
|       "integrity": "sha512-bUzbk4SfOKURUyLam4R7kI+7zGsO7/w/9mjeSDK+fAFLebjz/XND5VDzHotFEEbaOcu0UldD1/Dx3VShYnOFnw==", | ||||
|       "version": "2.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.2.1.tgz", | ||||
|       "integrity": "sha512-BhljZjTULhbNBAT6RBiv4TeZegFraMxURYEvh3WRUI048zmXf4ZfC8gwbdu5fnD2tTCsS9fbsCOAQyrFBl4jlA==", | ||||
|       "requires": { | ||||
|         "bluebird": "^3.5.1", | ||||
|         "fs-symlink": "^1.2.1", | ||||
|         "mkdirp": "^0.5.1", | ||||
|         "pyconf": "^1.1.2", | ||||
|         "safe-replace": "^1.0.2" | ||||
|         "pyconf": "^1.1.5", | ||||
|         "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": { | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", | ||||
| @ -454,34 +356,16 @@ | ||||
|         "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": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||||
|       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||||
|     }, | ||||
|     "mz": { | ||||
|       "version": "2.7.0", | ||||
|       "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", | ||||
|       "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", | ||||
|       "requires": { | ||||
|         "any-promise": "^1.0.0", | ||||
|         "object-assign": "^4.0.1", | ||||
|         "thenify-all": "^1.0.0" | ||||
|       } | ||||
|     "nan": { | ||||
|       "version": "2.12.1", | ||||
|       "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", | ||||
|       "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", | ||||
|       "optional": true | ||||
|     }, | ||||
|     "ndjson": { | ||||
|       "version": "1.5.0", | ||||
| @ -516,13 +400,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", | ||||
|       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" | ||||
|     }, | ||||
|     "node.extend": { | ||||
|       "version": "1.1.6", | ||||
|       "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", | ||||
|       "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", | ||||
|       "requires": { | ||||
|         "is": "^3.1.0" | ||||
|       } | ||||
|     "node-forge": { | ||||
|       "version": "0.7.6", | ||||
|       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", | ||||
|       "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", | ||||
|       "optional": true | ||||
|     }, | ||||
|     "object-assign": { | ||||
|       "version": "4.1.1", | ||||
| @ -560,11 +442,6 @@ | ||||
|         "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": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | ||||
| @ -585,9 +462,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "pyconf": { | ||||
|       "version": "1.1.5", | ||||
|       "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.5.tgz", | ||||
|       "integrity": "sha512-zXEg0oUJ4mY6azqVvRy6rePTIHZGhDQG3z9PVkE60uUabS9uILiIkHobU2Jzcs3tBltMBqyEATZZezRR/UFjkg==", | ||||
|       "version": "1.1.6", | ||||
|       "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.6.tgz", | ||||
|       "integrity": "sha512-4ujjwqch6nViWduSLc3/QFrDdJJAvAE7NRBarSGLANwh0tNW0MbXeJE8ZziJZvzRnUEN5scYwsS+ItYU1uj6dQ==", | ||||
|       "requires": { | ||||
|         "safe-replace": "^1.0.2" | ||||
|       } | ||||
| @ -630,18 +507,12 @@ | ||||
|       } | ||||
|     }, | ||||
|     "rsa-compat": { | ||||
|       "version": "1.4.2", | ||||
|       "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.4.2.tgz", | ||||
|       "integrity": "sha512-Ic0WfTwdiZ8DlSRDe3frod/8XGCZufwnsH4ap+6Ldt+j9bCCxIyoJZwlCvAL2NDeEO7ax0p/H0FmypprDF6B6w==", | ||||
|       "version": "1.9.2", | ||||
|       "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.9.2.tgz", | ||||
|       "integrity": "sha512-XY4I/74W+QENMd99zVsyHQcxYxWTXd0EihVXsI4oeb1bz7DYxEKasQrjyzYPnR1tZT7fTPu5HP/vTKfs9lzdGA==", | ||||
|       "requires": { | ||||
|         "node-forge": "^0.6.41" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "node-forge": { | ||||
|           "version": "0.6.49", | ||||
|           "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.49.tgz", | ||||
|           "integrity": "sha1-8e6V1ddGI5OP4Z1piqWibVTS9g8=" | ||||
|         } | ||||
|         "node-forge": "^0.7.6", | ||||
|         "ursa-optional": "^0.9.10" | ||||
|       } | ||||
|     }, | ||||
|     "safe-buffer": { | ||||
| @ -650,9 +521,9 @@ | ||||
|       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||||
|     }, | ||||
|     "safe-replace": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz", | ||||
|       "integrity": "sha1-sYGrQJWs32qwqPhAUXSRyoqZIro=" | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.1.0.tgz", | ||||
|       "integrity": "sha512-9/V2E0CDsKs9DWOOwJH7jYpSl9S3N05uyevNjvsnDauBqRowBPOyot1fIvV5N2IuZAbYyvrTXrYFVG0RZInfFw==" | ||||
|     }, | ||||
|     "sclient": { | ||||
|       "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": { | ||||
|       "version": "2.0.3", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||||
|       "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": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||
|  | ||||
| @ -55,9 +55,8 @@ | ||||
|   "dependencies": { | ||||
|     "@coolaj86/urequest": "^1.3.5", | ||||
|     "finalhandler": "^1.1.1", | ||||
|     "greenlock": "^2.3.1", | ||||
|     "greenlock": "^2.6.7", | ||||
|     "js-yaml": "^3.11.0", | ||||
|     "jsonwebtoken": "^7.1.9", | ||||
|     "keypairs": "^1.0.1", | ||||
|     "mkdirp": "^0.5.1", | ||||
|     "proxy-packer": "^2.0.2", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user