openvas-cli 0.2.7 → 0.2.8
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.
- data/VERSION +1 -1
- data/lib/openvas-cli/vas_report.rb +3 -3
- data/lib/openvas-cli/vas_result.rb +16 -10
- data/openvas-cli.gemspec +2 -2
- data/spec/openvas-cli/vas_report_spec.rb +33 -7
- data/spec/openvas-cli/vas_result_spec.rb +7 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
@@ -16,15 +16,15 @@ module OpenvasCli
|
|
16
16
|
# reports.
|
17
17
|
# === Options:
|
18
18
|
# [:report_id => [report_id]] Pulls a specific +report_id+. If the id provided is bogus, an empty set is returned.
|
19
|
-
# [:
|
19
|
+
# [:levels => [array_of_filter_symbols]] Filters the report results by severity. Valid symbols are: [:high, :medium, :low, :log, :deubg].
|
20
20
|
# [:sort => [sort_field]] Sorts the report by the given field. Possible values are +:task_name+, +:started_at+. defaults to +:started_at+
|
21
21
|
# [:sort_order => [:ascending, :descending]] Order of sort. Defaults to :descending.
|
22
22
|
def self.get_all(options={})
|
23
23
|
params = {}
|
24
24
|
params[:report_id] = options[:id] if options[:id]
|
25
|
-
if options[:
|
25
|
+
if options[:levels]
|
26
26
|
params[:levels] = ""
|
27
|
-
options[:
|
27
|
+
options[:levels].each { |f|
|
28
28
|
case f
|
29
29
|
when :high
|
30
30
|
params[:levels] += 'h'
|
@@ -9,13 +9,15 @@ module OpenvasCli
|
|
9
9
|
validates :id, :presence=>true, :UUID=>true
|
10
10
|
|
11
11
|
def self.get_by_id(id)
|
12
|
-
|
12
|
+
get_all(:id => id)[0]
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.get_all(options = {})
|
16
16
|
options[:sort_by] ||= :threat
|
17
17
|
|
18
18
|
params = {:overrides => 0, :notes => 0}
|
19
|
+
|
20
|
+
params[:result_id] = options[:id] if options[:id]
|
19
21
|
if options[:task_id]
|
20
22
|
params[:task_id] = options[:task_id]
|
21
23
|
params[:apply_overrides] = 1 if options[:apply_overrides]
|
@@ -41,17 +43,21 @@ module OpenvasCli
|
|
41
43
|
req = Nokogiri::XML::Builder.new { |xml|
|
42
44
|
xml.get_results(params)
|
43
45
|
}
|
44
|
-
xml = connection.send_receive(req.doc)
|
45
46
|
|
46
47
|
results = {}
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
48
|
+
|
49
|
+
begin
|
50
|
+
xml = connection.send_receive(req.doc)
|
51
|
+
xml.xpath("//result").each { |xr|
|
52
|
+
id = extract_value_from("@id", xr)
|
53
|
+
threat = extract_value_from("threat", xr)
|
54
|
+
if (levels.empty? || levels.include?(threat)) && results.has_key?(id) == false
|
55
|
+
res = parse_result_node(xr, options[:task_id])
|
56
|
+
results[res.result_id] = res
|
57
|
+
end
|
58
|
+
}
|
59
|
+
rescue VasExceptions::CommandException => e
|
60
|
+
end
|
55
61
|
|
56
62
|
ret = results.values
|
57
63
|
|
data/openvas-cli.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{openvas-cli}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Reed Swenson"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-07}
|
13
13
|
s.description = %q{A full ruby implementation of the OpenVAS OMP (version 2.0) protocol.}
|
14
14
|
s.email = %q{fleureed@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -39,7 +39,7 @@ module OpenvasCli
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should filter the results' do
|
42
|
-
all = VasReport.get_all(:
|
42
|
+
all = VasReport.get_all(:levels => [:high])
|
43
43
|
|
44
44
|
all.each { |report|
|
45
45
|
report.results.each{ |result|
|
@@ -47,7 +47,7 @@ module OpenvasCli
|
|
47
47
|
}
|
48
48
|
}
|
49
49
|
|
50
|
-
all = VasReport.get_all(:
|
50
|
+
all = VasReport.get_all(:levels => [:log])
|
51
51
|
|
52
52
|
all.each { |report|
|
53
53
|
report.results.each{ |result|
|
@@ -55,7 +55,7 @@ module OpenvasCli
|
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
58
|
-
all = VasReport.get_all(:
|
58
|
+
all = VasReport.get_all(:levels => [:medium, :debug, :low])
|
59
59
|
|
60
60
|
all.each { |report|
|
61
61
|
report.results.each{ |result|
|
@@ -72,13 +72,39 @@ module OpenvasCli
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'default sort should be by started_at descending' do
|
75
|
-
|
75
|
+
last_date = nil
|
76
|
+
VasReport.get_all.each { |r|
|
77
|
+
last_date = r.started_at unless last_date
|
78
|
+
r.started_at.should <= last_date
|
79
|
+
last_date = r.started_at
|
80
|
+
}
|
76
81
|
end
|
77
82
|
|
78
|
-
it 'just adding :sort_order => :ascending should reverse the started_at sort'
|
83
|
+
it 'just adding :sort_order => :ascending should reverse the started_at sort' do
|
84
|
+
last_date = nil
|
85
|
+
VasReport.get_all(:sort_order => :ascending).each { |r|
|
86
|
+
last_date = r.started_at unless last_date
|
87
|
+
r.started_at.should >= last_date
|
88
|
+
last_date = r.started_at
|
89
|
+
}
|
90
|
+
end
|
79
91
|
|
80
|
-
it 'should sort by task_name (default :descending)'
|
92
|
+
it 'should sort by task_name (default :descending)' do
|
93
|
+
last_name = nil
|
94
|
+
VasReport.get_all(:sort => :task_name).each { |r|
|
95
|
+
last_name = r.started_at unless last_name
|
96
|
+
r.started_at.should <= last_name
|
97
|
+
last_date = r.started_at
|
98
|
+
}
|
99
|
+
end
|
81
100
|
|
82
|
-
it 'should sort by :task_name, :ascending'
|
101
|
+
it 'should sort by :task_name, :ascending' do
|
102
|
+
last_name = nil
|
103
|
+
VasReport.get_all(:sort => :task_name, :sort_order => :ascending).each { |r|
|
104
|
+
last_name = r.started_at unless last_name
|
105
|
+
r.started_at.should >= last_name
|
106
|
+
last_date = r.started_at
|
107
|
+
}
|
108
|
+
end
|
83
109
|
end
|
84
110
|
end
|
@@ -136,5 +136,12 @@ module OpenvasCli
|
|
136
136
|
result = VasResult.get_all(:task_id => VasTask.get_all.choice.id).choice
|
137
137
|
result.destroy.should be true
|
138
138
|
end
|
139
|
+
|
140
|
+
it 'should return a result by ID' do
|
141
|
+
result = VasResult.get_all(:task_id => VasTask.get_all.choice.id).choice
|
142
|
+
|
143
|
+
nr = VasResult.get_by_id(result.id)
|
144
|
+
nr.should_not be nil
|
145
|
+
end
|
139
146
|
end
|
140
147
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openvas-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 8
|
10
|
+
version: 0.2.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Reed Swenson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-07 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|