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 +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
|
+
[](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
|