trocla 0.0.7 → 0.0.8

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.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.8.7
data/Gemfile CHANGED
@@ -3,17 +3,17 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "moneta", ">= 0.6.1", :git => 'git://github.com/duritong/moneta.git'
6
+ gem "moneta", "~> 0.7.2"
7
7
  gem "highline"
8
8
  gem "bcrypt-ruby"
9
9
 
10
10
  # Add dependencies to develop your gem here.
11
11
  # Include everything needed to run rake, tests, features, etc.
12
12
  group :development do
13
- gem "rspec", "~> 2.3.0"
13
+ gem "rspec", "~> 2.4.0"
14
14
  gem "rdoc", "~> 3.8"
15
15
  gem "mocha"
16
- gem "bundler", "~> 1.0.0"
16
+ gem "bundler", "~> 1.2.3"
17
17
  gem "jeweler", "~> 1.6.4"
18
18
  gem "rcov", ">= 0"
19
19
  end
data/Gemfile.lock CHANGED
@@ -1,14 +1,8 @@
1
- GIT
2
- remote: git://github.com/duritong/moneta.git
3
- revision: 38125d0d598891f27fa6836cbc57cb928831ac4f
4
- specs:
5
- moneta (0.6.1)
6
-
7
1
  GEM
8
2
  remote: http://rubygems.org/
9
3
  specs:
10
4
  bcrypt-ruby (2.1.4)
11
- diff-lcs (1.1.2)
5
+ diff-lcs (1.1.3)
12
6
  git (1.2.5)
13
7
  highline (1.6.2)
14
8
  jeweler (1.6.4)
@@ -16,28 +10,29 @@ GEM
16
10
  git (>= 1.2.5)
17
11
  rake
18
12
  mocha (0.9.12)
13
+ moneta (0.7.2)
19
14
  rake (0.9.2)
20
15
  rcov (0.9.9)
21
16
  rdoc (3.8)
22
- rspec (2.3.0)
23
- rspec-core (~> 2.3.0)
24
- rspec-expectations (~> 2.3.0)
25
- rspec-mocks (~> 2.3.0)
26
- rspec-core (2.3.1)
27
- rspec-expectations (2.3.0)
17
+ rspec (2.4.0)
18
+ rspec-core (~> 2.4.0)
19
+ rspec-expectations (~> 2.4.0)
20
+ rspec-mocks (~> 2.4.0)
21
+ rspec-core (2.4.0)
22
+ rspec-expectations (2.4.0)
28
23
  diff-lcs (~> 1.1.2)
29
- rspec-mocks (2.3.0)
24
+ rspec-mocks (2.4.0)
30
25
 
31
26
  PLATFORMS
32
27
  ruby
33
28
 
34
29
  DEPENDENCIES
35
30
  bcrypt-ruby
36
- bundler (~> 1.0.0)
31
+ bundler (~> 1.2.3)
37
32
  highline
38
33
  jeweler (~> 1.6.4)
39
34
  mocha
40
- moneta (>= 0.6.1)!
35
+ moneta (~> 0.7.2)
41
36
  rcov
42
37
  rdoc (~> 3.8)
43
- rspec (~> 2.3.0)
38
+ rspec (~> 2.4.0)
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # trocla
2
+ [![Build Status](https://travis-ci.org/duritong/trocla.png)](https://travis-ci.org/duritong/trocla)
2
3
 
3
4
  Trocla provides you a simple way to create and store (random) passwords on a
4
5
  central server, which can be retrieved by other applications. An example for
@@ -77,15 +78,24 @@ far.
77
78
 
78
79
  This will ask you for a password and set it under the appropriate key/format.
79
80
 
80
- trocla set --pwd-from-stdin user4 plain mysupersecretpassword
81
+ trocla set --password mysupersecretpassword user4 plain
81
82
 
82
83
  This will take the password from the cli without asking you.
83
84
 
84
- trocla set --pwd-from-stdin user5 mysql *ABC....
85
+ trocla set user5 mysql -p *ABC....
85
86
 
86
87
  This will store a mysql sha1 hash for the key user5, without storing any kind
87
88
  of plain text password.
88
89
 
90
+ You can also pipe in a password:
91
+
92
+ echo -n foo | trocla set user6 plain -p
93
+
94
+ or a file
95
+
96
+ cat some_file | trocla set user6 plain -p
97
+ trocla set user6 plain -p < some_file
98
+
89
99
  ### reset
90
100
 
91
101
  trocla reset user1 md5crypt
@@ -113,9 +123,7 @@ to address.
113
123
 
114
124
  ## Installation
115
125
 
116
- Simply build and install the gem. BUT trocla is based on a not yet published
117
- version of [moneta](https://github.com/wycats/moneta). You can build a new
118
- moneta version based on the latest master as version 0.6.1 and instal that one.
126
+ Simply build and install the gem.
119
127
 
120
128
  ## Contributing to trocla
121
129
 
data/bin/trocla CHANGED
@@ -26,20 +26,19 @@ OptionParser.new do |opts|
26
26
  opts.on("--no-random") do
27
27
  options['random'] = false
28
28
  end
29
-
29
+
30
30
  opts.on("--length LENGTH") do |v|
31
31
  options['length'] = v.to_i
32
32
  end
33
-
34
- opts.on("--pwd-from-stdin") do
33
+
34
+ opts.on("--password [PASSWORD]", "-p", "Provide password at command line") do |pass|
35
35
  options[:ask_password] = false
36
+ options[:password] = pass
36
37
  end
37
-
38
38
 
39
39
  end.parse!
40
40
 
41
41
  def create(options)
42
- miss_format unless options[:trocla_format]
43
42
  Trocla.new(options.delete(:config_file)).password(
44
43
  options.delete(:trocla_key),
45
44
  options.delete(:trocla_format),
@@ -48,14 +47,12 @@ def create(options)
48
47
  end
49
48
 
50
49
  def get(options)
51
- miss_format unless options[:trocla_format]
52
50
  Trocla.new(options.delete(:config_file)).get_password(
53
51
  options.delete(:trocla_key),
54
52
  options.delete(:trocla_format)
55
53
  )
56
54
  end
57
55
  def set(options)
58
- miss_format unless options[:trocla_format]
59
56
  if options.delete(:ask_password)
60
57
  require 'highline/import'
61
58
  password = ask("Enter your password: ") { |q| q.echo = "x" }
@@ -65,7 +62,7 @@ def set(options)
65
62
  exit 1
66
63
  end
67
64
  else
68
- password = options.delete(:other_options).shift
65
+ password = options.delete(:password) || STDIN.read.chomp
69
66
  end
70
67
  Trocla.new(options.delete(:config_file)).set_password(
71
68
  options.delete(:trocla_key),
@@ -76,7 +73,6 @@ def set(options)
76
73
  end
77
74
 
78
75
  def reset(options)
79
- miss_format unless options[:trocla_format]
80
76
  Trocla.new(options.delete(:config_file)).reset_password(
81
77
  options.delete(:trocla_key),
82
78
  options.delete(:trocla_format),
@@ -91,9 +87,14 @@ def delete(options)
91
87
  )
92
88
  end
93
89
 
94
- def miss_format
95
- STDERR.puts "Missing format, exiting..."
96
- exit 1
90
+ def check_format(format_name)
91
+ if format_name.nil?
92
+ STDERR.puts "Missing format, exiting..."
93
+ exit 1
94
+ elsif !Trocla::Formats.available?(format_name)
95
+ STDERR.puts "Error: The format #{format_name} is not available"
96
+ exit 1
97
+ end
97
98
  end
98
99
 
99
100
  actions=['create','get','set','reset','delete']
@@ -102,6 +103,7 @@ if !(ARGV.length < 2) && (action=ARGV.shift) && actions.include?(action)
102
103
  options[:trocla_key] = ARGV.shift
103
104
  options[:trocla_format] = ARGV.shift
104
105
  options[:other_options] = ARGV
106
+ check_format(options[:trocla_format]) unless action == 'delete'
105
107
  begin
106
108
  if result = send(action,options)
107
109
  puts result.is_a?(String) ? result : result.inspect
data/lib/VERSION CHANGED
@@ -1,4 +1,4 @@
1
1
  major:0
2
2
  minor:0
3
- patch:7
3
+ patch:8
4
4
  build:
@@ -2,6 +2,6 @@
2
2
  options:
3
3
  random: true
4
4
  length: 12
5
- adapter: YAML
5
+ adapter: :YAML
6
6
  adapter_options:
7
- :path: '/tmp/trocla.yaml'
7
+ :file: '/tmp/trocla.yaml'
data/lib/trocla/util.rb CHANGED
@@ -1,12 +1,13 @@
1
+ require 'securerandom'
1
2
  class Trocla
2
3
  class Util
3
4
  class << self
4
5
  def random_str(length=12)
5
- (1..length).collect{|a| chars[rand(chars.size)] }.join.to_s
6
+ (1..length).collect{|a| chars[SecureRandom.random_number(chars.size)] }.join.to_s
6
7
  end
7
8
 
8
9
  def salt(length=8)
9
- (1..length).collect{|a| normal_chars[rand(normal_chars.size)] }.join.to_s
10
+ (1..length).collect{|a| normal_chars[SecureRandom.random_number(normal_chars.size)] }.join.to_s
10
11
  end
11
12
 
12
13
  private
data/lib/trocla.rb CHANGED
@@ -65,9 +65,8 @@ class Trocla
65
65
 
66
66
  def build_cache
67
67
  require 'moneta'
68
- require "moneta/adapters/#{config['adapter'].downcase}"
69
68
  lconfig = config
70
- Moneta::Builder.new { run eval( "Moneta::Adapters::#{lconfig['adapter']}"), lconfig['adapter_options'] }
69
+ Moneta.new(lconfig['adapter'], lconfig['adapter_options']||{})
71
70
  end
72
71
 
73
72
  def config
data/spec/spec_helper.rb CHANGED
@@ -19,9 +19,8 @@ end
19
19
  def test_config
20
20
  return @config unless @config.nil?
21
21
  @config = default_config
22
- yaml_path = File.expand_path(base_dir+'/spec/data/test_config.yaml')
23
- File.unlink(yaml_path) if File.exists?(yaml_path)
24
- @config['adapter_options'][:path] = yaml_path
22
+ @config.delete('adapter_options')
23
+ @config['adapter'] = :Memory
25
24
  @config
26
25
  end
27
26
 
data/trocla.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{trocla}
8
- s.version = "0.0.7"
8
+ s.version = "0.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mh"]
12
- s.date = %q{2012-01-05}
12
+ s.date = %q{2013-01-14}
13
13
  s.default_executable = %q{trocla}
14
14
  s.description = %q{Trocla helps you to generate random passwords and to store them in various formats (plain, MD5, bcrypt) for later retrival.}
15
15
  s.email = %q{mh+trocla@immerda.ch}
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  ".rspec",
24
+ ".travis.yml",
24
25
  "Gemfile",
25
26
  "Gemfile.lock",
26
27
  "LICENSE.txt",
@@ -56,34 +57,34 @@ Gem::Specification.new do |s|
56
57
  s.specification_version = 3
57
58
 
58
59
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
- s.add_runtime_dependency(%q<moneta>, [">= 0.6.1"])
60
+ s.add_runtime_dependency(%q<moneta>, ["~> 0.7.2"])
60
61
  s.add_runtime_dependency(%q<highline>, [">= 0"])
61
62
  s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 0"])
62
- s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
63
+ s.add_development_dependency(%q<rspec>, ["~> 2.4.0"])
63
64
  s.add_development_dependency(%q<rdoc>, ["~> 3.8"])
64
65
  s.add_development_dependency(%q<mocha>, [">= 0"])
65
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
66
+ s.add_development_dependency(%q<bundler>, ["~> 1.2.3"])
66
67
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
67
68
  s.add_development_dependency(%q<rcov>, [">= 0"])
68
69
  else
69
- s.add_dependency(%q<moneta>, [">= 0.6.1"])
70
+ s.add_dependency(%q<moneta>, ["~> 0.7.2"])
70
71
  s.add_dependency(%q<highline>, [">= 0"])
71
72
  s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
72
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
73
+ s.add_dependency(%q<rspec>, ["~> 2.4.0"])
73
74
  s.add_dependency(%q<rdoc>, ["~> 3.8"])
74
75
  s.add_dependency(%q<mocha>, [">= 0"])
75
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
76
+ s.add_dependency(%q<bundler>, ["~> 1.2.3"])
76
77
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
77
78
  s.add_dependency(%q<rcov>, [">= 0"])
78
79
  end
79
80
  else
80
- s.add_dependency(%q<moneta>, [">= 0.6.1"])
81
+ s.add_dependency(%q<moneta>, ["~> 0.7.2"])
81
82
  s.add_dependency(%q<highline>, [">= 0"])
82
83
  s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
83
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
84
+ s.add_dependency(%q<rspec>, ["~> 2.4.0"])
84
85
  s.add_dependency(%q<rdoc>, ["~> 3.8"])
85
86
  s.add_dependency(%q<mocha>, [">= 0"])
86
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
87
+ s.add_dependency(%q<bundler>, ["~> 1.2.3"])
87
88
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
88
89
  s.add_dependency(%q<rcov>, [">= 0"])
89
90
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trocla
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - mh
@@ -15,28 +15,30 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-05 00:00:00 +01:00
18
+ date: 2013-01-14 00:00:00 +01:00
19
19
  default_executable: trocla
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  type: :runtime
23
- requirement: &id001 !ruby/object:Gem::Requirement
23
+ name: moneta
24
+ prerelease: false
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
26
  none: false
25
27
  requirements:
26
- - - ">="
28
+ - - ~>
27
29
  - !ruby/object:Gem::Version
28
- hash: 5
30
+ hash: 7
29
31
  segments:
30
32
  - 0
31
- - 6
32
- - 1
33
- version: 0.6.1
34
- version_requirements: *id001
35
- name: moneta
36
- prerelease: false
33
+ - 7
34
+ - 2
35
+ version: 0.7.2
36
+ requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
38
  type: :runtime
39
- requirement: &id002 !ruby/object:Gem::Requirement
39
+ name: highline
40
+ prerelease: false
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
42
  none: false
41
43
  requirements:
42
44
  - - ">="
@@ -45,12 +47,12 @@ dependencies:
45
47
  segments:
46
48
  - 0
47
49
  version: "0"
48
- version_requirements: *id002
49
- name: highline
50
- prerelease: false
50
+ requirement: *id002
51
51
  - !ruby/object:Gem::Dependency
52
52
  type: :runtime
53
- requirement: &id003 !ruby/object:Gem::Requirement
53
+ name: bcrypt-ruby
54
+ prerelease: false
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
56
  none: false
55
57
  requirements:
56
58
  - - ">="
@@ -59,28 +61,28 @@ dependencies:
59
61
  segments:
60
62
  - 0
61
63
  version: "0"
62
- version_requirements: *id003
63
- name: bcrypt-ruby
64
- prerelease: false
64
+ requirement: *id003
65
65
  - !ruby/object:Gem::Dependency
66
66
  type: :development
67
- requirement: &id004 !ruby/object:Gem::Requirement
67
+ name: rspec
68
+ prerelease: false
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
70
  none: false
69
71
  requirements:
70
72
  - - ~>
71
73
  - !ruby/object:Gem::Version
72
- hash: 3
74
+ hash: 31
73
75
  segments:
74
76
  - 2
75
- - 3
77
+ - 4
76
78
  - 0
77
- version: 2.3.0
78
- version_requirements: *id004
79
- name: rspec
80
- prerelease: false
79
+ version: 2.4.0
80
+ requirement: *id004
81
81
  - !ruby/object:Gem::Dependency
82
82
  type: :development
83
- requirement: &id005 !ruby/object:Gem::Requirement
83
+ name: rdoc
84
+ prerelease: false
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
84
86
  none: false
85
87
  requirements:
86
88
  - - ~>
@@ -90,12 +92,12 @@ dependencies:
90
92
  - 3
91
93
  - 8
92
94
  version: "3.8"
93
- version_requirements: *id005
94
- name: rdoc
95
- prerelease: false
95
+ requirement: *id005
96
96
  - !ruby/object:Gem::Dependency
97
97
  type: :development
98
- requirement: &id006 !ruby/object:Gem::Requirement
98
+ name: mocha
99
+ prerelease: false
100
+ version_requirements: &id006 !ruby/object:Gem::Requirement
99
101
  none: false
100
102
  requirements:
101
103
  - - ">="
@@ -104,28 +106,28 @@ dependencies:
104
106
  segments:
105
107
  - 0
106
108
  version: "0"
107
- version_requirements: *id006
108
- name: mocha
109
- prerelease: false
109
+ requirement: *id006
110
110
  - !ruby/object:Gem::Dependency
111
111
  type: :development
112
- requirement: &id007 !ruby/object:Gem::Requirement
112
+ name: bundler
113
+ prerelease: false
114
+ version_requirements: &id007 !ruby/object:Gem::Requirement
113
115
  none: false
114
116
  requirements:
115
117
  - - ~>
116
118
  - !ruby/object:Gem::Version
117
- hash: 23
119
+ hash: 25
118
120
  segments:
119
121
  - 1
120
- - 0
121
- - 0
122
- version: 1.0.0
123
- version_requirements: *id007
124
- name: bundler
125
- prerelease: false
122
+ - 2
123
+ - 3
124
+ version: 1.2.3
125
+ requirement: *id007
126
126
  - !ruby/object:Gem::Dependency
127
127
  type: :development
128
- requirement: &id008 !ruby/object:Gem::Requirement
128
+ name: jeweler
129
+ prerelease: false
130
+ version_requirements: &id008 !ruby/object:Gem::Requirement
129
131
  none: false
130
132
  requirements:
131
133
  - - ~>
@@ -136,12 +138,12 @@ dependencies:
136
138
  - 6
137
139
  - 4
138
140
  version: 1.6.4
139
- version_requirements: *id008
140
- name: jeweler
141
- prerelease: false
141
+ requirement: *id008
142
142
  - !ruby/object:Gem::Dependency
143
143
  type: :development
144
- requirement: &id009 !ruby/object:Gem::Requirement
144
+ name: rcov
145
+ prerelease: false
146
+ version_requirements: &id009 !ruby/object:Gem::Requirement
145
147
  none: false
146
148
  requirements:
147
149
  - - ">="
@@ -150,9 +152,7 @@ dependencies:
150
152
  segments:
151
153
  - 0
152
154
  version: "0"
153
- version_requirements: *id009
154
- name: rcov
155
- prerelease: false
155
+ requirement: *id009
156
156
  description: Trocla helps you to generate random passwords and to store them in various formats (plain, MD5, bcrypt) for later retrival.
157
157
  email: mh+trocla@immerda.ch
158
158
  executables:
@@ -165,6 +165,7 @@ extra_rdoc_files:
165
165
  files:
166
166
  - .document
167
167
  - .rspec
168
+ - .travis.yml
168
169
  - Gemfile
169
170
  - Gemfile.lock
170
171
  - LICENSE.txt