nexpose 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/nexpose/group.rb +36 -5
- metadata +2 -2
data/lib/nexpose/group.rb
CHANGED
@@ -59,16 +59,45 @@ module Nexpose
|
|
59
59
|
# Asset group configuration object containing Device details.
|
60
60
|
#
|
61
61
|
class AssetGroup < AssetGroupSummary
|
62
|
+
attr_accessor :name, :description, :id
|
62
63
|
|
63
64
|
# Array[Device] of devices associated with this asset group.
|
64
65
|
attr_accessor :devices
|
65
66
|
|
66
|
-
def initialize(
|
67
|
-
@
|
67
|
+
def initialize(name, desc, id = -1, risk = 0.0)
|
68
|
+
@name, @description, @id, @risk_score = name, desc, id, risk
|
68
69
|
@devices = []
|
69
70
|
end
|
70
71
|
|
71
|
-
|
72
|
+
def save(connection)
|
73
|
+
xml = %Q(<AssetGroupSaveRequest session-id='#{connection.session_id}'>)
|
74
|
+
xml << to_xml
|
75
|
+
xml << '</AssetGroupSaveRequest>'
|
76
|
+
response = connection.execute(xml)
|
77
|
+
if response.success
|
78
|
+
@id = response.attributes['group-id'] if @id < 0
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Get an XML representation of the group that is valid for a save request.
|
83
|
+
# Note that only name, description, and device ID information is accepted
|
84
|
+
# by a save request.
|
85
|
+
#
|
86
|
+
# @return [String] XML representation of the asset group.
|
87
|
+
#
|
88
|
+
def to_xml
|
89
|
+
xml = %Q(<AssetGroup id="#{@id}" name="#{@name}")
|
90
|
+
xml << %Q( description="#{@description}") if @description
|
91
|
+
xml << '>'
|
92
|
+
xml << '<Devices>'
|
93
|
+
@devices.each do |device|
|
94
|
+
xml << %Q(<device id="#{device.id}"/>)
|
95
|
+
end
|
96
|
+
xml << '</Devices>'
|
97
|
+
xml << '</AssetGroup>'
|
98
|
+
end
|
99
|
+
|
100
|
+
# Launch ad hoc scans against each group of assets per site.
|
72
101
|
#
|
73
102
|
# @param [Connection] connection Connection to console where asset group is configured.
|
74
103
|
# @return [Array[Hash[Fixnum, Fixnum]]] Array of scan ID and engine ID
|
@@ -96,13 +125,15 @@ module Nexpose
|
|
96
125
|
parse(r.res)
|
97
126
|
end
|
98
127
|
|
128
|
+
alias_method :get, :load
|
129
|
+
|
99
130
|
def self.parse(rexml)
|
100
131
|
return nil unless rexml
|
101
132
|
|
102
133
|
rexml.elements.each('//AssetGroup') do |group|
|
103
|
-
asset_group = new(group.attributes['
|
104
|
-
group.attributes['name'].to_s,
|
134
|
+
asset_group = new(group.attributes['name'].to_s,
|
105
135
|
group.attributes['description'].to_s,
|
136
|
+
group.attributes['id'].to_i,
|
106
137
|
group.attributes['riskscore'].to_f)
|
107
138
|
rexml.elements.each('//Devices/device') do |dev|
|
108
139
|
asset_group.devices << Device.new(dev.attributes['id'].to_i,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nexpose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-04-
|
14
|
+
date: 2013-04-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: librex
|