Sha256: f461b07ebb2b447a62c6a01bf34add2e717e6575f99120d4c2d2d521e52118ca

Contents?: true

Size: 1.71 KB

Versions: 20

Compression:

Stored size: 1.71 KB

Contents

require 'fog/aws'

class Ec2Provider

  def initialize(options)
    @options = options
    conn_opts = {
      region: options[:region]
    }

    conn_opts[:aws_access_key_id] = options[:access_key]
    conn_opts[:aws_secret_access_key] = options[:secret_key]

    if options[:session_token]
      conn_opts[:aws_session_token] = options[:session_token]
    end

    @compute = Fog::Compute::AWS.new conn_opts
  end

  def security_groups
    @compute.security_groups.reject { |sg|
      @options[:vpc_id] && sg.vpc_id != @options[:vpc_id]
    }.collect { |sg|
      Ec2::SecurityGroup.new(sg)
    }
  end
end

module Ec2
  class SecurityGroup
    extend Forwardable
    def_delegators :@sg, :name, :group_id
    def initialize(sg)
      @sg = sg
    end

    def ip_permissions
      @sg.ip_permissions.collect { |ip|
        Ec2::IpPermission.new(ip)
      }
    end

    def ip_permissions_egress
      @sg.ip_permissions_egress.collect { |ip|
        Ec2::IpPermission.new(ip)
      }
    end
  end

  class IpPermission
    def initialize(ip)
      @ip = ip
    end

    def protocol
      @ip['ipProtocol']
    end

    def from
      @ip['fromPort']
    end

    def to
      @ip['toPort']
    end

    def ip_ranges
      @ip['ipRanges'].collect {|gp|
        Ec2::IpPermissionRange.new(gp)
      }
    end

    def groups
      @ip['groups'].collect {|gp|
        Ec2::IpPermissionGroup.new(gp)
      }
    end
  end

  class IpPermissionRange
    def initialize(range)
      @range = range
    end

    def cidr_ip
      @range['cidrIp']
    end

    def to_str
      cidr_ip
    end
  end

  class IpPermissionGroup
    def initialize(gp)
      @gp = gp
    end

    def name
      @gp['groupName'] || @gp['groupId']
    end
  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
aws_security_viz-0.1.5.pre.alpha.pre.112 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.111 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.110 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.109 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.108 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.107 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.106 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.103 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.102 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.101 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.100 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.99 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.97 lib/provider/ec2.rb
aws_security_viz-0.1.5 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.95 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.94 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.93 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.91 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.90 lib/provider/ec2.rb
aws_security_viz-0.1.5.pre.alpha.pre.89 lib/provider/ec2.rb