Class: VisualizeAws

Inherits:
Object
  • Object
show all
Defined in:
lib/aws_security_viz.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, options = {}) ⇒ VisualizeAws

Returns a new instance of VisualizeAws.



13
14
15
16
17
18
# 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

Instance Method Details

#buildObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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) ⇒ Object



20
21
22
23
24
# 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