Class: Nexpose::AssetGroup
- Inherits:
-
AssetGroupSummary
- Object
- AssetGroupSummary
- Nexpose::AssetGroup
- Defined in:
- lib/nexpose/group.rb
Overview
Asset group configuration object containing Device details.
Instance Attribute Summary collapse
-
#description ⇒ Object
Returns the value of attribute description.
-
#devices ⇒ Object
Array of devices associated with this asset group.
-
#id ⇒ Object
Returns the value of attribute id.
-
#name ⇒ Object
Returns the value of attribute name.
Attributes inherited from AssetGroupSummary
Class Method Summary collapse
-
.load(connection, id) ⇒ AssetGroup
Load an existing configuration from a Nexpose instance.
- .parse(xml) ⇒ Object
Instance Method Summary collapse
-
#initialize(name, desc, id = -1,, risk = 0.0) ⇒ AssetGroup
constructor
A new instance of AssetGroup.
-
#rescan_assets(connection) ⇒ Hash
Launch ad hoc scans against each group of assets per site.
- #save(connection) ⇒ Object
-
#to_xml ⇒ String
Get an XML representation of the group that is valid for a save request.
Methods inherited from AssetGroupSummary
Constructor Details
#initialize(name, desc, id = -1,, risk = 0.0) ⇒ AssetGroup
Returns a new instance of AssetGroup.
66 67 68 69 |
# File 'lib/nexpose/group.rb', line 66 def initialize(name, desc, id = -1, risk = 0.0) @name, @description, @id, @risk_score = name, desc, id, risk @devices = [] end |
Instance Attribute Details
#description ⇒ Object
Returns the value of attribute description.
61 62 63 |
# File 'lib/nexpose/group.rb', line 61 def description @description end |
#devices ⇒ Object
Array of devices associated with this asset group.
64 65 66 |
# File 'lib/nexpose/group.rb', line 64 def devices @devices end |
#id ⇒ Object
Returns the value of attribute id.
61 62 63 |
# File 'lib/nexpose/group.rb', line 61 def id @id end |
#name ⇒ Object
Returns the value of attribute name.
61 62 63 |
# File 'lib/nexpose/group.rb', line 61 def name @name end |
Class Method Details
.load(connection, id) ⇒ AssetGroup
Load an existing configuration from a Nexpose instance.
121 122 123 124 125 |
# File 'lib/nexpose/group.rb', line 121 def self.load(connection, id) xml = %(<AssetGroupConfigRequest session-id="#{connection.session_id}" group-id="#{id}"/>) r = APIRequest.execute(connection.url, xml) parse(r.res) end |
.parse(xml) ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/nexpose/group.rb', line 127 def self.parse(xml) return nil unless xml group = REXML::XPath.first(xml, 'AssetGroupConfigResponse/AssetGroup') asset_group = new(group.attributes['name'], group.attributes['description'], group.attributes['id'].to_i, group.attributes['riskscore'].to_f) group.elements.each('Devices/device') do |dev| asset_group.devices << Device.new(dev.attributes['id'].to_i, dev.attributes['address'], dev.attributes['site-id'].to_i, dev.attributes['riskfactor'].to_f, dev.attributes['riskscore'].to_f) end asset_group end |
Instance Method Details
#rescan_assets(connection) ⇒ Hash
Launch ad hoc scans against each group of assets per site.
103 104 105 106 107 108 109 110 111 |
# File 'lib/nexpose/group.rb', line 103 def rescan_assets(connection) sites_ids = @devices.map { |d| d.site_id }.uniq scans = {} sites_ids.each do |id| to_scan = @devices.select { |d| d.site_id == id } scans[id] = connection.scan_devices(to_scan) end scans end |
#save(connection) ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/nexpose/group.rb', line 71 def save(connection) xml = "<AssetGroupSaveRequest session-id='#{connection.session_id}'>" xml << to_xml xml << '</AssetGroupSaveRequest>' res = connection.execute(xml) @id = res.attributes['group-id'].to_i if res.success and @id < 1 end |
#to_xml ⇒ String
Get an XML representation of the group that is valid for a save request. Note that only name, description, and device ID information is accepted by a save request.
85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/nexpose/group.rb', line 85 def to_xml xml = %(<AssetGroup id="#{@id}" name="#{@name}") xml << %( description="#{@description}") if @description xml << '>' xml << '<Devices>' @devices.each do |device| xml << %(<device id="#{device.id}"/>) end xml << '</Devices>' xml << '</AssetGroup>' end |