vagrant-trellis-cert 0.3.0 → 0.4.0

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
  SHA1:
3
- metadata.gz: 3308c07a523d858144f4a8e86ef4d1a00f523495
4
- data.tar.gz: 3f341bca0087eeaf4ada19da414f68c6d684329a
3
+ metadata.gz: 9a80cecdab393ada97a1447baafb77d3a170d50e
4
+ data.tar.gz: 8f08f111c4bc44256828e310ad1e2de232e0c74c
5
5
  SHA512:
6
- metadata.gz: afb38d993e30a912e5c72f3c887c328142293847249cac0300dbd606d2a3fea656ae807c8b2fa7f9894861ca213029f2dff93fb4d2693a716ec214d35087def4
7
- data.tar.gz: 2d2ea0c737ee4305c2c003082494fe83fdae6a0343420989959c57c04fb375045f1a4c2abc2304c53ee48be036cf82e6de3e9f030abfd0978ee5dac9ca7a4ef5
6
+ metadata.gz: 6bc2665f000b8b0056d7882dede8363cf4d62359cd455ec337a14dd824260f904abc3a8362af9fa259279cc754144db0ee78e35135382f62692bff20b34b19a9
7
+ data.tar.gz: 9c47bd2770f4f0218cd9f9e601cbc232d68666494cadd3273b570c1c2339230ba57c8dc7f5b665c3c0133ad9c832423d64ff291e43adc411e4f2d6eac8584271
@@ -1,2 +1,2 @@
1
1
  unreleased=true
2
- future-release=v0.3.0
2
+ future-release=v0.4.0
data/.rubocop.yml CHANGED
@@ -9,7 +9,7 @@ Metrics/LineLength:
9
9
  Max: 143
10
10
 
11
11
  Metrics/MethodLength:
12
- Max: 13
12
+ Max: 11
13
13
 
14
14
  Style/Documentation:
15
15
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.4.0](https://github.com/TypistTech/vagrant-trellis-cert/tree/v0.4.0) (2017-10-05)
4
+ [Full Changelog](https://github.com/TypistTech/vagrant-trellis-cert/compare/v0.3.0...v0.4.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Add `distrust` subcommand [\#21](https://github.com/TypistTech/vagrant-trellis-cert/issues/21)
9
+
10
+ **Merged pull requests:**
11
+
12
+ - Add `distrust` subcommand [\#37](https://github.com/TypistTech/vagrant-trellis-cert/pull/37) ([TangRufus](https://github.com/TangRufus))
13
+
3
14
  ## [v0.3.0](https://github.com/TypistTech/vagrant-trellis-cert/tree/v0.3.0) (2017-09-18)
4
15
  [Full Changelog](https://github.com/TypistTech/vagrant-trellis-cert/compare/v0.2.0...v0.3.0)
5
16
 
@@ -10,6 +21,7 @@
10
21
 
11
22
  **Merged pull requests:**
12
23
 
24
+ - Version bump 0.3.0 [\#36](https://github.com/TypistTech/vagrant-trellis-cert/pull/36) ([TangRufus](https://github.com/TangRufus))
13
25
  - Determine current VM via `vm-id` as a vagrant plugin should [\#35](https://github.com/TypistTech/vagrant-trellis-cert/pull/35) ([TangRufus](https://github.com/TangRufus))
14
26
  - Extract class `Result` [\#34](https://github.com/TypistTech/vagrant-trellis-cert/pull/34) ([TangRufus](https://github.com/TangRufus))
15
27
  - Rename module Commands --\> Command [\#33](https://github.com/TypistTech/vagrant-trellis-cert/pull/33) ([TangRufus](https://github.com/TangRufus))
data/README.md CHANGED
@@ -39,11 +39,13 @@ $ vagrant plugin install vagrant-trellis-cert
39
39
 
40
40
  ```bash
41
41
  Usage: vagrant trellis-cert trust [options] [vm-id]
42
+ Usage: vagrant trellis-cert distrust [options] [vm-id]
42
43
 
43
44
  -h, --help Print this help
44
45
 
45
46
  # Example: Running within Trellis directory
46
47
  $ vagrant trellis-cert trust
48
+ $ vagrant trellis-cert distrust
47
49
 
48
50
  # Example: Specify VM id
49
51
  $ vagrant global-status
@@ -52,6 +54,7 @@ id name provider state directory
52
54
  fb90ab5 default virtualbox running /Users/me/Code/trellis
53
55
 
54
56
  $ vagrant trellis-cert trust fb90ab5
57
+ $ vagrant trellis-cert distrust fb90ab5
55
58
  ```
56
59
 
57
60
  ## Going super lazy
@@ -69,6 +72,10 @@ Vagrant.configure('2') do |config|
69
72
  config.trigger.after :provision, :stdout => true do
70
73
  run "vagrant trellis-cert trust"
71
74
  end
75
+
76
+ config.trigger.after :destroy, :stdout => true do
77
+ run "vagrant trellis-cert distrust"
78
+ end
72
79
  end
73
80
  ```
74
81
 
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'vagrant_plugins/trellis_cert/ssl_config'
4
+ require 'vagrant_plugins/trellis_cert/system'
5
+
6
+ module VagrantPlugins
7
+ module TrellisCert
8
+ module Command
9
+ class Distrust < Vagrant.plugin('2', :command)
10
+ def execute
11
+ _options, argv = parse_options!
12
+
13
+ @env.ui.info('Removing certificates...')
14
+
15
+ hosts = SSLConfig.new(root_path: machine_root_path(argv))
16
+ .canonicals
17
+ result = System.build
18
+ .distrust(hosts)
19
+
20
+ result.print(ui: @env.ui)
21
+
22
+ result.exit_code
23
+ end
24
+
25
+ private
26
+
27
+ def parse_options!
28
+ options = {}
29
+ opts = OptionParser.new do |o|
30
+ o.banner = 'Usage: vagrant trellis-cert distrust [options] [vm-id]'
31
+ o.separator ''
32
+
33
+ o.on('-h', '--help', 'Print this help') do
34
+ @env.ui.info(opts)
35
+ exit
36
+ end
37
+ end
38
+ [options, parse_options(opts)]
39
+ end
40
+
41
+ def machine_root_path(argv)
42
+ with_target_vms(argv) do |machine|
43
+ return machine.env.root_path
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -21,6 +21,11 @@ module VagrantPlugins
21
21
  require_relative 'trust'
22
22
  Trust
23
23
  end
24
+
25
+ @subcommands.register(:distrust) do
26
+ require_relative 'distrust'
27
+ Distrust
28
+ end
24
29
  end
25
30
 
26
31
  def execute
@@ -10,23 +10,13 @@ module VagrantPlugins
10
10
  def execute
11
11
  _options, argv = parse_options!
12
12
 
13
- # To get result variable after mktmpdir block
14
- result = nil
13
+ @env.ui.info('Importing certificates...')
15
14
 
16
- with_target_vms(argv) do |machine|
17
- raise Vagrant::Errors::SSHNotReady unless machine.communicate.ready?
18
-
19
- machine.env.ui.info('Importing certificates...')
20
-
21
- Dir.mktmpdir do |tmp_dir|
22
- result = System.build(
23
- hosts: SSLConfig.new(root_path: machine.env.root_path).canonicals,
24
- tmp_dir: tmp_dir
25
- ).trust
26
- end
15
+ hosts = SSLConfig.new(root_path: machine_root_path(argv))
16
+ .canonicals
17
+ result = trust(hosts)
27
18
 
28
- result.print(ui: machine.env.ui)
29
- end
19
+ result.print(ui: @env.ui)
30
20
 
31
21
  result.exit_code
32
22
  end
@@ -46,6 +36,22 @@ module VagrantPlugins
46
36
  end
47
37
  [options, parse_options(opts)]
48
38
  end
39
+
40
+ def machine_root_path(argv)
41
+ with_target_vms(argv) do |machine|
42
+ # Machine must be up so that we can download SSL certificates.
43
+ raise Vagrant::Errors::SSHNotReady unless machine.communicate.ready?
44
+
45
+ return machine.env.root_path
46
+ end
47
+ end
48
+
49
+ def trust(hosts)
50
+ Dir.mktmpdir do |tmp_dir|
51
+ return System.build
52
+ .trust(hosts: hosts, tmp_dir: tmp_dir)
53
+ end
54
+ end
49
55
  end
50
56
  end
51
57
  end
@@ -8,7 +8,7 @@ module VagrantPlugins
8
8
  end
9
9
 
10
10
  def self.version
11
- '0.3.0'
11
+ '0.4.0'
12
12
  end
13
13
 
14
14
  def self.description
@@ -5,12 +5,12 @@ require 'vagrant_plugins/trellis_cert/system/darwin'
5
5
  module VagrantPlugins
6
6
  module TrellisCert
7
7
  module System
8
- def self.build(args)
8
+ def self.build
9
9
  unless Vagrant::Util::Platform.darwin?
10
10
  raise 'vagrant-trellis-cert only works on macOS. Pull requests are welcome.'
11
11
  end
12
12
 
13
- Darwin.new(**args)
13
+ Darwin.new
14
14
  end
15
15
  end
16
16
  end
@@ -8,17 +8,12 @@ module VagrantPlugins
8
8
  class Darwin
9
9
  KEYCHAIN = '~/Library/Keychains/login.keychain'
10
10
 
11
- def initialize(hosts:, tmp_dir:)
12
- @hosts = hosts
13
- @tmp_dir = tmp_dir
14
- end
15
-
16
- def trust
11
+ def trust(hosts:, tmp_dir:)
17
12
  Result.new.tap do |result|
18
- @hosts.map do |host|
19
- cert_path = "#{@tmp_dir}/#{host}.pem"
13
+ hosts.map do |host|
14
+ cert_path = "#{tmp_dir}/#{host}.pem"
20
15
 
21
- # Download certs
16
+ # Download cert
22
17
  system("openssl s_client -showcerts -connect #{host}:443 </dev/null 2>/dev/null | \
23
18
  openssl x509 -outform PEM > #{cert_path} 2>/dev/null")
24
19
 
@@ -28,6 +23,16 @@ module VagrantPlugins
28
23
  end
29
24
  end
30
25
  end
26
+
27
+ def distrust(hosts)
28
+ Result.new.tap do |result|
29
+ hosts.map do |host|
30
+ is_success = system("security delete-certificate -c #{host} #{KEYCHAIN} >/dev/null 2>/dev/null")
31
+
32
+ result.add(host: host, is_success: is_success)
33
+ end
34
+ end
35
+ end
31
36
  end
32
37
  end
33
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-trellis-cert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tang Rufus
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-09-18 00:00:00.000000000 Z
12
+ date: 2017-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -72,6 +72,7 @@ files:
72
72
  - README.md
73
73
  - Rakefile
74
74
  - lib/vagrant-trellis-cert.rb
75
+ - lib/vagrant_plugins/trellis_cert/command/distrust.rb
75
76
  - lib/vagrant_plugins/trellis_cert/command/root.rb
76
77
  - lib/vagrant_plugins/trellis_cert/command/trust.rb
77
78
  - lib/vagrant_plugins/trellis_cert/config.rb