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 +4 -0
- data/Gemfile +3 -3
- data/Gemfile.lock +12 -17
- data/README.md +13 -5
- data/bin/trocla +14 -12
- data/lib/VERSION +1 -1
- data/lib/trocla/default_config.yaml +2 -2
- data/lib/trocla/util.rb +3 -2
- data/lib/trocla.rb +1 -2
- data/spec/spec_helper.rb +2 -3
- data/trocla.gemspec +12 -11
- metadata +53 -52
data/.travis.yml
ADDED
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", "
|
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.
|
13
|
+
gem "rspec", "~> 2.4.0"
|
14
14
|
gem "rdoc", "~> 3.8"
|
15
15
|
gem "mocha"
|
16
|
-
gem "bundler", "~> 1.
|
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.
|
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.
|
23
|
-
rspec-core (~> 2.
|
24
|
-
rspec-expectations (~> 2.
|
25
|
-
rspec-mocks (~> 2.
|
26
|
-
rspec-core (2.
|
27
|
-
rspec-expectations (2.
|
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.
|
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.
|
31
|
+
bundler (~> 1.2.3)
|
37
32
|
highline
|
38
33
|
jeweler (~> 1.6.4)
|
39
34
|
mocha
|
40
|
-
moneta (
|
35
|
+
moneta (~> 0.7.2)
|
41
36
|
rcov
|
42
37
|
rdoc (~> 3.8)
|
43
|
-
rspec (~> 2.
|
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 --
|
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
|
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.
|
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("--
|
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(:
|
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
|
95
|
-
|
96
|
-
|
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
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[
|
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[
|
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
|
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
|
-
|
23
|
-
|
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.
|
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{
|
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>, ["
|
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.
|
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.
|
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>, ["
|
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.
|
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.
|
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>, ["
|
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.
|
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.
|
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:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
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:
|
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
|
-
|
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:
|
30
|
+
hash: 7
|
29
31
|
segments:
|
30
32
|
- 0
|
31
|
-
-
|
32
|
-
-
|
33
|
-
version: 0.
|
34
|
-
|
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
|
-
|
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
|
-
|
49
|
-
name: highline
|
50
|
-
prerelease: false
|
50
|
+
requirement: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
type: :runtime
|
53
|
-
|
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
|
-
|
63
|
-
name: bcrypt-ruby
|
64
|
-
prerelease: false
|
64
|
+
requirement: *id003
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
type: :development
|
67
|
-
|
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:
|
74
|
+
hash: 31
|
73
75
|
segments:
|
74
76
|
- 2
|
75
|
-
-
|
77
|
+
- 4
|
76
78
|
- 0
|
77
|
-
version: 2.
|
78
|
-
|
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
|
-
|
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
|
-
|
94
|
-
name: rdoc
|
95
|
-
prerelease: false
|
95
|
+
requirement: *id005
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
97
|
type: :development
|
98
|
-
|
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
|
-
|
108
|
-
name: mocha
|
109
|
-
prerelease: false
|
109
|
+
requirement: *id006
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
type: :development
|
112
|
-
|
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:
|
119
|
+
hash: 25
|
118
120
|
segments:
|
119
121
|
- 1
|
120
|
-
-
|
121
|
-
-
|
122
|
-
version: 1.
|
123
|
-
|
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
|
-
|
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
|
-
|
140
|
-
name: jeweler
|
141
|
-
prerelease: false
|
141
|
+
requirement: *id008
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
type: :development
|
144
|
-
|
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
|
-
|
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
|