inspec 0.14.6 → 0.14.7

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: 22439c33205070f48e2e1f199f040ff3f4a50133
4
- data.tar.gz: 12fb11787b0df75c7c3f275a5ee43bb19df94983
3
+ metadata.gz: e23aea3ed6f256ada21afef149fe87553f84aa17
4
+ data.tar.gz: 1d36f905fa6a2dae444900d01d9db522da10fdb7
5
5
  SHA512:
6
- metadata.gz: 1b8fc567acb8bf86a1b9fa4ec40dab1ac50f596874cf26ed30e240612c2a32ad772e3b2166767ed4f9676aa966530bf114fb004187b6aa71dd5a436449c4ef28
7
- data.tar.gz: 1e17444082f76b7c02a9590783a93c350ac12f6e039492737a3af54cd5c6f91c2a9530db2422241f971b175cbdb194bfd1903d8694c6d13dbb05ca7a81afd119
6
+ metadata.gz: 790db6f9584440a041282924b5e70faa2763c4b1e3dcee3f7f26d2bb29dc998ebaade90158179be869f624b9510172623641522508fb4015dad19bd9a3b6a0af
7
+ data.tar.gz: 220b6f09b83e99abddba71d156288ee5e1171e061d9bbc4cea33e34b9570dac3416602007ebb8982081ebcc88837eee82808d7780ff000c9cfd326fc1b049a36
data/CHANGELOG.md CHANGED
@@ -1,16 +1,35 @@
1
1
  # Change Log
2
2
 
3
- ## [0.14.6](https://github.com/chef/inspec/tree/0.14.6) (2016-03-01)
4
- [Full Changelog](https://github.com/chef/inspec/compare/v0.14.5...0.14.6)
3
+ ## [0.14.7](https://github.com/chef/inspec/tree/0.14.7) (2016-03-01)
4
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.14.6...0.14.7)
5
5
 
6
6
  **Fixed bugs:**
7
7
 
8
- - add missing supermarket loader [\#506](https://github.com/chef/inspec/pull/506) ([chris-rock](https://github.com/chris-rock))
8
+ - `compliance` command does not work with self-signed https [\#511](https://github.com/chef/inspec/issues/511)
9
+
10
+ **Closed issues:**
11
+
12
+ - check error - digest: no implicit conversion of nil into String \(TypeError\) [\#509](https://github.com/chef/inspec/issues/509)
9
13
 
10
14
  **Merged pull requests:**
11
15
 
16
+ - adds a insecure option [\#512](https://github.com/chef/inspec/pull/512) ([chris-rock](https://github.com/chris-rock))
17
+
18
+ ## [v0.14.6](https://github.com/chef/inspec/tree/v0.14.6) (2016-03-01)
19
+ [Full Changelog](https://github.com/chef/inspec/compare/v0.14.5...v0.14.6)
20
+
21
+ **Implemented enhancements:**
22
+
12
23
  - Improve Supermarket CLI [\#508](https://github.com/chef/inspec/pull/508) ([alexpop](https://github.com/alexpop))
13
24
 
25
+ **Fixed bugs:**
26
+
27
+ - add missing supermarket loader [\#506](https://github.com/chef/inspec/pull/506) ([chris-rock](https://github.com/chris-rock))
28
+
29
+ **Merged pull requests:**
30
+
31
+ - 0.14.6 [\#510](https://github.com/chef/inspec/pull/510) ([chris-rock](https://github.com/chris-rock))
32
+
14
33
  ## [v0.14.5](https://github.com/chef/inspec/tree/v0.14.5) (2016-02-29)
15
34
  [Full Changelog](https://github.com/chef/inspec/compare/v0.14.4...v0.14.5)
16
35
 
@@ -8,19 +8,20 @@ require 'uri'
8
8
  module Compliance
9
9
  # API Implementation does not hold any state by itself,
10
10
  # everything will be stored in local Configuration store
11
- class API
11
+ class API # rubocop:disable Metrics/ClassLength
12
12
  # logs into the server, retrieves a token and stores it locally
13
- def self.login(server, username, password)
13
+ def self.login(server, username, password, insecure)
14
14
  config = Compliance::Configuration.new
15
15
  config['server'] = server
16
16
  url = "#{server}/oauth/token"
17
17
 
18
- success, data = Compliance::API.post(url, username, password)
18
+ success, data = Compliance::API.post(url, username, password, insecure)
19
19
  if !data.nil?
20
20
  tokendata = JSON.parse(data)
21
21
  if tokendata['access_token']
22
22
  config['user'] = username
23
23
  config['token'] = tokendata['access_token']
24
+ config['insecure'] = insecure
24
25
  config.store
25
26
  success = true
26
27
  msg = 'Successfully authenticated'
@@ -36,7 +37,7 @@ module Compliance
36
37
  def self.logout
37
38
  config = Compliance::Configuration.new
38
39
  url = "#{config['server']}/logout"
39
- Compliance::API.post(url, config['token'], nil)
40
+ Compliance::API.post(url, config['token'], nil, config['insecure'])
40
41
  config.destroy
41
42
  end
42
43
 
@@ -45,7 +46,7 @@ module Compliance
45
46
  config = Compliance::Configuration.new
46
47
  url = "#{config['server']}/version"
47
48
 
48
- _success, data = Compliance::API.get(url, nil, nil)
49
+ _success, data = Compliance::API.get(url, nil, nil, config['insecure'])
49
50
  if !data.nil?
50
51
  JSON.parse(data)
51
52
  else
@@ -56,9 +57,8 @@ module Compliance
56
57
  # return all compliance profiles available for the user
57
58
  def self.profiles
58
59
  config = Compliance::Configuration.new
59
-
60
60
  url = "#{config['server']}/user/compliance"
61
- _success, data = get(url, config['token'], '')
61
+ _success, data = get(url, config['token'], '', config['insecure'])
62
62
 
63
63
  if !data.nil?
64
64
  profiles = JSON.parse(data)
@@ -86,28 +86,33 @@ module Compliance
86
86
  end
87
87
  end
88
88
 
89
- def self.get(url, username, password)
89
+ def self.get(url, username, password, insecure)
90
90
  uri = URI.parse(url)
91
91
  req = Net::HTTP::Get.new(uri.path)
92
92
  req.basic_auth username, password
93
93
 
94
- send_request(uri, req)
94
+ send_request(uri, req, insecure)
95
95
  end
96
96
 
97
- def self.post(url, username, password)
97
+ def self.post(url, username, password, insecure)
98
98
  # form request
99
99
  uri = URI.parse(url)
100
100
  req = Net::HTTP::Post.new(uri.path)
101
101
  req.basic_auth username, password
102
102
  req.form_data={}
103
103
 
104
- send_request(uri, req)
104
+ send_request(uri, req, insecure)
105
105
  end
106
106
 
107
107
  # upload a file
108
- def self.post_file(url, username, password, file_path)
108
+ def self.post_file(url, username, password, file_path, insecure)
109
109
  uri = URI.parse(url)
110
110
  http = Net::HTTP.new(uri.host, uri.port)
111
+
112
+ # set connection flags
113
+ http.use_ssl = (uri.scheme == 'https')
114
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE if insecure
115
+
111
116
  req = Net::HTTP::Post.new(uri.path)
112
117
  req.basic_auth username, password
113
118
 
@@ -123,9 +128,13 @@ module Compliance
123
128
  [res.is_a?(Net::HTTPSuccess), res.body]
124
129
  end
125
130
 
126
- def self.send_request(uri, req)
127
- # send request
128
- res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') {|http|
131
+ def self.send_request(uri, req, insecure)
132
+ opts = {
133
+ use_ssl: uri.scheme == 'https',
134
+ }
135
+ opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if insecure
136
+
137
+ res = Net::HTTP.start(uri.host, uri.port, opts) {|http|
129
138
  http.request(req)
130
139
  }
131
140
  [res.is_a?(Net::HTTPSuccess), res.body]
@@ -13,8 +13,10 @@ module Compliance
13
13
  desc: 'Chef Compliance Username'
14
14
  option :password, type: :string, required: true,
15
15
  desc: 'Chef Compliance Password'
16
+ option :insecure, aliases: :k, type: :boolean,
17
+ desc: 'Explicitly allows InSpec to perform "insecure" SSL connections and transfers'
16
18
  def login(server)
17
- success, msg = Compliance::API.login(server, options['user'], options['password'])
19
+ success, msg = Compliance::API.login(server, options['user'], options['password'], options['insecure'])
18
20
  if success
19
21
  puts 'Successfully authenticated'
20
22
  else
@@ -112,7 +114,7 @@ module Compliance
112
114
  url = "#{config['server']}/owners/#{owner}/compliance/#{profile_name}/tar"
113
115
 
114
116
  puts "Uploading to #{url}"
115
- success, msg = Compliance::API.post_file(url, config['token'], '', archive_path)
117
+ success, msg = Compliance::API.post_file(url, config['token'], '', archive_path, config['insecure'])
116
118
  if success
117
119
  puts 'Successfully uploaded profile'
118
120
  else
@@ -3,5 +3,5 @@
3
3
  # author: Christoph Hartmann
4
4
 
5
5
  module Inspec
6
- VERSION = '0.14.6'.freeze
6
+ VERSION = '0.14.7'.freeze
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.6
4
+ version: 0.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter