Class: Nexpose::AssetGroup

Inherits:
AssetGroupSummary show all
Defined in:
lib/nexpose/group.rb

Overview

Asset group configuration object containing Device details.

Instance Attribute Summary collapse

Attributes inherited from AssetGroupSummary

#description, #id, #name, #risk_score

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AssetGroupSummary

#delete

Constructor Details

#initialize(id, name, desc, risk) ⇒ AssetGroup

Returns a new instance of AssetGroup.



66
67
68
69
# File 'lib/nexpose/group.rb', line 66

def initialize(id, name, desc, risk)
  @id, @name, @description, @risk_score = id, name, desc, risk
  @devices = []
end

Instance Attribute Details

#devicesObject

Array of devices associated with this asset group.



64
65
66
# File 'lib/nexpose/group.rb', line 64

def devices
  @devices
end

Class Method Details

.load(connection, id) ⇒ AssetGroup

Load an existing configuration from a Nexpose instance.

Parameters:

  • connection (Connection)

    Connection to console where asset group is configured.

  • id (Fixnum)

    Asset group ID of an existing group.

Returns:

  • (AssetGroup)

    Asset group configuration loaded from a Nexpose console.



93
94
95
96
97
# File 'lib/nexpose/group.rb', line 93

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



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/nexpose/group.rb', line 99

def self.parse(rexml)
  return nil unless rexml

  rexml.elements.each('//AssetGroup') do |group|
    asset_group = new(group.attributes['id'].to_i,
                      group.attributes['name'].to_s,
                      group.attributes['description'].to_s,
                      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 adhoc scans against each group of assets per site.

Parameters:

  • connection (Connection)

    Connection to console where asset group is configured.

Returns:

  • (Array[Hash[Fixnum, Fixnum]])

    Array of scan ID and engine ID pairs for each scan launched.



77
78
79
80
81
82
83
84
85
# File 'lib/nexpose/group.rb', line 77

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