Class: Nexpose::AssetGroup
- Inherits:
-
AssetGroupSummary
- Object
- AssetGroupSummary
- Nexpose::AssetGroup
- Includes:
- Sanitize
- Defined in:
- lib/nexpose/group.rb
Overview
Asset group configuration object containing Device details.
Instance Attribute Summary collapse
-
#assets ⇒ Object
(also: #devices)
Array of devices associated with this asset group.
-
#description ⇒ Object
Returns the value of attribute description.
-
#id ⇒ Object
Returns the value of attribute id.
-
#name ⇒ Object
Returns the value of attribute name.
-
#tags ⇒ Object
Returns the value of attribute tags.
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 included from Sanitize
Methods inherited from AssetGroupSummary
Constructor Details
#initialize(name, desc, id = -1,, risk = 0.0) ⇒ AssetGroup
Returns a new instance of AssetGroup.
78 79 80 81 82 |
# File 'lib/nexpose/group.rb', line 78 def initialize(name, desc, id = -1, risk = 0.0) @name, @description, @id, @risk_score = name, desc, id, risk @assets = [] @tags = [] end |
Instance Attribute Details
#assets ⇒ Object Also known as: devices
Array of devices associated with this asset group.
74 75 76 |
# File 'lib/nexpose/group.rb', line 74 def assets @assets end |
#description ⇒ Object
Returns the value of attribute description.
71 72 73 |
# File 'lib/nexpose/group.rb', line 71 def description @description end |
#id ⇒ Object
Returns the value of attribute id.
71 72 73 |
# File 'lib/nexpose/group.rb', line 71 def id @id end |
#name ⇒ Object
Returns the value of attribute name.
71 72 73 |
# File 'lib/nexpose/group.rb', line 71 def name @name end |
#tags ⇒ Object
Returns the value of attribute tags.
71 72 73 |
# File 'lib/nexpose/group.rb', line 71 def @tags end |
Class Method Details
.load(connection, id) ⇒ AssetGroup
Load an existing configuration from a Nexpose instance.
139 140 141 142 143 |
# File 'lib/nexpose/group.rb', line 139 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
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/nexpose/group.rb', line 145 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.assets << 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 group.elements.each('Tags/Tag') do |tag| asset_group. << TagSummary.parse_xml(tag) end asset_group end |
Instance Method Details
#rescan_assets(connection) ⇒ Hash
Launch ad hoc scans against each group of assets per site.
121 122 123 124 125 126 127 128 129 |
# File 'lib/nexpose/group.rb', line 121 def rescan_assets(connection) sites_ids = @assets.map { |d| d.site_id }.uniq scans = {} sites_ids.each do |site_id| to_scan = @assets.select { |d| d.site_id == site_id } scans[site_id] = connection.scan_devices(to_scan) end scans end |
#save(connection) ⇒ Object
84 85 86 87 88 89 90 |
# File 'lib/nexpose/group.rb', line 84 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 asset ID information is accepted by a save request.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/nexpose/group.rb', line 98 def to_xml xml = %(<AssetGroup id="#{@id}" name="#{replace_entities(@name)}") xml << %( description="#{replace_entities(@description)}") if @description xml << '>' xml << '<Devices>' @assets.each do |asset| xml << %(<device id="#{asset.id}"/>) end xml << '</Devices>' xml << '<Tags>' @tags.each do |tag| xml << tag.as_xml.to_s end xml << '</Tags>' xml << '</AssetGroup>' end |