inspec 1.44.8 → 1.45.9
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 +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +36 -17
- data/Rakefile +0 -17
- data/inspec.gemspec +2 -2
- data/lib/bundles/inspec-artifact/cli.rb +5 -5
- data/lib/bundles/inspec-supermarket/api.rb +1 -1
- data/lib/inspec/metadata.rb +2 -2
- data/lib/inspec/rspec_json_formatter.rb +21 -6
- data/lib/inspec/version.rb +1 -1
- data/lib/resources/etc_group.rb +1 -1
- data/lib/resources/http.rb +7 -3
- data/lib/resources/oracledb_session.rb +3 -1
- data/lib/resources/port.rb +32 -5
- data/lib/resources/xinetd.rb +4 -6
- data/lib/utils/parser.rb +1 -1
- metadata +11 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1a9abff18ab1cdd996b01299cb2c0e0ab2bdbaab
|
|
4
|
+
data.tar.gz: 24deaa54689c34fd8f7813e10828a74d54583e79
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c70d6d686d8bc62602837812f291a1bb1b05805cad90bf2fe22d168809cd3d427ff31ac4f57d5471be5f334c8daae22fab0e9a646e311c9152b88c9f09fe4d06
|
|
7
|
+
data.tar.gz: 48c1b044e2d6082bfe89d1babe2df372625f7a970468882c10180b855da5625eeec81eab3c4096abbe1690cf78def4f1b4960ea871a8c1ef9da69eee3c5c3c73
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
AllCops:
|
|
3
|
+
TargetRubyVersion: 2.3
|
|
3
4
|
Exclude:
|
|
4
5
|
- Gemfile
|
|
5
6
|
- Rakefile
|
|
@@ -13,6 +14,8 @@ AlignParameters:
|
|
|
13
14
|
Enabled: true
|
|
14
15
|
Encoding:
|
|
15
16
|
Enabled: true
|
|
17
|
+
FrozenStringLiteralComment:
|
|
18
|
+
Enabled: false
|
|
16
19
|
HashSyntax:
|
|
17
20
|
Enabled: true
|
|
18
21
|
LineLength:
|
data/CHANGELOG.md
CHANGED
|
@@ -1,41 +1,60 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
<!-- usage documentation: http://expeditor-docs.es.chef.io/configuration/changelog/ -->
|
|
3
|
-
<!-- latest_release 1.
|
|
4
|
-
## [v1.
|
|
3
|
+
<!-- latest_release 1.45.9 -->
|
|
4
|
+
## [v1.45.9](https://github.com/chef/inspec/tree/v1.45.9) (2017-11-16)
|
|
5
5
|
|
|
6
6
|
#### Enhancements
|
|
7
|
-
-
|
|
7
|
+
- http resource: Add basic param handling to remote HTTP worker [#2286](https://github.com/chef/inspec/pull/2286) ([schisamo](https://github.com/schisamo))
|
|
8
8
|
<!-- latest_release -->
|
|
9
9
|
|
|
10
|
-
<!-- release_rollup since=1.
|
|
11
|
-
### Changes since 1.
|
|
10
|
+
<!-- release_rollup since=1.44.8 -->
|
|
11
|
+
### Changes since 1.44.8 release
|
|
12
12
|
|
|
13
13
|
#### Enhancements
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- allow users to specify user/namespace when fetching profiles from Chef Automate [#2275](https://github.com/chef/inspec/pull/2275) ([arlimus](https://github.com/arlimus)) <!-- 1.44.1 -->
|
|
17
|
-
- Add non-halting exception support to resources [#2235](https://github.com/chef/inspec/pull/2235) ([jerryaldrichiii](https://github.com/jerryaldrichiii)) <!-- 1.44.0 -->
|
|
14
|
+
- http resource: Add basic param handling to remote HTTP worker [#2286](https://github.com/chef/inspec/pull/2286) ([schisamo](https://github.com/schisamo)) <!-- 1.45.9 -->
|
|
15
|
+
- Correctly format skip exceptions in formatters [#2307](https://github.com/chef/inspec/pull/2307) ([adamleff](https://github.com/adamleff)) <!-- 1.45.4 -->
|
|
18
16
|
|
|
19
17
|
#### Merged Pull Requests
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
18
|
+
- Update Rubocop to TargetRubyVersion 2.3 [#2311](https://github.com/chef/inspec/pull/2311) ([adamleff](https://github.com/adamleff)) <!-- 1.45.8 -->
|
|
19
|
+
- Require Ruby 2.3 and later [#2293](https://github.com/chef/inspec/pull/2293) ([adamleff](https://github.com/adamleff)) <!-- 1.45.7 -->
|
|
20
|
+
- Fix gid filtering for etc_group resource [#2297](https://github.com/chef/inspec/pull/2297) ([eramoto](https://github.com/eramoto)) <!-- 1.45.3 -->
|
|
21
|
+
- Habitat build works for all versions, eliminates rake [#2301](https://github.com/chef/inspec/pull/2301) ([adamleff](https://github.com/adamleff)) <!-- 1.45.2 -->
|
|
22
|
+
- Bumping train to 0.29.1 [#2306](https://github.com/chef/inspec/pull/2306) ([adamleff](https://github.com/adamleff)) <!-- 1.45.0 -->
|
|
24
23
|
|
|
25
24
|
#### Bug Fixes
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
25
|
+
- xinetd_conf resource: fix false positives when config file or directory doesn't exist [#2302](https://github.com/chef/inspec/pull/2302) ([eramoto](https://github.com/eramoto)) <!-- 1.45.6 -->
|
|
26
|
+
- oracledb_session resource: fix credential passing to sql/sqlplus [#2308](https://github.com/chef/inspec/pull/2308) ([bratdim](https://github.com/bratdim)) <!-- 1.45.5 -->
|
|
27
|
+
- Fix classname in JUnit formatter [#2283](https://github.com/chef/inspec/pull/2283) ([adamleff](https://github.com/adamleff)) <!-- 1.45.1 -->
|
|
28
|
+
- port resource: handle ss output from older iproute package [#2305](https://github.com/chef/inspec/pull/2305) ([Wing924](https://github.com/Wing924)) <!-- 1.44.9 -->
|
|
29
29
|
<!-- release_rollup -->
|
|
30
30
|
|
|
31
31
|
<!-- latest_stable_release -->
|
|
32
|
+
## [v1.44.8](https://github.com/chef/inspec/tree/v1.44.8) (2017-11-09)
|
|
33
|
+
|
|
34
|
+
#### Enhancements
|
|
35
|
+
- Add non-halting exception support to resources [#2235](https://github.com/chef/inspec/pull/2235) ([jerryaldrichiii](https://github.com/jerryaldrichiii))
|
|
36
|
+
- allow users to specify user/namespace when fetching profiles from Chef Automate [#2275](https://github.com/chef/inspec/pull/2275) ([arlimus](https://github.com/arlimus))
|
|
37
|
+
- http resource: supply max-time option using read_timeout and open_timeout [#2289](https://github.com/chef/inspec/pull/2289) ([bdellegrazie](https://github.com/bdellegrazie))
|
|
38
|
+
- Issue warning during check if profile name contains slash [#2231](https://github.com/chef/inspec/pull/2231) ([clintoncwolfe](https://github.com/clintoncwolfe))
|
|
39
|
+
|
|
40
|
+
#### Bug Fixes
|
|
41
|
+
- http resource: use proper syntax in `curl` header option [#2285](https://github.com/chef/inspec/pull/2285) ([schisamo](https://github.com/schisamo))
|
|
42
|
+
- nginx resource: support quoted identifiers [#2292](https://github.com/chef/inspec/pull/2292) ([adamleff](https://github.com/adamleff))
|
|
43
|
+
- Properly compare profile version strings as SemVer [#2280](https://github.com/chef/inspec/pull/2280) ([adamleff](https://github.com/adamleff))
|
|
44
|
+
|
|
45
|
+
#### Merged Pull Requests
|
|
46
|
+
- Pin RubyGems to 2.6.14 [#2287](https://github.com/chef/inspec/pull/2287) ([adamleff](https://github.com/adamleff))
|
|
47
|
+
- Switch to tomlrb for TOML parsing [#2295](https://github.com/chef/inspec/pull/2295) ([adamleff](https://github.com/adamleff))
|
|
48
|
+
- Use Ruby 2.4.2 in the Omnibus InSpec packages [#2294](https://github.com/chef/inspec/pull/2294) ([adamleff](https://github.com/adamleff))
|
|
49
|
+
- Eliminate deprecation warnings on resource skipped messages [#2296](https://github.com/chef/inspec/pull/2296) ([adamleff](https://github.com/adamleff))
|
|
50
|
+
<!-- latest_stable_release -->
|
|
51
|
+
|
|
32
52
|
## [v1.43.8](https://github.com/chef/inspec/tree/v1.43.8) (2017-11-02)
|
|
33
53
|
|
|
34
54
|
#### Bug Fixes
|
|
35
55
|
- inspec compliance login: Ensure supplied server has a proper URI scheme [#2268](https://github.com/chef/inspec/pull/2268) ([jerryaldrichiii](https://github.com/jerryaldrichiii))
|
|
36
56
|
- mount resource: fix for Device-/Sharenames and Mountpoints including … [#2257](https://github.com/chef/inspec/pull/2257) ([mgrobelin](https://github.com/mgrobelin))
|
|
37
57
|
- service resource: properly search for SysV Init S files [#2274](https://github.com/chef/inspec/pull/2274) ([Wing924](https://github.com/Wing924))
|
|
38
|
-
<!-- latest_stable_release -->
|
|
39
58
|
|
|
40
59
|
## [v1.43.5](https://github.com/chef/inspec/tree/v1.43.5) (2017-10-26)
|
|
41
60
|
|
data/Rakefile
CHANGED
|
@@ -150,23 +150,6 @@ task :release_docker do
|
|
|
150
150
|
sh('sh', '-c', cmd)
|
|
151
151
|
end
|
|
152
152
|
|
|
153
|
-
desc 'Release a new Habitat package'
|
|
154
|
-
task :release_habitat do
|
|
155
|
-
version = Inspec::VERSION
|
|
156
|
-
ENV['HAB_ORIGIN'] = "chef"
|
|
157
|
-
if Dir.exist?("./results") then
|
|
158
|
-
raise "Please remove the ./results directory"
|
|
159
|
-
end
|
|
160
|
-
if ! ENV.has_key?("HAB_AUTH_TOKEN") then
|
|
161
|
-
raise "Please set the HAB_AUTH_TOKEN environment variable"
|
|
162
|
-
end
|
|
163
|
-
cmd = "echo #{version} > ./habitat/VERSION && "\
|
|
164
|
-
"hab pkg build . && " \
|
|
165
|
-
"hab pkg upload ./results/*.hart --channel stable"
|
|
166
|
-
puts "--> #{cmd}"
|
|
167
|
-
sh('sh', '-c', cmd)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
153
|
desc 'Release the website [deprecated]'
|
|
171
154
|
task :www do
|
|
172
155
|
puts 'The Rake tasks for releasing the website are now in the www/ directory.'
|
data/inspec.gemspec
CHANGED
|
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
25
25
|
spec.require_paths = ['lib']
|
|
26
26
|
|
|
27
|
-
spec.required_ruby_version = '>= 2.
|
|
27
|
+
spec.required_ruby_version = '>= 2.3'
|
|
28
28
|
|
|
29
|
-
spec.add_dependency 'train', '~> 0.
|
|
29
|
+
spec.add_dependency 'train', '~> 0.29', '>= 0.29.1'
|
|
30
30
|
spec.add_dependency 'thor', '~> 0.19'
|
|
31
31
|
spec.add_dependency 'json', '>= 1.8', '< 3.0'
|
|
32
32
|
spec.add_dependency 'rainbow', '~> 2'
|
|
@@ -79,17 +79,17 @@ module Artifact
|
|
|
79
79
|
KEY_BITS=2048
|
|
80
80
|
KEY_ALG=OpenSSL::PKey::RSA
|
|
81
81
|
|
|
82
|
-
INSPEC_PROFILE_VERSION_1='INSPEC-PROFILE-1'
|
|
83
|
-
INSPEC_REPORT_VERSION_1='INSPEC-REPORT-1'
|
|
82
|
+
INSPEC_PROFILE_VERSION_1='INSPEC-PROFILE-1'
|
|
83
|
+
INSPEC_REPORT_VERSION_1='INSPEC-REPORT-1'
|
|
84
84
|
|
|
85
85
|
ARTIFACT_DIGEST=OpenSSL::Digest::SHA512
|
|
86
|
-
ARTIFACT_DIGEST_NAME='SHA512'
|
|
86
|
+
ARTIFACT_DIGEST_NAME='SHA512'
|
|
87
87
|
|
|
88
88
|
VALID_PROFILE_VERSIONS=Set.new [INSPEC_PROFILE_VERSION_1]
|
|
89
89
|
VALID_PROFILE_DIGESTS=Set.new [ARTIFACT_DIGEST_NAME]
|
|
90
90
|
|
|
91
|
-
SIGNED_PROFILE_SUFFIX='iaf'
|
|
92
|
-
SIGNED_REPORT_SUFFIX='iar'
|
|
91
|
+
SIGNED_PROFILE_SUFFIX='iaf'
|
|
92
|
+
SIGNED_REPORT_SUFFIX='iar'
|
|
93
93
|
|
|
94
94
|
# rubocop:disable Metrics/ClassLength
|
|
95
95
|
class CLI < Inspec::BaseCLI
|
data/lib/inspec/metadata.rb
CHANGED
|
@@ -189,7 +189,7 @@ module Inspec
|
|
|
189
189
|
logger.warn(
|
|
190
190
|
"Do not use deprecated `supports: #{x}` syntax. Instead use:\n"\
|
|
191
191
|
"supports:\n - os-family: #{x}\n\n")
|
|
192
|
-
{ :'os-family' => x }
|
|
192
|
+
{ :'os-family' => x } # rubocop:disable Style/HashSyntax
|
|
193
193
|
end
|
|
194
194
|
end
|
|
195
195
|
|
|
@@ -203,7 +203,7 @@ module Inspec
|
|
|
203
203
|
logger.warn(
|
|
204
204
|
"Do not use deprecated `supports: #{x}` syntax. Instead use:\n"\
|
|
205
205
|
"supports:\n - os-family: #{x}\n\n")
|
|
206
|
-
[{ :'os-family' => x }]
|
|
206
|
+
[{ :'os-family' => x }] # rubocop:disable Style/HashSyntax
|
|
207
207
|
end
|
|
208
208
|
end
|
|
209
209
|
|
|
@@ -62,6 +62,10 @@ class InspecRspecMiniJson < RSpec::Core::Formatters::JsonFormatter
|
|
|
62
62
|
next if e.is_a? RSpec::Expectations::ExpectationNotMetError
|
|
63
63
|
hash[:exception] = e.class.name
|
|
64
64
|
hash[:backtrace] = e.backtrace
|
|
65
|
+
|
|
66
|
+
# if the exception indicates the resource author wants to skip the test,
|
|
67
|
+
# we update the test status here.
|
|
68
|
+
hash[:status] = 'skipped' if e.is_a?(Inspec::Exceptions::ResourceSkipped)
|
|
65
69
|
end
|
|
66
70
|
end
|
|
67
71
|
end
|
|
@@ -571,7 +575,8 @@ class InspecRspecCli < InspecRspecJson # rubocop:disable Metrics/ClassLength
|
|
|
571
575
|
end
|
|
572
576
|
|
|
573
577
|
def print_result(result)
|
|
574
|
-
|
|
578
|
+
test_skipped = result[:status] == 'skipped'
|
|
579
|
+
test_status = test_skipped ? 'skipped' : result[:status_type]
|
|
575
580
|
indicator = INDICATORS[result[:status]]
|
|
576
581
|
indicator = INDICATORS['empty'] if indicator.nil?
|
|
577
582
|
if result[:message]
|
|
@@ -821,7 +826,9 @@ class InspecRspecCli < InspecRspecJson # rubocop:disable Metrics/ClassLength
|
|
|
821
826
|
end
|
|
822
827
|
|
|
823
828
|
def update_summary(example)
|
|
824
|
-
|
|
829
|
+
test_skipped = example[:status] == 'skipped'
|
|
830
|
+
status_type = test_skipped ? 'skipped' : example[:status_type]
|
|
831
|
+
example_status = STATUS_TYPES[status_type]
|
|
825
832
|
@summary_status = example_status if example_status > @summary_status
|
|
826
833
|
fails.push(example) if example_status > 0
|
|
827
834
|
passes.push(example) if example_status == STATUS_TYPES['passed']
|
|
@@ -874,8 +881,9 @@ class InspecRspecJUnit < InspecRspecJson
|
|
|
874
881
|
private
|
|
875
882
|
|
|
876
883
|
def build_profile_xml(profile)
|
|
884
|
+
profile_name = profile[:name]
|
|
877
885
|
profile_xml = REXML::Element.new('testsuite')
|
|
878
|
-
profile_xml.add_attribute('name',
|
|
886
|
+
profile_xml.add_attribute('name', profile_name)
|
|
879
887
|
profile_xml.add_attribute('tests', count_profile_tests(profile))
|
|
880
888
|
profile_xml.add_attribute('failed', count_profile_failed_tests(profile))
|
|
881
889
|
|
|
@@ -883,17 +891,24 @@ class InspecRspecJUnit < InspecRspecJson
|
|
|
883
891
|
next if control[:results].nil?
|
|
884
892
|
|
|
885
893
|
control[:results].each do |result|
|
|
886
|
-
profile_xml.add(build_result_xml(control, result))
|
|
894
|
+
profile_xml.add(build_result_xml(profile_name, control, result))
|
|
887
895
|
end
|
|
888
896
|
end
|
|
889
897
|
|
|
890
898
|
profile_xml
|
|
891
899
|
end
|
|
892
900
|
|
|
893
|
-
def build_result_xml(control, result)
|
|
901
|
+
def build_result_xml(profile_name, control, result)
|
|
894
902
|
result_xml = REXML::Element.new('testcase')
|
|
895
903
|
result_xml.add_attribute('name', result[:code_desc])
|
|
896
|
-
|
|
904
|
+
# if there is no control title, we are likely receiving test results from a
|
|
905
|
+
# "naked" test (a test not located within a control block). Therefore, rather
|
|
906
|
+
# than outputting the auto-generated ID, i.e.
|
|
907
|
+
#
|
|
908
|
+
# "(generated from test_spec.rb:1 de0ce10e4bbbd4d0ff7a65f4234de8c1)")
|
|
909
|
+
#
|
|
910
|
+
# ... we'll output "Anonymous" instead.
|
|
911
|
+
result_xml.add_attribute('classname', control[:title].nil? ? "#{profile_name}.Anonymous" : "#{profile_name}.#{control[:id]}")
|
|
897
912
|
result_xml.add_attribute('time', result[:run_time])
|
|
898
913
|
|
|
899
914
|
if result[:status] == 'failed'
|
data/lib/inspec/version.rb
CHANGED
data/lib/resources/etc_group.rb
CHANGED
data/lib/resources/http.rb
CHANGED
|
@@ -165,7 +165,7 @@ module Inspec::Resources
|
|
|
165
165
|
|
|
166
166
|
def body
|
|
167
167
|
run_curl
|
|
168
|
-
@body
|
|
168
|
+
@body&.strip
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
def response_headers
|
|
@@ -202,7 +202,7 @@ module Inspec::Resources
|
|
|
202
202
|
end
|
|
203
203
|
end
|
|
204
204
|
|
|
205
|
-
def curl_command
|
|
205
|
+
def curl_command # rubocop:disable Metrics/AbcSize
|
|
206
206
|
cmd = ["curl -i -X #{http_method}"]
|
|
207
207
|
cmd << "--connect-timeout #{open_timeout}"
|
|
208
208
|
cmd << "--max-time #{open_timeout+read_timeout}"
|
|
@@ -214,7 +214,11 @@ module Inspec::Resources
|
|
|
214
214
|
cmd << "-H '#{k}: #{v}'"
|
|
215
215
|
end
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
if params.nil?
|
|
218
|
+
cmd << "'#{url}'"
|
|
219
|
+
else
|
|
220
|
+
cmd << "'#{url}?#{params.map { |e| e.join('=') }.join('&')}'"
|
|
221
|
+
end
|
|
218
222
|
|
|
219
223
|
cmd.join(' ')
|
|
220
224
|
end
|
|
@@ -60,7 +60,9 @@ module Inspec::Resources
|
|
|
60
60
|
p = :parse_html_result
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
query = verify_query(escaped_query)
|
|
64
|
+
query += ';' unless query.end_with?(';')
|
|
65
|
+
command = %{echo "#{opts}\n#{query}\nEXIT" | #{bin} "#{@user}"/"#{@password}"@#{@host}:#{@port}/#{@service}}
|
|
64
66
|
cmd = inspec.command(command)
|
|
65
67
|
|
|
66
68
|
out = cmd.stdout + "\n" + cmd.stderr
|
data/lib/resources/port.rb
CHANGED
|
@@ -504,15 +504,42 @@ module Inspec::Resources
|
|
|
504
504
|
}
|
|
505
505
|
end
|
|
506
506
|
|
|
507
|
+
def tokenize_ss_line(line)
|
|
508
|
+
# iproute-2.6.32-54.el6 output:
|
|
509
|
+
# Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
|
510
|
+
# udp UNCONN 0 0 *:111 *:* users:(("rpcbind",1123,6)) ino=8680 sk=ffff8801390cf7c0
|
|
511
|
+
# tcp LISTEN 0 128 *:22 *:* users:(("sshd",3965,3)) ino:11604 sk:ffff88013a3b5800
|
|
512
|
+
#
|
|
513
|
+
# iproute-2.6.32-20.el6 output:
|
|
514
|
+
# Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
|
|
515
|
+
# udp 0 0 *:111 *:* users:(("rpcbind",1123,6)) ino=8680 sk=ffff8801390cf7c0
|
|
516
|
+
# tcp 0 128 *:22 *:* users:(("sshd",3965,3)) ino:11604 sk:ffff88013a3b5800
|
|
517
|
+
tokens = line.split(/\s+/, 7)
|
|
518
|
+
if tokens[1] =~ /^\d+$/ # iproute-2.6.32-20
|
|
519
|
+
{
|
|
520
|
+
netid: tokens[0],
|
|
521
|
+
local_addr: tokens[3],
|
|
522
|
+
process_info: tokens[5],
|
|
523
|
+
}
|
|
524
|
+
else # iproute-2.6.32-54
|
|
525
|
+
{
|
|
526
|
+
netid: tokens[0],
|
|
527
|
+
local_addr: tokens[4],
|
|
528
|
+
process_info: tokens[6],
|
|
529
|
+
}
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
507
533
|
def parse_ss_line(line)
|
|
508
|
-
parsed = line.split(/\s+/, 7)
|
|
534
|
+
# parsed = line.split(/\s+/, 7)
|
|
535
|
+
parsed = tokenize_ss_line(line)
|
|
509
536
|
|
|
510
537
|
# ss only returns "tcp" and "udp" as the protocol. However, netstat would return
|
|
511
538
|
# "tcp6" and "udp6" as necessary. In order to maintain backward compatibility, we
|
|
512
539
|
# will manually modify the protocol value if the line we're parsing is an IPv6
|
|
513
540
|
# entry.
|
|
514
|
-
process_info = parsed[
|
|
515
|
-
protocol = parsed[
|
|
541
|
+
process_info = parsed[:process_info]
|
|
542
|
+
protocol = parsed[:netid]
|
|
516
543
|
protocol += '6' if process_info.include?('v6only:1')
|
|
517
544
|
return nil unless ALLOWED_PROTOCOLS.include?(protocol)
|
|
518
545
|
|
|
@@ -523,7 +550,7 @@ module Inspec::Resources
|
|
|
523
550
|
# 10.0.2.15:1234
|
|
524
551
|
# ::ffff:10.0.2.15:9300
|
|
525
552
|
# fe80::a00:27ff:fe32:ed09%enp0s3:9200
|
|
526
|
-
parsed_net_address = parsed[
|
|
553
|
+
parsed_net_address = parsed[:local_addr].match(/(\S+):(\*|\d+)$/)
|
|
527
554
|
return nil if parsed_net_address.nil?
|
|
528
555
|
host = parsed_net_address[1]
|
|
529
556
|
port = parsed_net_address[2]
|
|
@@ -556,7 +583,7 @@ module Inspec::Resources
|
|
|
556
583
|
# remove the "users:((" and "))" parts
|
|
557
584
|
# input: users:((\"nginx\",pid=583,fd=8),(\"nginx\",pid=582,fd=8),(\"nginx\",pid=580,fd=8),(\"nginx\",pid=579,fd=8))
|
|
558
585
|
# res: \"nginx\",pid=583,fd=8),(\"nginx\",pid=582,fd=8),(\"nginx\",pid=580,fd=8),(\"nginx\",pid=579,fd=8
|
|
559
|
-
process_list_match = parsed[
|
|
586
|
+
process_list_match = parsed[:process_info].match(/users:\(\((.+)\)\)/)
|
|
560
587
|
if process_list_match
|
|
561
588
|
# list entires are seperated by "," the braces can also be removed
|
|
562
589
|
# input: \"nginx\",pid=583,fd=8),(\"nginx\",pid=582,fd=8),(\"nginx\",pid=580,fd=8),(\"nginx\",pid=579,fd=8
|
data/lib/resources/xinetd.rb
CHANGED
|
@@ -53,15 +53,14 @@ module Inspec::Resources
|
|
|
53
53
|
return @contents[path] if @contents.key?(path)
|
|
54
54
|
file = inspec.file(path)
|
|
55
55
|
if !file.file?
|
|
56
|
-
|
|
56
|
+
raise Inspec::Exceptions::ResourceSkipped, "Can't find file: #{path}"
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return skip_resource "Can't read file \"#{path}\""
|
|
59
|
+
if file.content.nil? || file.content.empty?
|
|
60
|
+
raise Inspec::Exceptions::ResourceSkipped, "Can't read file: #{path}"
|
|
62
61
|
end
|
|
63
62
|
|
|
64
|
-
@contents[path]
|
|
63
|
+
@contents[path] = file.content
|
|
65
64
|
end
|
|
66
65
|
|
|
67
66
|
def read_params
|
|
@@ -69,7 +68,6 @@ module Inspec::Resources
|
|
|
69
68
|
flat_params = parse_xinetd(read_content)
|
|
70
69
|
# we need to map service data in order to use it with filtertable
|
|
71
70
|
params = { 'services' => {} }
|
|
72
|
-
|
|
73
71
|
# map services that were defined and map it to the service hash
|
|
74
72
|
flat_params.each do |k, v|
|
|
75
73
|
name = k[/^service (.+)$/, 1]
|
data/lib/utils/parser.rb
CHANGED
|
@@ -217,7 +217,7 @@ module XinetdParser
|
|
|
217
217
|
return [] if dir.nil?
|
|
218
218
|
|
|
219
219
|
unless inspec.file(dir).directory?
|
|
220
|
-
|
|
220
|
+
raise Inspec::Exceptions::ResourceSkipped, "Can't find folder: #{dir}"
|
|
221
221
|
end
|
|
222
222
|
|
|
223
223
|
files = inspec.command("find #{dir} -type f").stdout.split("\n")
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inspec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.45.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dominik Richter
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-11-
|
|
11
|
+
date: 2017-11-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: train
|
|
@@ -16,14 +16,20 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0.
|
|
19
|
+
version: '0.29'
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 0.29.1
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
27
|
- - "~>"
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0.
|
|
29
|
+
version: '0.29'
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 0.29.1
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
34
|
name: thor
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -690,7 +696,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
690
696
|
requirements:
|
|
691
697
|
- - ">="
|
|
692
698
|
- !ruby/object:Gem::Version
|
|
693
|
-
version: '2.
|
|
699
|
+
version: '2.3'
|
|
694
700
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
695
701
|
requirements:
|
|
696
702
|
- - ">="
|