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) ⇒ 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.
68 69 70 71 |
# File 'lib/nexpose/group.rb', line 68 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.
63 64 65 |
# File 'lib/nexpose/group.rb', line 63 def description @description end |
#devices ⇒ Object
Array of devices associated with this asset group.
66 67 68 |
# File 'lib/nexpose/group.rb', line 66 def devices @devices end |
#id ⇒ Object
Returns the value of attribute id.
63 64 65 |
# File 'lib/nexpose/group.rb', line 63 def id @id end |
#name ⇒ Object
Returns the value of attribute name.
63 64 65 |
# File 'lib/nexpose/group.rb', line 63 def name @name end |
Class Method Details
.load(connection, id) ⇒ AssetGroup
Load an existing configuration from a Nexpose instance.
123 124 125 126 127 |
# File 'lib/nexpose/group.rb', line 123 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(xml) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/nexpose/group.rb', line 131 def self.parse(xml) puts xml return nil unless xml group = REXML::XPath.first(xml, 'AssetGroupConfigResponse/AssetGroup') asset_group = new(group.attributes['name'].to_s, group.attributes['description'].to_s, 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'].to_s, 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) ⇒ Array[Hash[Fixnum, Fixnum]]
Launch ad hoc scans against each group of assets per site.
107 108 109 110 111 112 113 114 115 |
# File 'lib/nexpose/group.rb', line 107 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
73 74 75 76 77 78 79 80 81 |
# File 'lib/nexpose/group.rb', line 73 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.
89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/nexpose/group.rb', line 89 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 |