From e54a86017213f8c6a889a89d1c2024b8a5240104 Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 17:17:52 +0200 Subject: [PATCH 1/8] Added dictionary.js A key generator that uses a dictionary to create its keys --- lib/key_generators/dictionary.js | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/key_generators/dictionary.js diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js new file mode 100644 index 0000000..5e9db42 --- /dev/null +++ b/lib/key_generators/dictionary.js @@ -0,0 +1,37 @@ +var rand = require('random-js'); +var fs = require('fs') +var dictionary; +var randomEngine; +var random; + +var DictionaryGenerator = function(options) { + //Options + if (!options) + return done(Error('No options passed to generator')); + if(!options.path) + return done(Error('No dictionary path specified in options')); + + //Load dictionary + fs.readFile(options.path,'utf8',(err,data) => { + if(err) throw err; + dictionary = data.split(','); + + //Remove any non alpha-numeric characters + for(var i = 0; i < dictionary.length; i++){ + dictionary[i] = dictionary[i].replace(/\W/g,''); + } + + random = rand.integer(0,dictionary.length); + randomEngine = rand.engines.nativeMath; + }); +}; + +//Generates a dictionary-based key, of keyLength words +DictionaryGenerator.prototype.createKey = function(keyLength) { + var text = ''; + for(var i = 0; i < keyLength; i++) + text += dictionary[random(randomEngine)]; + return text; +}; + +module.exports = DictionaryGenerator; From 8e9205ceccffb74645bd71fff20dcedb7827d05f Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 17:37:04 +0200 Subject: [PATCH 2/8] Update dictionary.js --- lib/key_generators/dictionary.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 5e9db42..805630b 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -1,7 +1,7 @@ var rand = require('random-js'); var fs = require('fs') var dictionary; -var randomEngine; +var randomEngine = rand.engines.nativeMath; var random; var DictionaryGenerator = function(options) { @@ -12,17 +12,15 @@ var DictionaryGenerator = function(options) { return done(Error('No dictionary path specified in options')); //Load dictionary - fs.readFile(options.path,'utf8',(err,data) => { + fs.readFile(options.path, 'utf8', (err,data) => { if(err) throw err; - dictionary = data.split(','); + this.dictionary = data.split(','); //Remove any non alpha-numeric characters - for(var i = 0; i < dictionary.length; i++){ - dictionary[i] = dictionary[i].replace(/\W/g,''); - } - - random = rand.integer(0,dictionary.length); - randomEngine = rand.engines.nativeMath; + for(var i = 0; i < this.dictionary.length; i++) + this.dictionary[i] = this.dictionary[i].replace(/\W/g,''); + + this.random = rand.integer(0, this.dictionary.length); }); }; @@ -30,7 +28,7 @@ var DictionaryGenerator = function(options) { DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; for(var i = 0; i < keyLength; i++) - text += dictionary[random(randomEngine)]; + text += this.dictionary[random(randomEngine)]; return text; }; From dbf4f6b5ddc0c3d34b1f813c660094a37f145146 Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 17:39:32 +0200 Subject: [PATCH 3/8] Removed usage of random-js Replaced random-js with vanilla JS random --- lib/key_generators/dictionary.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 805630b..6bc6c2e 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -1,8 +1,5 @@ -var rand = require('random-js'); var fs = require('fs') var dictionary; -var randomEngine = rand.engines.nativeMath; -var random; var DictionaryGenerator = function(options) { //Options @@ -20,7 +17,6 @@ var DictionaryGenerator = function(options) { for(var i = 0; i < this.dictionary.length; i++) this.dictionary[i] = this.dictionary[i].replace(/\W/g,''); - this.random = rand.integer(0, this.dictionary.length); }); }; @@ -28,7 +24,7 @@ var DictionaryGenerator = function(options) { DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; for(var i = 0; i < keyLength; i++) - text += this.dictionary[random(randomEngine)]; + text += this.dictionary[Math.floor(Math.random()*this.dictionary.length]; return text; }; From ac2bceefbb5b37565f012acb23ca991c31eaa662 Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 17:42:24 +0200 Subject: [PATCH 4/8] Added missing ) --- lib/key_generators/dictionary.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 6bc6c2e..ad40b9a 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -24,7 +24,7 @@ var DictionaryGenerator = function(options) { DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; for(var i = 0; i < keyLength; i++) - text += this.dictionary[Math.floor(Math.random()*this.dictionary.length]; + text += this.dictionary[Math.floor(Math.random()*this.dictionary.length)]; return text; }; From 80f0618736cc3af756e85b910d83490b4e312a96 Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 18:03:18 +0200 Subject: [PATCH 5/8] Updated dictionary.js Now expects a newline separated dictionary, supports both \n and \n\r --- lib/key_generators/dictionary.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index ad40b9a..69ebc48 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -11,20 +11,18 @@ var DictionaryGenerator = function(options) { //Load dictionary fs.readFile(options.path, 'utf8', (err,data) => { if(err) throw err; - this.dictionary = data.split(','); - - //Remove any non alpha-numeric characters - for(var i = 0; i < this.dictionary.length; i++) - this.dictionary[i] = this.dictionary[i].replace(/\W/g,''); - - }); + this.dictionary = data.split(/[\n\r]+/); + }); }; //Generates a dictionary-based key, of keyLength words DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; - for(var i = 0; i < keyLength; i++) - text += this.dictionary[Math.floor(Math.random()*this.dictionary.length)]; + for(var i = 0; i < keyLength; i++) { + var index =Math.floor(Math.random()*this.dictionary.length); + text += this.dictionary[index]; + } + return text; }; From d66bc9a6c4520b0046188a3b2596296e99b9ac38 Mon Sep 17 00:00:00 2001 From: Klas af Geijerstam Date: Mon, 26 Jun 2017 18:09:13 +0200 Subject: [PATCH 6/8] Removed unused lines --- lib/key_generators/dictionary.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 69ebc48..52d2271 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -1,5 +1,4 @@ var fs = require('fs') -var dictionary; var DictionaryGenerator = function(options) { //Options @@ -18,10 +17,8 @@ var DictionaryGenerator = function(options) { //Generates a dictionary-based key, of keyLength words DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; - for(var i = 0; i < keyLength; i++) { - var index =Math.floor(Math.random()*this.dictionary.length); - text += this.dictionary[index]; - } + for(var i = 0; i < keyLength; i++) + text += this.dictionary[Math.floor(Math.random()*this.dictionary.length)]; return text; }; From 4599203bdfc8f9ac865a6e87b453a36ac6f51e97 Mon Sep 17 00:00:00 2001 From: John Crepezzi Date: Mon, 26 Jun 2017 12:10:57 -0400 Subject: [PATCH 7/8] A few style nit-picks --- lib/key_generators/dictionary.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 52d2271..69348f8 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -1,4 +1,4 @@ -var fs = require('fs') +var fs = require('fs'); var DictionaryGenerator = function(options) { //Options @@ -9,7 +9,7 @@ var DictionaryGenerator = function(options) { //Load dictionary fs.readFile(options.path, 'utf8', (err,data) => { - if(err) throw err; + if (err) throw err; this.dictionary = data.split(/[\n\r]+/); }); }; @@ -18,7 +18,7 @@ var DictionaryGenerator = function(options) { DictionaryGenerator.prototype.createKey = function(keyLength) { var text = ''; for(var i = 0; i < keyLength; i++) - text += this.dictionary[Math.floor(Math.random()*this.dictionary.length)]; + text += this.dictionary[Math.floor(Math.random() * this.dictionary.length)]; return text; }; From 87b1c76aafd121fe9e854c5d9c9793c591c1c4d3 Mon Sep 17 00:00:00 2001 From: John Crepezzi Date: Mon, 26 Jun 2017 12:11:19 -0400 Subject: [PATCH 8/8] One more --- lib/key_generators/dictionary.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/key_generators/dictionary.js b/lib/key_generators/dictionary.js index 69348f8..d7b515f 100644 --- a/lib/key_generators/dictionary.js +++ b/lib/key_generators/dictionary.js @@ -4,7 +4,7 @@ var DictionaryGenerator = function(options) { //Options if (!options) return done(Error('No options passed to generator')); - if(!options.path) + if (!options.path) return done(Error('No dictionary path specified in options')); //Load dictionary