trocla 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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