donjon 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +64 -12
- data/lib/donjon/commands/base.rb +0 -2
- data/lib/donjon/commands/config.rb +20 -2
- data/lib/donjon/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13b97b25c7492ea9cd2e839f3782fc514f69951e
|
4
|
+
data.tar.gz: 9dd7c77553f48b0462ae6024752689b8f0743b20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ef534ceda3824fbe3538223ddf4a7d70b9a1661411659df0fb71fc534222f1b4c6508d0948b705712b8d98a3e71f61c1252d85cf96b752c40ca695c90e1533a
|
7
|
+
data.tar.gz: c8da58337bb8b1ad3dccb9030253a6b742eae9ee78576dfdac49d7e74d05212ccc4a58f28ed8c65b8951b44a5eb23b25c72ea7fb0b5ac883d7269b03ce3d199c
|
data/README.md
CHANGED
@@ -3,10 +3,11 @@
|
|
3
3
|
Donjon is a secure, multi-user store for key-value pairs.
|
4
4
|
|
5
5
|
Skip to: [Purpose](#purpose) | [Concepts](#concepts) | [Setting
|
6
|
-
up](#installation) | [Usage](#usage)
|
6
|
+
up](#installation) | [Usage](#usage) | [Storing QR
|
7
|
+
codes](#storing-qr-codes-in-donjon)
|
7
8
|
|
8
|
-
![Version](https://badge.fury.io/rb/donjon.svg)
|
9
|
-
![Build status](https://travis-ci.org/mezis/donjon.svg?branch=master)
|
9
|
+
[![Version](https://badge.fury.io/rb/donjon.svg)](https://rubygems.org/gems/donjon)
|
10
|
+
[![Build status](https://travis-ci.org/mezis/donjon.svg?branch=master)](https://travis-ci.org/mezis/donjon)
|
10
11
|
|
11
12
|
|
12
13
|
## Purpose
|
@@ -81,10 +82,14 @@ Bittorrent Sync.
|
|
81
82
|
|
82
83
|
### Connecting to an existing vault
|
83
84
|
|
84
|
-
|
85
|
-
typically be `~/.donjon`.
|
85
|
+
**Note**: please follow these steps _in order_.
|
86
86
|
|
87
87
|
Download and install [Bittorrent Sync](http://www.bittorrent.com/sync/downloads).
|
88
|
+
During install, let the software create a default sync directory (we won't use
|
89
|
+
it).
|
90
|
+
|
91
|
+
Create an (empty) directory where you want the vault to be synced. This can
|
92
|
+
typically be `~/.donjon`.
|
88
93
|
|
89
94
|
Ask a peer already using the vault you're interested in to provide you a "one
|
90
95
|
time secret" for the shared vault directory. Add this to Bittorrent Sync, and
|
@@ -121,15 +126,62 @@ vault, e.g. on Dropbox).
|
|
121
126
|
|
122
127
|
```
|
123
128
|
Commands:
|
124
|
-
dj config:get KEY...
|
125
|
-
dj config:
|
126
|
-
dj config:
|
127
|
-
dj
|
128
|
-
dj
|
129
|
-
dj
|
130
|
-
dj
|
129
|
+
dj config:get KEY... # Decrypts the value for KEY from the vault
|
130
|
+
dj config:set KEY # Reads a VALUE from standard input, encrypts KEY and VALUE in the vault
|
131
|
+
dj config:del KEY # Removes a key-value pair
|
132
|
+
dj config:fset KEY FILE # Encrypts KEY and the contents of FILE in the vault
|
133
|
+
dj config:mget [REGEXP] # Decrypts multiple keys (all keys by default)
|
134
|
+
dj config:mset KEY=VALUE ... # Encrypts KEY and VALUE in the vault
|
135
|
+
dj help [COMMAND] # Describe available commands or one specific command
|
136
|
+
dj init # Creates a new vault, or connects to an existing vault.
|
137
|
+
dj user:add NAME [PATH] # Adds user and their public key to the vault. Reads from standard input if no path is given.
|
138
|
+
dj user:key # Prints your public key
|
131
139
|
```
|
132
140
|
|
141
|
+
|
142
|
+
## Storing QR codes in Donjon
|
143
|
+
|
144
|
+
Some service offer two factor authentication, which is a good thing.
|
145
|
+
Unfortunately some of those are not multi-user, which means the token for two
|
146
|
+
factor authentication also needs to be shared.
|
147
|
+
|
148
|
+
This token is usually shared as a QR code for convenience, to be used with
|
149
|
+
Google Authenticator or Authy.
|
150
|
+
|
151
|
+
You can store it in Donjon as follows:
|
152
|
+
|
153
|
+
1. Get the QR code from the service. A screenshot is fine.
|
154
|
+
|
155
|
+
2. Install [zbar](http://zbar.sourceforge.net/) (to scan the code) and
|
156
|
+
[qrencode](http://fukuchi.org/works/qrencode/) (to generate a new, compact
|
157
|
+
code)
|
158
|
+
|
159
|
+
3. Extract a new QR code:
|
160
|
+
|
161
|
+
```
|
162
|
+
$ zbarimg --raw -q <file>.png | \
|
163
|
+
tr -d '\n' | \
|
164
|
+
qrencode -m 2 -d 1 -t ASCII | \
|
165
|
+
sed -e "s/ /ESC[7m ESC[0m/g;s/#/ /g" | \
|
166
|
+
tr 'ESC' '\033' | \
|
167
|
+
tee /tmp/qr
|
168
|
+
```
|
169
|
+
|
170
|
+
(this should output the QR code on your terminal)
|
171
|
+
|
172
|
+
4. Store the QR code in Donjon:
|
173
|
+
|
174
|
+
```
|
175
|
+
$ dj config:fset mykey /tmp/qr
|
176
|
+
```
|
177
|
+
|
178
|
+
5. Test the code has been properly stored:
|
179
|
+
|
180
|
+
```
|
181
|
+
$ dj config:get mykey
|
182
|
+
```
|
183
|
+
|
184
|
+
|
133
185
|
## Contributing
|
134
186
|
|
135
187
|
1. Fork it ( http://github.com/mezis/donjon/fork )
|
data/lib/donjon/commands/base.rb
CHANGED
@@ -3,7 +3,10 @@ require 'donjon/commands/base'
|
|
3
3
|
module Donjon
|
4
4
|
module Commands
|
5
5
|
Base.class_eval do
|
6
|
-
desc 'config:
|
6
|
+
desc 'config:mset KEY=VALUE ...', 'Encrypts KEY and VALUE in the vault'
|
7
|
+
decl 'config:mset'
|
8
|
+
|
9
|
+
desc 'config:set KEY', 'Reads a VALUE from standard input, encrypts KEY and VALUE in the vault'
|
7
10
|
decl 'config:set'
|
8
11
|
|
9
12
|
desc 'config:fset KEY FILE', 'Encrypts KEY and the contents of FILE in the vault'
|
@@ -20,13 +23,24 @@ module Donjon
|
|
20
23
|
|
21
24
|
private
|
22
25
|
|
23
|
-
def
|
26
|
+
def config_mset(*keyvals)
|
24
27
|
keyvals.each do |keyval|
|
25
28
|
m = /([^=]*)=(.*)/.match(keyval)
|
29
|
+
if m.nil?
|
30
|
+
say "Misformatted key-value pair '#{keyval}'"
|
31
|
+
exit 1
|
32
|
+
end
|
26
33
|
key = m[1]
|
27
34
|
value = m[2]
|
28
35
|
database[key] = value
|
29
36
|
end
|
37
|
+
say "Warning: the keys and values you just set may be saved to your shell history", :red
|
38
|
+
say "You can clear your history by running `history -c`."
|
39
|
+
end
|
40
|
+
|
41
|
+
def config_set(key)
|
42
|
+
value = _get_password("Please enter the value for '#{key}'")
|
43
|
+
database[key] = value
|
30
44
|
end
|
31
45
|
|
32
46
|
def config_fset(key, path)
|
@@ -45,6 +59,10 @@ module Donjon
|
|
45
59
|
next if regexp && regexp !~ key
|
46
60
|
puts "#{key}: #{value}"
|
47
61
|
end
|
62
|
+
rescue RegexpError => e
|
63
|
+
say "Misformatted regular expression '#{regexp}'", :red
|
64
|
+
say "(#{e.message})"
|
65
|
+
exit 1
|
48
66
|
end
|
49
67
|
|
50
68
|
def config_del(key)
|
data/lib/donjon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: donjon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Letessier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|