blob: 107f202569f0ed4297e474775d31d54ddda1ba5e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
require "thor"
module TFA
class CLI < Thor
package_name "TFA"
class_option :filename
desc "add NAME SECRET", "add a new secret to the database"
def add(name, secret)
secret = clean(secret)
storage.save(name, secret)
"Added #{name}"
end
desc "show NAME", "shows the secret for the given key"
def show(name = nil)
name ? storage.secret_for(name) : storage.all
end
desc "totp NAME", "generate a Time based One Time Password"
def totp(name = nil)
TotpCommand.new(storage).run(name)
end
private
def storage
@storage ||= Storage.new(filename: options[:filename] || 'tfa')
end
def clean(secret)
if secret.include?("=")
/secret=([^&]*)/.match(secret).captures.first
else
secret
end
end
end
end
|