class Nexpose::ScanSummary

Object that represents a summary of a scan.

Attributes

message[R]

The reason the scan was stopped or failed, if applicable.

nodes[R]

Node statistics, including live, dead, filtered, and unresolved.

tasks[R]

Task statistics, including pending, active, and completed tasks.

vulnerabilities[R]

Vulnerability statistics, including statuses, severities, and counts.

Public Class Methods

new(scan_id, site_id, engine_id, status, start_time, end_time, message, tasks, nodes, vulnerabilities) click to toggle source

Constructor

# File lib/nexpose/scan.rb, line 554
def initialize(scan_id, site_id, engine_id, status, start_time, end_time, message, tasks, nodes, vulnerabilities)
  @scan_id         = scan_id
  @site_id         = site_id
  @engine_id       = engine_id
  @status          = status
  @start_time      = start_time
  @end_time        = end_time
  @message         = message
  @tasks           = tasks
  @nodes           = nodes
  @vulnerabilities = vulnerabilities
end
parse(xml) click to toggle source

Parse a response from a Nexpose console into a valid ScanSummary object.

@param [REXML::Document] xml XML document to parse. @return [ScanSummary] Scan summary represented by the XML.

# File lib/nexpose/scan.rb, line 572
def self.parse(xml)
  tasks = Tasks.parse(xml.elements['tasks'])
  nodes = Nodes.parse(xml.elements['nodes'])
  vulns = Vulnerabilities.parse(xml.attributes['scan-id'], xml)
  msg = xml.elements['message'] ? xml.elements['message'].text : nil

  # Start time can be empty in some error conditions.
  start_time = nil
  unless xml.attributes['startTime'] == ''
    start_time = DateTime.parse(xml.attributes['startTime'].to_s).to_time
    # Timestamp is UTC, but parsed as local time.
    start_time -= start_time.gmt_offset
  end

  # End time is often not present, since reporting on running scans.
  end_time = nil
  if xml.attributes['endTime']
    end_time = DateTime.parse(xml.attributes['endTime'].to_s).to_time
    # Timestamp is UTC, but parsed as local time.
    end_time -= end_time.gmt_offset
  end
  ScanSummary.new(xml.attributes['scan-id'].to_i,
                  xml.attributes['site-id'].to_i,
                  xml.attributes['engine-id'].to_i,
                  xml.attributes['status'],
                  start_time,
                  end_time,
                  msg,
                  tasks,
                  nodes,
                  vulns)
end