NexposeRunner 0.0.8 → 0.0.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/lib/NexposeRunner/version.rb +1 -1
- data/lib/nexpose-runner/constants.rb +8 -1
- data/lib/nexpose-runner/scan.rb +7 -4
- data/spec/scan_spec.rb +18 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13adebf5deaf318e68db7a8965cd1aaddbe75003
|
4
|
+
data.tar.gz: 44ccda32d83f9aa9064fb26f63072935033b0812
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a98f08b066853cc72dac0b4378b0ab6a8dba85f70896528a6c338069822424b23dd4165a5beabbbc0e3fe22f735447abbbe8ff82414e6ee8d757db0eecc27457
|
7
|
+
data.tar.gz: 888df0a298044649828885df63b90c7596b2c853bb5f7a45ab520af376d9e03ca8d3c277c00c11d85ec142a7f99b1d6b412920c1490504f383aae8d33d3ae206
|
@@ -10,7 +10,14 @@ module CONSTANTS
|
|
10
10
|
VULNERABILITY_REPORT_NAME = 'nexpose-vulnerability-report.csv'
|
11
11
|
SOFTWARE_REPORT_NAME = 'nexpose-software-report.csv'
|
12
12
|
POLICY_REPORT_NAME = 'nexpose-policy-report.csv'
|
13
|
-
|
13
|
+
|
14
|
+
AUDIT_REPORT_FILE_NAME = 'nexpose-audit-report.html'
|
15
|
+
AUDIT_REPORT_NAME = 'audit-report'
|
16
|
+
AUDIT_REPORT_FORMAT = 'html'
|
17
|
+
|
18
|
+
XML_REPORT_FILE_NAME = 'nexpose-xml-report.xml'
|
19
|
+
XML_REPORT_NAME = 'audit-report'
|
20
|
+
XML_REPORT_FORMAT = 'raw-xml'
|
14
21
|
|
15
22
|
VULNERABILITY_REPORT_QUERY = 'SELECT DISTINCT
|
16
23
|
ip_address,
|
data/lib/nexpose-runner/scan.rb
CHANGED
@@ -36,7 +36,10 @@ module NexposeRunner
|
|
36
36
|
generate_csv(policies, CONSTANTS::POLICY_REPORT_NAME)
|
37
37
|
|
38
38
|
puts "Scan complete for #{run_details.site_name}, Generating Audit Report"
|
39
|
-
|
39
|
+
generate_template_report(nsc, site.id, CONSTANTS::AUDIT_REPORT_FILE_NAME, CONSTANTS::AUDIT_REPORT_NAME, CONSTANTS::AUDIT_REPORT_FORMAT)
|
40
|
+
|
41
|
+
puts "Scan complete for #{run_details.site_name}, Generating Xml Report"
|
42
|
+
generate_template_report(nsc, site.id, CONSTANTS::XML_REPORT_FILE_NAME, CONSTANTS::XML_REPORT_NAME, CONSTANTS::XML_REPORT_FORMAT)
|
40
43
|
|
41
44
|
[vulnerbilities, software, policies]
|
42
45
|
end
|
@@ -90,10 +93,10 @@ module NexposeRunner
|
|
90
93
|
CSV.parse(report_output.chomp, {:headers => :first_row})
|
91
94
|
end
|
92
95
|
|
93
|
-
def self.
|
94
|
-
adhoc = Nexpose::AdhocReportConfig.new(
|
96
|
+
def self.generate_template_report(nsc, site, file_name, report_name, report_format)
|
97
|
+
adhoc = Nexpose::AdhocReportConfig.new(report_name, report_format, site)
|
95
98
|
data = adhoc.generate(nsc)
|
96
|
-
File.open(
|
99
|
+
File.open(file_name, 'w') { |file| file.write(data) }
|
97
100
|
end
|
98
101
|
|
99
102
|
def self.generate_csv(csv_output, name)
|
data/spec/scan_spec.rb
CHANGED
@@ -209,7 +209,7 @@ describe 'nexpose-runner' do
|
|
209
209
|
|
210
210
|
describe 'it should create reports' do
|
211
211
|
it 'should generate, download, and parse an adhoc reports for Vulnerability, Software, and Policies' do
|
212
|
-
|
212
|
+
expect(Nexpose::AdhocReportConfig).to receive(:new)
|
213
213
|
.with(nil, 'sql')
|
214
214
|
.and_return(@mock_report)
|
215
215
|
|
@@ -217,6 +217,17 @@ describe 'nexpose-runner' do
|
|
217
217
|
expect_report_to_be_called_with(CONSTANTS::SOFTWARE_REPORT_NAME, CONSTANTS::SOFTWARE_REPORT_QUERY, @mock_software_report)
|
218
218
|
expect_report_to_be_called_with(CONSTANTS::POLICY_REPORT_NAME, CONSTANTS::POLICY_REPORT_QUERY, @mock_policy_report)
|
219
219
|
|
220
|
+
expect(Nexpose::AdhocReportConfig).to receive(:new)
|
221
|
+
.with(CONSTANTS::AUDIT_REPORT_NAME, CONSTANTS::AUDIT_REPORT_FORMAT, @mock_site_id)
|
222
|
+
.and_return(@mock_report)
|
223
|
+
|
224
|
+
expect(Nexpose::AdhocReportConfig).to receive(:new)
|
225
|
+
.with(CONSTANTS::XML_REPORT_NAME, CONSTANTS::XML_REPORT_FORMAT, @mock_site_id)
|
226
|
+
.and_return(@mock_report)
|
227
|
+
|
228
|
+
expect_template_report_to_be_called_with(CONSTANTS::AUDIT_REPORT_FILE_NAME)
|
229
|
+
expect_template_report_to_be_called_with(CONSTANTS::XML_REPORT_FILE_NAME)
|
230
|
+
|
220
231
|
expect {
|
221
232
|
NexposeRunner::Scan.start(@options)
|
222
233
|
}.to raise_error(StandardError, CONSTANTS::VULNERABILITY_FOUND_MESSAGE)
|
@@ -252,6 +263,11 @@ def expect_report_to_be_called_with(report_name, report_query, report_response)
|
|
252
263
|
expect(CSV).to receive(:open).with(report_name, 'w').ordered
|
253
264
|
end
|
254
265
|
|
266
|
+
def expect_template_report_to_be_called_with(report_file_name)
|
267
|
+
expect(@mock_report).to receive(:generate).with(@mock_nexpose_client).ordered
|
268
|
+
expect(File).to receive(:open).with(report_file_name, 'w').ordered
|
269
|
+
end
|
270
|
+
|
255
271
|
def get_mock_nexpose_client
|
256
272
|
mock_nexpose_client = double(Nexpose::Connection)
|
257
273
|
|
@@ -333,6 +349,7 @@ def get_mock_report
|
|
333
349
|
.and_return(mock_report)
|
334
350
|
|
335
351
|
allow(CSV).to receive(:open).with(any_args)
|
352
|
+
allow(File).to receive(:open).with(any_args)
|
336
353
|
|
337
354
|
mock_report
|
338
355
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: NexposeRunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Gibson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nexpose
|