perfect_world 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +15 -3
- data/bin/pwm +6 -2
- data/lib/perfect_world/cli.rb +6 -3
- data/lib/perfect_world/db.rb +11 -1
- data/lib/perfect_world/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +8 -8
- metadata.gz.sig +0 -0
data/README.md
CHANGED
@@ -30,10 +30,11 @@ Dropbox, but they should not get my passwords.)
|
|
30
30
|
## Dependencies
|
31
31
|
|
32
32
|
You need an installed and set up version of gnupg. It should be available
|
33
|
-
in the package repo of your linux distribution.
|
34
|
-
|
33
|
+
in the package repo of your linux distribution. Check out the
|
34
|
+
[GPGTools](https://www.gpgtools.org/installer/index.html) project, if you
|
35
|
+
are on a Mac.
|
35
36
|
|
36
|
-
In addition you
|
37
|
+
In addition you need at least Ruby 1.9.3.
|
37
38
|
|
38
39
|
## pwm
|
39
40
|
|
@@ -60,6 +61,7 @@ Or clone the repo.
|
|
60
61
|
-C, --clipboard Copies the password to the clipboard.
|
61
62
|
-d, --delete ID Deletes the password.
|
62
63
|
-D, --database [FILE] Prints or sets the used database.
|
64
|
+
-f, --force Override existing password.
|
63
65
|
-g, --get ID Prints the password for an ID.
|
64
66
|
-G, --generate ID Generates and stores a new passord.
|
65
67
|
--gpgdir DIR Sets the path to the GPG directory.
|
@@ -94,6 +96,11 @@ Directly to the clipboard.
|
|
94
96
|
$ pwm --clipboard --get google
|
95
97
|
Copied the password for 'google' to your clipboard.
|
96
98
|
|
99
|
+
Override an existing password.
|
100
|
+
|
101
|
+
$ pwm --force --generate google
|
102
|
+
gi>VlHK<=m2D+}8X4P\( yB6(<Jk'/9^ JAwCjK|!j-$exDe83g8[CD.n^%cYxO7 google
|
103
|
+
|
97
104
|
And delete one.
|
98
105
|
|
99
106
|
$ pwm --delete google
|
@@ -110,6 +117,11 @@ changed with the ```--config``` switch. It contains straight forward Yaml.
|
|
110
117
|
gpgdir: /home/ushi/.gnupg # Path to the GnuPG home dir.
|
111
118
|
database: /home/ushi/.pwm.yml.gpg # Path to the password database.
|
112
119
|
|
120
|
+
## Clipboard
|
121
|
+
|
122
|
+
The clipboard feature should work out of the box on Mac OS. If you are on a
|
123
|
+
Linux system you need to install ```xclip``` or ```xsel``` to make it work.
|
124
|
+
|
113
125
|
# License (MIT)
|
114
126
|
|
115
127
|
Copyright (c) 2013 ushi <ushi@porkbox.net>
|
data/bin/pwm
CHANGED
@@ -34,7 +34,7 @@ parser = OptionParser.new do |parser|
|
|
34
34
|
options[:config] = f
|
35
35
|
end
|
36
36
|
|
37
|
-
parser.on('-C', '--clipboard',
|
37
|
+
parser.on('-C', '--clipboard', 'Copies the password to the clipboard.') do |c|
|
38
38
|
options[:clipboard] = c
|
39
39
|
end
|
40
40
|
|
@@ -46,6 +46,10 @@ parser = OptionParser.new do |parser|
|
|
46
46
|
options[:database] = f
|
47
47
|
end
|
48
48
|
|
49
|
+
parser.on('-f', '--force', 'Override existing password.') do |f|
|
50
|
+
options[:force] = f
|
51
|
+
end
|
52
|
+
|
49
53
|
parser.on('-g', '--get ID', 'Prints the password for an ID.') do |id|
|
50
54
|
options[:get] = id
|
51
55
|
end
|
@@ -98,7 +102,7 @@ rescue SystemCallError, Psych::Exception, Psych::SyntaxError => e
|
|
98
102
|
end
|
99
103
|
|
100
104
|
# Override config with command line options.
|
101
|
-
[:clipboard, :database, :gpgdir, :length, :owner].each do |option|
|
105
|
+
[:clipboard, :database, :force, :gpgdir, :length, :owner].each do |option|
|
102
106
|
config[option.to_s] = options.delete(option) unless options[option].nil?
|
103
107
|
end
|
104
108
|
|
data/lib/perfect_world/cli.rb
CHANGED
@@ -11,9 +11,10 @@ module PerfectWorld
|
|
11
11
|
|
12
12
|
# Default config.
|
13
13
|
CONFIG = {
|
14
|
-
'
|
14
|
+
'clipboard' => false,
|
15
15
|
'database' => File.expand_path('~/.pwm.yml.gpg'),
|
16
|
-
'
|
16
|
+
'force' => false,
|
17
|
+
'length' => 64
|
17
18
|
}
|
18
19
|
|
19
20
|
# Sets the config.
|
@@ -52,7 +53,9 @@ module PerfectWorld
|
|
52
53
|
|
53
54
|
# Generats a new password and sends it to stdout.
|
54
55
|
def generate(db, id)
|
55
|
-
|
56
|
+
len = @config.fetch('length')
|
57
|
+
pwd = @config['force'] ? db.generate!(id, len) : db.generate(id, len)
|
58
|
+
print_or_copy_to_clipboard(id, pwd)
|
56
59
|
rescue Error => e
|
57
60
|
raise Error, "Couldn't create password: #{e.message}"
|
58
61
|
end
|
data/lib/perfect_world/db.rb
CHANGED
@@ -49,8 +49,18 @@ module PerfectWorld
|
|
49
49
|
# store[:google]
|
50
50
|
# #=> "B6m/![)A%fqw,\\ti-d`4\"&0>gl+>$0$Z"
|
51
51
|
#
|
52
|
-
# Returns the new password
|
52
|
+
# Returns the new password or raises an error if the password is already
|
53
|
+
# in the database.
|
53
54
|
def generate(id, len = 64)
|
55
|
+
if ! @passwords.key?(id)
|
56
|
+
generate!(id, len)
|
57
|
+
else
|
58
|
+
raise Error, "Password for '#{id}' is already in the database."
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# Does the same as DB#generate, but overrides existing passwords.
|
63
|
+
def generate!(id, len = 64)
|
54
64
|
@passwords[id] = Random.string(len)
|
55
65
|
@changed = true
|
56
66
|
@passwords[id]
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: perfect_world
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
bjRVQmxyeTVQVzB6ZzY0VEk5L1AzNEFHUXQ2SStUOHMKQnh0dUdkZ0YyMkpt
|
37
37
|
M3ZYbGlySkJJSStvMDdIeDV3ZjJEUGRDMTRKRU1UUVZoRVFkc2ZwbU9ub2Q0
|
38
38
|
SnpLdWRxNwpES1U9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
39
|
-
date: 2013-02-
|
39
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: gpgme
|
@@ -62,14 +62,14 @@ executables:
|
|
62
62
|
extensions: []
|
63
63
|
extra_rdoc_files: []
|
64
64
|
files:
|
65
|
-
- lib/perfect_world.rb
|
66
|
-
- lib/perfect_world/version.rb
|
65
|
+
- lib/perfect_world/cli.rb
|
67
66
|
- lib/perfect_world/storage.rb
|
68
|
-
- lib/perfect_world/
|
69
|
-
- lib/perfect_world/error.rb
|
70
|
-
- lib/perfect_world/db.rb
|
67
|
+
- lib/perfect_world/version.rb
|
71
68
|
- lib/perfect_world/random.rb
|
72
|
-
- lib/perfect_world/
|
69
|
+
- lib/perfect_world/db.rb
|
70
|
+
- lib/perfect_world/error.rb
|
71
|
+
- lib/perfect_world/clipboard.rb
|
72
|
+
- lib/perfect_world.rb
|
73
73
|
- bin/pwm
|
74
74
|
- README.md
|
75
75
|
homepage: http://github.com/ushis/perfect_world
|
metadata.gz.sig
CHANGED
Binary file
|