dev-random-passwords 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3d62e89fa2d720f4775a0b3d73aed3e52c0b41e
4
- data.tar.gz: 0dd5b95dbbde4d59663f9df222fbdd65a3921436
3
+ metadata.gz: 8c871a256ac5a707cd16dcaeb3ffa8c07e0240c5
4
+ data.tar.gz: 76c308d9bc59e2fa2b3f6d2396b50284c5c2edb7
5
5
  SHA512:
6
- metadata.gz: 311fa111d01e0ace33d78c3759ae2c61c9795d65d64b50b161f571d4f71ab9bca01eb55d3a9ad5ce6333359bc314fdb6b63d3b083bb505131af566d52dc54ed5
7
- data.tar.gz: 38db336e907278907ee927e8f95b3e9fb696305dc400b2f9538d44f99af4361703383de2aea27a9a0b8aba1e33c1df689d4c61cf93a28a0187451cec404ca6f6
6
+ metadata.gz: 7122d2b0b9e31a4b667c4e0282471cce0be4b02d08ad42aba9ecfc5f09423d83a35d0c70faf7e47f452ff278e529cc61bdb221b855ad11833b5904e886539bf4
7
+ data.tar.gz: c4c8f1ecd9e7590c6fa0c7445f626206ff627cbe71d713d0a2e4538c79cf0377ce2e325cc1de99840585ca59c97e5987b8003de6249f334a1e4f5c184cbb640b
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ [![Gem Version](https://badge.fury.io/rb/dev-random-passwords.svg)](http://badge.fury.io/rb/dev-random-passwords)
1
2
  # Dev-Random-Passwords
2
3
 
3
4
  Passwords that need to be used long term and are randomly generated need more randomness than your standard random library. On Linux, Unix or OSX /dev/random can be used to create really secure passwords from random bytes. This gem provides an implementation to do just that.
@@ -37,8 +38,7 @@ rpg.set_options({'lowercase' => true, 'uppercase' => true, 'digits' => true, 'l
37
38
 
38
39
  Generate a new password
39
40
  ```ruby
40
- rpg.generate
41
- => "J0jhBM9dAPwk"
41
+ rpg.generate #=> "J0jhBM9dAPwk"
42
42
  ```
43
43
 
44
44
  Enjoy!
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'dev-random-passwords'
4
+ require 'optparse'
5
+
6
+ rpg = DevRandomPasswords::Generator.new
7
+ options = {
8
+ 'lowercase' => true,
9
+ 'uppercase' => true,
10
+ 'digits' => true,
11
+ 'special' => true,
12
+ 'include' => nil,
13
+ 'exclude' => nil,
14
+ 'length' => 8,
15
+ 'requirements' => nil
16
+ }
17
+
18
+
19
+ opts = OptionParser.new do |opts|
20
+ opts.banner = "Usage: randompasswords [options]"
21
+ opts.separator ""
22
+ opts.separator "Specific options:"
23
+
24
+ opts.on("-l", "--length [DIGITS]", "Password length in digits") do |length|
25
+ options['length'] = length.to_i
26
+ end
27
+
28
+ opts.on("-c", "--characters a,b,c",
29
+ Array, "List of character types to use comma separated") do |list|
30
+ ['lowercase','uppercase','digits','special'].each do |chartype|
31
+ if list.include? chartype
32
+ options[chartype] = true
33
+ else
34
+ options[chartype] = false
35
+ end
36
+ end
37
+ end
38
+
39
+ opts.on("-i", "--include [LETTERS]", "Characters to include in the password") do |include_chars|
40
+ options['include'] = include_chars
41
+ end
42
+
43
+ opts.on("-e", "--exclude [LETTERS]", "Characters to exclude from the password") do |exclude_chars|
44
+ options['exclude'] = exclude_chars
45
+ end
46
+
47
+ opts.on("-r", "--require x,y,z",
48
+ Array, "List of character types to require in the generated password comma separated") do |req|
49
+ req_hash = {}
50
+ ['lowercase','uppercase','digits','special'].each do |chartype|
51
+ if req.include? chartype
52
+ req_hash[chartype] = true
53
+ else
54
+ req_hash[chartype] = false
55
+ end
56
+ end
57
+ options['requirements'] = req_hash
58
+ end
59
+
60
+
61
+ #Help
62
+ opts.on_tail("-h", "--help", "Show this message") do
63
+ puts opts
64
+ exit
65
+ end
66
+
67
+ end
68
+
69
+ opts.parse!(ARGV)
70
+ rpg.set_options(options)
71
+ puts rpg.generate
72
+
Binary file
Binary file
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
+ spec.executables = ["randompasswords"]
20
21
 
21
22
  spec.add_development_dependency "bundler", "~> 1.6"
22
23
  spec.add_development_dependency "rake", "~> 10.0"
@@ -51,14 +51,14 @@ module DevRandomPasswords
51
51
  if options['include']
52
52
  if options['include'].respond_to? :each
53
53
  options['include'].each do |char|
54
- unless new_set.includes? char
55
- new_set += char
54
+ unless new_set.include? char
55
+ new_set.insert(-1, char)
56
56
  end
57
57
  end
58
58
  elsif options['include'].respond_to? :split
59
59
  options['include'].split("").each do |char|
60
- unless new_set.includes? char
61
- new_set += char
60
+ unless new_set.include? char
61
+ new_set.insert(-1, char)
62
62
  end
63
63
  end
64
64
  end
@@ -67,14 +67,14 @@ module DevRandomPasswords
67
67
  if options['exclude']
68
68
  if options['exclude'].respond_to? :each
69
69
  options['exclude'].each do |char|
70
- if new_set.includes? char
71
- new_set -= char
70
+ if new_set.include? char
71
+ new_set = new_set.tr(char, '')
72
72
  end
73
73
  end
74
74
  elsif options['exclude'].respond_to? :split
75
75
  options['exclude'].split("").each do |char|
76
- if new_set.includes? char
77
- new_set -= char
76
+ if new_set.include? char
77
+ new_set = new_set.tr(char, '')
78
78
  end
79
79
  end
80
80
  end
@@ -96,27 +96,29 @@ module DevRandomPasswords
96
96
 
97
97
  def requirements_met?(password)
98
98
 
99
- if @requirements['uppercase']
100
- if (password.split("") & UPPERCASE_CHARS.split("")).empty?
101
- return false
99
+ if @requirements
100
+ if @requirements['uppercase']
101
+ if (password.split("") & UPPERCASE_CHARS.split("")).empty?
102
+ return false
103
+ end
102
104
  end
103
- end
104
105
 
105
- if @requirements['lowercase']
106
- if (password.split("") & LOWERCASE_CHARS.split("")).empty?
107
- return false
106
+ if @requirements['lowercase']
107
+ if (password.split("") & LOWERCASE_CHARS.split("")).empty?
108
+ return false
109
+ end
108
110
  end
109
- end
110
111
 
111
- if @requirements['digits']
112
- if (password.split("") & DIGITS.split("")).empty?
113
- return false
112
+ if @requirements['digits']
113
+ if (password.split("") & DIGITS.split("")).empty?
114
+ return false
115
+ end
114
116
  end
115
- end
116
117
 
117
- if @requirements['special']
118
- if (password.split("") & SPECIAL_CHARS.split("")).empty?
119
- return false
118
+ if @requirements['special']
119
+ if (password.split("") & SPECIAL_CHARS.split("")).empty?
120
+ return false
121
+ end
120
122
  end
121
123
  end
122
124
 
@@ -1,3 +1,3 @@
1
1
  module DevRandomPasswords
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev-random-passwords
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-18 00:00:00.000000000 Z
11
+ date: 2014-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,7 +42,8 @@ description: On Linux, Unix or OSX /dev/random can be used to create really secu
42
42
  passwords from random bytes. This gem provides an implementation to do just that.
43
43
  email:
44
44
  - joel@trosic.com
45
- executables: []
45
+ executables:
46
+ - randompasswords
46
47
  extensions: []
47
48
  extra_rdoc_files: []
48
49
  files:
@@ -52,6 +53,9 @@ files:
52
53
  - LICENSE
53
54
  - README.md
54
55
  - Rakefile
56
+ - bin/randompasswords
57
+ - dev-random-passwords-0.0.1.gem
58
+ - dev-random-passwords-0.0.2.gem
55
59
  - dev-random-passwords.gemspec
56
60
  - lib/.DS_Store
57
61
  - lib/dev-random-passwords.rb