talcotp 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +52 -0
  3. data/bin/talcotp +14 -1
  4. data/lib/talcotp.rb +20 -9
  5. data/talcotp.gemspec +2 -1
  6. metadata +17 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59a7992b2c1c88716e661b155259a614585131a28959acd0e5e305ecd901b84b
4
- data.tar.gz: d97232f4e2b28e71655da94ef3dfaf6ec4ad24ca3b3fce8aa17f10d2ac66b329
3
+ metadata.gz: 6fbdf0b9f10b5dd304a59f63c293eab2248b7364cc472f82254738c2bd4f5e6e
4
+ data.tar.gz: 214578d09106e83558727c5fefc3cfbbf4dd71fcf0b87c8ac6e6c17a273b1cca
5
5
  SHA512:
6
- metadata.gz: 81d7cdadbab086137860c7337c75e72dddb3ff7b29a6b7389844af235830c47be1b7b4cc0b002a3a584dd144b9f603f0405f06279ed931064771602f8f33acb2
7
- data.tar.gz: cce2cbed4c4bb917341032c1309d00650f5b404831e3c1a26d55d4a656ef421142329e1f4cf243353c755f296787892093e4c1f63cda56ff6ab307e4ebf3c47c
6
+ metadata.gz: 5e9b6c02be734108d94ad6f4422d18d2b7945f967ff9623c536ed50dea25bd3c8cf0a64bf33ba13f4d84ce68ecd12eccbd1d17e73e85c6fb34b01a88f8bf40d3
7
+ data.tar.gz: d650ff4da39feed9eb24f2028103e010a44facc4611f6ada9a5e203b047c82fdf1322025437a5f3ca358d6cc8433126f3116c6e45dd945cd002fcf241a0d55cf
@@ -0,0 +1,52 @@
1
+ # TalcOTP
2
+
3
+ An otp password generator using [rotp](https://github.com/mdp/rotp)
4
+
5
+ ## Usage
6
+
7
+ Run this command to print all the current codes:
8
+
9
+ ```
10
+ talcotp /path/to/otp_file
11
+ ```
12
+
13
+ Where the `otp_file` is of the format:
14
+
15
+ ```
16
+ [
17
+ {
18
+ "secret":"JBSWY3DPEHPK3PXP",
19
+ "label":"test_label",
20
+ "period":30,
21
+ "digits":6,
22
+ "algorithm":"SHA1"
23
+ },
24
+ {
25
+ "secret":"wrn3pqx5uqxqvnqr",
26
+ "label":"test_label_2",
27
+ "period":40,
28
+ "digits":7,
29
+ "algorithm":"SHA256"
30
+ }
31
+ ]
32
+ ```
33
+
34
+ You can also run the command passing in the name of the account in order for it to copy the code to the clipboard:
35
+
36
+ ```
37
+ talcotp /path/to/otp_file test_label
38
+ ```
39
+
40
+ ## Installation
41
+
42
+ ```
43
+ gem install talcotp
44
+ ```
45
+
46
+ ## Building the gem from source
47
+
48
+ You can build from source with the following command:
49
+
50
+ ```
51
+ gem build talcotp.gemspec
52
+ ```
@@ -2,5 +2,18 @@
2
2
 
3
3
  $: << File.expand_path('../../lib', __FILE__)
4
4
  require "talcotp"
5
+ require "clipboard"
5
6
 
6
- puts TalcOTP.new(ARGV[0]).codes
7
+ unless ARGV[0]
8
+ puts "NO!"
9
+ return
10
+ end
11
+
12
+ code_manager = TalcOTP.new(ARGV[0])
13
+
14
+ if (ARGV[1])
15
+ Clipboard.copy code_manager[ARGV[1]]
16
+ puts ARGV[1] + " code copied to clipboard"
17
+ else
18
+ puts code_manager.all_codes_string
19
+ end
@@ -12,20 +12,31 @@ class TalcOTP
12
12
  end
13
13
  end
14
14
 
15
- def codes
15
+ def all_codes_string
16
16
  output = ''
17
17
  @accounts.each do |account|
18
- account_settings = {
19
- interval: account['period'],
20
- digits: account['digits'],
21
- digest: account['algorithm']
22
- }
23
- auth_code = ROTP::TOTP.new(account['secret'], account_settings).now
24
-
25
- output += "#{account['label']}: #{auth_code}\n"
18
+ account_auth_code = auth_code(account)
19
+
20
+ output += "#{account['label']}: #{account_auth_code}\n"
26
21
  end
27
22
 
28
23
  output
29
24
  end
25
+
26
+ def [](account_name)
27
+ account = @accounts.find { |account| account["label"] == account_name }
28
+ return auth_code(account)
29
+ end
30
+
31
+ private
32
+
33
+ def auth_code(account)
34
+ account_settings = {
35
+ interval: account['period'],
36
+ digits: account['digits'],
37
+ digest: account['algorithm']
38
+ }
39
+ return ROTP::TOTP.new(account['secret'], account_settings).now
40
+ end
30
41
  end
31
42
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "talcotp"
3
- s.version = 0.2
3
+ s.version = 0.3
4
4
  s.license = "MIT"
5
5
  s.authors = ["Keeyan Nejad"]
6
6
  s.email = ["keeyan@keeyan.xyz"]
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.require_paths = ["lib"]
13
13
 
14
14
  s.add_dependency 'rotp', '~> 4.0'
15
+ s.add_dependency 'clipboard', '~> 1.3'
15
16
  s.add_development_dependency 'rake', '~> 10.5'
16
17
  s.add_development_dependency 'rspec', '~> 3.5'
17
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: talcotp
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keeyan Nejad
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-22 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rotp
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: clipboard
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -61,6 +75,7 @@ extensions: []
61
75
  extra_rdoc_files: []
62
76
  files:
63
77
  - ".gitignore"
78
+ - README.md
64
79
  - bin/talcotp
65
80
  - lib/talcotp.rb
66
81
  - talcotp.gemspec