class VisualizeAws

Public Class Methods

new(config, options={}) click to toggle source
# File lib/aws_security_viz.rb, line 13
def initialize(config, options={})
  @options = options
  @config = config
  provider = options[:source_file].nil? ? Ec2Provider.new(options) : JsonProvider.new(options)
  @security_groups = SecurityGroups.new(provider, config)
end

Public Instance Methods

build() click to toggle source
# File lib/aws_security_viz.rb, line 26
def build
  g = @config.obfuscate? ? DebugGraph.new(@config) : Graph.new(@config)
  @security_groups.each_with_index { |group, index|
    picker = ColorPicker.new(@options[:color])
    g.add_node(group.name, {vpc_id: group.vpc_id, group_id: group.group_id})
    group.traffic.each { |traffic|
      if traffic.ingress
        g.add_edge(traffic.from, traffic.to, :color => picker.color(index, traffic.ingress), :label => traffic.port_range)
      else
        g.add_edge(traffic.to, traffic.from, :color => picker.color(index, traffic.ingress), :label => traffic.port_range)
      end
    }
  }
  g
end
unleash(output_file) click to toggle source
# File lib/aws_security_viz.rb, line 20
def unleash(output_file)
  g = build
  g.filter(@options[:source_filter], @options[:target_filter])
  g.output(Renderer.pick(@options[:renderer], output_file, @config))
end