diff options
| author | mokha <mokha@cisco.com> | 2018-12-02 21:58:12 -0700 |
|---|---|---|
| committer | mokha <mokha@cisco.com> | 2018-12-02 21:58:12 -0700 |
| commit | db3a11c66a9a7ec5751a2001897bd962b4d35e4a (patch) | |
| tree | 5da4bec8539b408ebaf0f05329a6d5bf650f19ee | |
| parent | 1954d7b3cd2f88ee4f943f8c3e76c7494aeee64e (diff) | |
add qrcode export.
| -rw-r--r-- | lib/tfa/cli.rb | 14 | ||||
| -rw-r--r-- | lib/tfa/version.rb | 2 | ||||
| -rw-r--r-- | tfa.gemspec | 1 |
3 files changed, 15 insertions, 2 deletions
diff --git a/lib/tfa/cli.rb b/lib/tfa/cli.rb index ce6eb01..4493db0 100644 --- a/lib/tfa/cli.rb +++ b/lib/tfa/cli.rb @@ -19,8 +19,20 @@ module TFA end desc "show NAME", "shows the secret for the given key" + method_option :format, default: "raw", enum: ["raw", "qrcode"], desc: "The format to export" def show(name = nil) - name ? storage.secret_for(name) : storage.all.map { |x| x.keys }.flatten.sort + if name + secret = storage.secret_for(name) + case options[:format] + when "qrcode" + require 'rqrcode' + RQRCode::QRCode.new("otpauth://totp/unknown@example.org?secret=#{secret}&issuer=#{name}").as_ansi + else + secret + end + else + storage.all.map { |x| x.keys }.flatten.sort + end end desc "totp NAME", "generate a Time based One Time Password using the secret associated with the given NAME." diff --git a/lib/tfa/version.rb b/lib/tfa/version.rb index 7a2c03d..268b7c3 100644 --- a/lib/tfa/version.rb +++ b/lib/tfa/version.rb @@ -1,3 +1,3 @@ module TFA - VERSION = "0.0.15".freeze + VERSION = "0.0.16".freeze end diff --git a/tfa.gemspec b/tfa.gemspec index f030ee8..2a58d86 100644 --- a/tfa.gemspec +++ b/tfa.gemspec @@ -23,6 +23,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = "~> 2.5" spec.add_dependency "rotp", "~> 3.3" + spec.add_dependency "rqrcode", "~> 0.10" spec.add_dependency "thor", "~> 0.20" spec.add_development_dependency "bundler", "~> 1.6" spec.add_development_dependency "rake", "~> 12.3" |
