ops_team 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb7e6762ba43bcdd97cc72b6bc5a65bf1280d5bb69ad52eab7455f580fe1f7ea
4
- data.tar.gz: ac3102e06909139501ffef2468bc7005a3c7db215253136c5c08ff6a8d4fc2b2
3
+ metadata.gz: 8c91d50eeddf170724b335ec23089f3f5a452507f034e1edb8d9bce7fe419976
4
+ data.tar.gz: 9fa1b82f605e2342cfe01e6127849c41bae745ff68464afcb294f0796e5b9b82
5
5
  SHA512:
6
- metadata.gz: 2195cba85da82ef592d6368300eaac3bfe856cec816352c82c0acb07c54488ead3abf9e3963d78c4f658c593714e7819834728fa75f6a4cf6432b131da46bb3b
7
- data.tar.gz: 459f5ad1db23e335cb5ec9f15919a84546f66b98abd4fbb286dce0ddb66ae71c034d298507256317ca382f10572d9898c03fcdc2df741add7ad02811606ee3dd
6
+ metadata.gz: b1e9b52dcbcc50975dd2dd9e5369d4e1134822a7837a1132994c296fe32021c339d1457a1d9e92bbb6fdc5daa0581b761a13ce0f04ba92138821e41161f45209
7
+ data.tar.gz: 7b94c375bb4a1614aff89cbe83a530864b9c9aff8d597a0945fb499629833ff8dd099eb986df610d458a3a009d6ea00ac1eaf6c9c92e063892c15ee0290810d5
data/Gemfile CHANGED
@@ -4,7 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
+ gem "bcrypt_pbkdf"
7
8
  gem "colorize"
9
+ gem "ed25519"
10
+ gem "net-ssh"
8
11
  gem "require_all"
9
12
 
10
13
  group :test do
@@ -1,22 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'net/ssh'
4
+
3
5
  require 'dependency'
4
6
 
5
7
  module Dependencies
6
8
  class Sshkey < Dependency
7
9
  DEFAULT_KEY_SIZE = 2048
8
10
  DEFAULT_KEY_ALGO = "rsa"
11
+ DEFAULT_KEY_LIFETIME_S = 600
9
12
 
10
13
  def met?
11
- File.exist?(priv_key_name) && File.exist?(pub_key_name)
14
+ # we always need to at least update the key lifetime in the agent
15
+ false
12
16
  end
13
17
 
14
18
  def meet
15
- Secrets.load if Options.get("sshkey.load_secrets")
19
+ Secrets.load
16
20
 
17
21
  FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
18
22
 
19
- execute("ssh-keygen -b #{key_size} -t #{key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
23
+ generate_key unless File.exist?(priv_key_name) && File.exist?(pub_key_name)
24
+ add_key if success? && ENV["SSH_AUTH_SOCK"]
20
25
  end
21
26
 
22
27
  def unmeet
@@ -29,6 +34,22 @@ module Dependencies
29
34
 
30
35
  private
31
36
 
37
+ def generate_key
38
+ execute("ssh-keygen -b #{key_size} -t #{key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
39
+ end
40
+
41
+ def add_key
42
+ Net::SSH::Authentication::Agent.connect.add_identity(
43
+ unencrypted_key,
44
+ "ops",
45
+ lifetime: key_lifetime
46
+ )
47
+ end
48
+
49
+ def unencrypted_key
50
+ Net::SSH::KeyFactory.load_private_key(priv_key_name, passphrase)
51
+ end
52
+
32
53
  def dir_name
33
54
  `echo #{File.dirname(name)}`.chomp
34
55
  end
@@ -46,7 +67,7 @@ module Dependencies
46
67
  end
47
68
 
48
69
  def key_algo
49
- Options.get("sshkey.key_algo") || DEFAULT_KEY_ALGO
70
+ DEFAULT_KEY_ALGO
50
71
  end
51
72
 
52
73
  def passphrase
@@ -56,5 +77,9 @@ module Dependencies
56
77
  def configured_passphrase
57
78
  Options.get("sshkey.passphrase")
58
79
  end
80
+
81
+ def key_lifetime
82
+ Options.get("sshkey.key_lifetime") || DEFAULT_KEY_LIFETIME_S
83
+ end
59
84
  end
60
85
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ops_team'
5
- s.version = '0.8.0'
5
+ s.version = '0.8.2'
6
6
  s.authors = [
7
7
  'nickthecook@gmail.com'
8
8
  ]
@@ -22,7 +22,10 @@ Gem::Specification.new do |s|
22
22
  ]
23
23
  s.executables << 'ops'
24
24
  s.required_ruby_version = '~> 2.5'
25
+ s.add_runtime_dependency 'bcrypt_pbkdf', '~> 1.0', '>= 1.0.1'
25
26
  s.add_runtime_dependency 'colorize', '~> 0.8', '>= 0.8.1'
27
+ s.add_runtime_dependency 'ed25519', '~> 1.2', '>= 1.2.4'
28
+ s.add_runtime_dependency 'net-ssh', '~> 6.1', '>= 6.1.0'
26
29
  s.add_runtime_dependency 'require_all', '~> 1.1', '>= 1.1.6'
27
30
  s.license = 'GPL-3.0-only'
28
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ops_team
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nickthecook@gmail.com
@@ -10,6 +10,26 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bcrypt_pbkdf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.1
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: colorize
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -30,6 +50,46 @@ dependencies:
30
50
  - - ">="
31
51
  - !ruby/object:Gem::Version
32
52
  version: 0.8.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: ed25519
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.2'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 1.2.4
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.2'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 1.2.4
73
+ - !ruby/object:Gem::Dependency
74
+ name: net-ssh
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 6.1.0
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '6.1'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 6.1.0
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '6.1'
33
93
  - !ruby/object:Gem::Dependency
34
94
  name: require_all
35
95
  requirement: !ruby/object:Gem::Requirement