class Nexpose::ScanSummary::Vulnerabilities

Value class for tracking vulnerability counts.

Attributes

disabled[R]
error[R]
not_vuln_exploit[R]
not_vuln_version[R]
other[R]
vuln_exploit[R]
vuln_potential[R]
vuln_version[R]

Public Class Methods

new(vuln_exploit, vuln_version, vuln_potential, not_vuln_exploit, not_vuln_version, error, disabled, other) click to toggle source
# File lib/nexpose/scan.rb, line 662
def initialize(vuln_exploit, vuln_version, vuln_potential, not_vuln_exploit, not_vuln_version, error, disabled, other)
  @vuln_exploit     = vuln_exploit
  @vuln_version     = vuln_version
  @vuln_potential   = vuln_potential
  @not_vuln_exploit = not_vuln_exploit
  @not_vuln_version = not_vuln_version
  @error            = error
  @disabled         = disabled
  @other            = other
end
parse(scan_id, rexml) click to toggle source

Parse REXML to Vulnerabilities object.

@param [FixNum] scan_id Scan ID to collect vulnerability data for. @param [REXML::Document] rexml XML document to parse. @return [Vulnerabilities] Vulnerability summary represented by the XML.

# File lib/nexpose/scan.rb, line 679
def self.parse(scan_id, rexml)
  return nil unless rexml
  map = {}
  rexml.elements.each("//ScanSummary[contains(@scan-id,'#{scan_id}')]/vulnerabilities") do |vuln|
    status = map[vuln.attributes['status']]
    if status && vuln.attributes['status'] =~ /^vuln-/
      status.add_severity(vuln.attributes['severity'].to_i, vuln.attributes['count'].to_i)
    else
      map[vuln.attributes['status']] = Status.new(vuln.attributes['severity'], vuln.attributes['count'].to_i)
    end
  end
  Vulnerabilities.new(map['vuln-exploit'],
                      map['vuln-version'],
                      map['vuln-potential'],
                      map['not-vuln-exploit'],
                      map['not-vuln-version'],
                      map['error'],
                      map['disabled'],
                      map['other'])
end