class Risu::Graphs::TopVulnGraph

TopVulnGraph

TopVulnGraph

Public Instance Methods

graph() click to toggle source
# File lib/risu/graphs/top_vuln_graph.rb, line 28
                  def graph
  g = Gruff::Bar.new(GRAPH_WIDTH)
  g.title = sprintf "Top 10 Hosts with Notable Findings Count"
  g.sort = false
  g.marker_count = 1
  g.theme = {
    :colors => Risu::GRAPH_COLORS,
    :background_colors => %w(white white)
  }

  Item.risks_by_host(limit).to_a.each do |item|
    ip = Host.find_by_id(item.host_id).name
    count = Item.where(:host_id => item.host_id).where(:severity => 4).count

    if count > 0
      g.data(ip, count)
    end
  end

  StringIO.new(g.to_blob)
end
graph_text() click to toggle source
# File lib/risu/graphs/top_vuln_graph.rb, line 50
def graph_text
end
has_data?() click to toggle source

@TODO comments

# File lib/risu/graphs/windows_os_graph.rb, line 109
def has_data?
  nt = Host.os_windows_nt.to_a.size
  w2k = Host.os_windows_2k.to_a.size
  xp = Host.os_windows_xp.to_a.size
  w2k3 = Host.os_windows_2k3.to_a.size
  vista = Host.os_windows_vista.to_a.size
  w2k8 = Host.os_windows_2k8.to_a.size
  w2k12 = Host.os_windows_2k12.to_a.size
  w7 = Host.os_windows_7.to_a.size
  w8 = Host.os_windows_8.to_a.size
  other = (Host.os_windows.os_windows_other).to_a.size

  if nt == 0 && w2k == 0 && xp == 0 && w2k3 == 0 && vista == 0 && w2k8 == 0 && w2k12 == 0 && w7 == 0 && w8 == 0 && other == 0
    return false
  else
    return true
  end
end
text() click to toggle source
# File lib/risu/graphs/windows_os_graph.rb, line 63
def text
  nt = Host.os_windows_nt.to_a.count
  w2k = Host.os_windows_2k.to_a.count
  xp = Host.os_windows_xp.to_a.count
  w2k3 = Host.os_windows_2k3.to_a.count
  vista = Host.os_windows_vista.to_a.count
  w2k8 = Host.os_windows_2k8.to_a.count
  w2k12 = Host.os_windows_2k12.to_a.count
  w7 = Host.os_windows_7.to_a.count
  w8 = Host.os_windows_8.to_a.count
  other = (Host.os_windows.os_windows_other).to_a.count

  windows_os_count = nt + w2k + xp + w2k3 + vista + w7 + w8 + w2k8 + w2k12 + other

  nt_percent = (nt.to_f / windows_os_count.to_f) * 100
  w2k_percent = (w2k.to_f / windows_os_count.to_f) * 100
  xp_percent = (xp.to_f / windows_os_count.to_f) * 100
  w2k3_percent = (w2k3.to_f / windows_os_count.to_f) * 100
  vista_percent = (vista.to_f / windows_os_count.to_f) * 100

  w2k8_percent = (w2k8.to_f / windows_os_count.to_f) * 100
  w7_percent = (w7.to_f / windows_os_count.to_f) * 100
  w8_percent = (w8.to_f / windows_os_count.to_f) * 100
  w2k12_percent = (w2k12.to_f / windows_os_count.to_f) * 100

  text = "This graph shows the percentage of the different Microsoft Windows based operating systems " +
  "found on the #{Report.title} network.\n\n"

  text << "#{nt_percent.round.to_i}% of the network is Windows NT. " if nt_percent >= 1
  text << "#{w2k_percent.round.to_i}% of the network is Windows 2000. " if w2k_percent >= 1
  text << "#{xp_percent.round.to_i}% of the network is Windows XP. " if xp_percent >= 1
  text << "#{w2k3_percent.round.to_i}% of the network is Windows Server 2003. " if w2k3_percent >= 1
  text << "#{vista_percent.round.to_i}% of the network is Windows Vista. " if vista_percent >= 1
  text << "#{w2k8_percent.round.to_i}% of the network is Windows Server 2008. " if w2k8_percent >= 1
  text << "#{w7_percent.round.to_i}% of the network is Windows 7. " if w7_percent >= 1
  text << "#{w8_percent.round.to_i}% of the network is Windows 8. " if w8_percent >= 1
  text << "#{w2k12_percent.round.to_i}% of the network is Windows Server 20012. " if w2k12_percent >= 1

  text << "\n\n" << unsupported_os_windows if nt > 0 or w2k > 0

  return text
end