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(rexml) ⇒ Object
Instance Method Summary collapse
-
#initialize(name, desc, id = -1,, risk = 0.0) ⇒ AssetGroup
constructor
A new instance of AssetGroup.
-
#rescan_assets(connection) ⇒ Array[Hash[Fixnum, Fixnum]]
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.
67 68 69 70 |
# File 'lib/nexpose/group.rb', line 67 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.
62 63 64 |
# File 'lib/nexpose/group.rb', line 62 def description @description end |
#devices ⇒ Object
Array of devices associated with this asset group.
65 66 67 |
# File 'lib/nexpose/group.rb', line 65 def devices @devices end |
#id ⇒ Object
Returns the value of attribute id.
62 63 64 |
# File 'lib/nexpose/group.rb', line 62 def id @id end |
#name ⇒ Object
Returns the value of attribute name.
62 63 64 |
# File 'lib/nexpose/group.rb', line 62 def name @name end |
Class Method Details
.load(connection, id) ⇒ AssetGroup
Load an existing configuration from a Nexpose instance.
122 123 124 125 126 |
# File 'lib/nexpose/group.rb', line 122 def self.load(connection, id) r = APIRequest.execute(connection.url, %Q(<AssetGroupConfigRequest session-id="#{connection.session_id}" group-id="#{id}"/>)) parse(r.res) end |
.parse(rexml) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/nexpose/group.rb', line 130 def self.parse(rexml) return nil unless rexml rexml.elements.each('//AssetGroup') do |group| asset_group = new(group.attributes['name'].to_s, group.attributes['description'].to_s, group.attributes['id'].to_i, group.attributes['riskscore'].to_f) rexml.elements.each('//Devices/device') do |dev| asset_group.devices << Device.new(dev.attributes['id'].to_i, dev.attributes['address'].to_s, dev.attributes['site-id'].to_i, dev.attributes['riskfactor'].to_f, dev.attributes['riskscore'].to_f) end return asset_group end end |
Instance Method Details
#rescan_assets(connection) ⇒ Array[Hash[Fixnum, Fixnum]]
Launch ad hoc scans against each group of assets per site.
106 107 108 109 110 111 112 113 114 |
# File 'lib/nexpose/group.rb', line 106 def rescan_assets(connection) sites_ids = @devices.collect { |d| d.site_id }.uniq scans = [] sites_ids.each do |id| dev_ids = @devices.select { |d| d.site_id == id }.map { |d| d.id } scans << connection.site_device_scan_start(id, dev_ids).merge(:site_id => id) end scans end |
#save(connection) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/nexpose/group.rb', line 72 def save(connection) xml = %Q(<AssetGroupSaveRequest session-id='#{connection.session_id}'>) xml << to_xml xml << '</AssetGroupSaveRequest>' response = connection.execute(xml) if response.success @id = response.attributes['group-id'] if @id < 0 end 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.
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/nexpose/group.rb', line 88 def to_xml xml = %Q(<AssetGroup id="#{@id}" name="#{@name}") xml << %Q( description="#{@description}") if @description xml << '>' xml << '<Devices>' @devices.each do |device| xml << %Q(<device id="#{device.id}"/>) end xml << '</Devices>' xml << '</AssetGroup>' end |