aws_security_viz 0.1.5 → 0.1.6.pre.alpha.pre.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 013f7c6e5a7f2fd2984161c206560108439a7ba8
4
- data.tar.gz: ca779e2929574efc55e771eff9397def34129c2e
2
+ SHA256:
3
+ metadata.gz: d94979958293ad824811f781685c98de06ddd8e3aa572d52da2a5dda436f8bd1
4
+ data.tar.gz: 78fae896841040518d0d20a5248db75048fbd86463cd1f43dd2f847bc789dd98
5
5
  SHA512:
6
- metadata.gz: cb3b21be3cabf46b232145c55395ad293a5b977ac9dad72c03f43fe0f3cb06541feefd5ed39b552a3e40e87f553cebf4cb5b7c01ea13c4632f693185ec6c9701
7
- data.tar.gz: 7d8cffdaf190807ed531fa9efa21b44875cff97ab275eb126ea702c396141ba86d6ff8d4ca43368e3542fcbda5fd26c671f6e7c4eb27cb40e6e79d5dc1a81559
6
+ metadata.gz: a471c6dc463303a8a49a0b4bcb195fb764ece04885734db090158ae10513a33343dd2acc448900904d604296c1d498dcdccaad5eb87a4cf887dd16a2c950e107
7
+ data.tar.gz: 788eb15b47e284314f520eac1a4d8d7fc5faaf4f118665f85a274a75fa758e5612e5d32a3434d608fa5f183c5de5165fea0b216607931cc11bf4140bf8311d63
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ language: ruby
3
3
  rvm:
4
4
  - 2.4.4
5
5
  - 2.3.4
6
- - 2.2.7
6
+ - 2.6.0
7
7
  - 2.5.1
8
8
 
9
9
  script: bundle exec rspec spec --tag '~integration'
data/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.1.6] - 2019-01-14
8
+ ### Added
9
+ - Dockerfile
10
+
11
+ ### Changed
12
+ - Replaced fog gem with aws-sdk-ec2
13
+ - Upgrade bundler to 2.x
14
+ - Removed unused dependencies
15
+
16
+ ### Fixed
17
+ - Issue with --color=true failing with exception due to change in Graphviz library.
18
+
19
+ ## [0.1.5] - 2018-10-10
20
+ ### Added
21
+ - Filter by VPC id
22
+ - Support for AWS session token
23
+ - Use rankdir with graphviz to improve layout
24
+
25
+ ### Changed
26
+ - Dependent trollop gem renamed to optimist
27
+ - Switched from ruby-graphviz to graphviz gem
28
+
7
29
  ## [0.1.4] - 2017-02-03
8
30
  ### Added
9
31
  - CHANGELOG.md
data/Dockerfile ADDED
@@ -0,0 +1,5 @@
1
+ FROM ruby:2.6-alpine
2
+ RUN apk add --update graphviz ttf-ubuntu-font-family
3
+ RUN gem install aws_security_viz --pre
4
+ WORKDIR /aws-security-viz
5
+ ENTRYPOINT ["/bin/sh"]
data/README.md CHANGED
@@ -49,6 +49,17 @@ To generate a web view
49
49
  * The json file name needs to be passed in as a html fragment identifier.
50
50
  * The generated graph can be viewed in a webserver e.g. http://localhost:3000/view.html#aws.json by using `python -m SimpleHTTPServer 3000` (python2) or `python -m http.server 3000` (python3)
51
51
 
52
+ ## DOCKER USAGE
53
+
54
+ If you don't want to install the dependencies and ruby libs you can execute aws-security-viz inside a docker container. To do so, follow these steps:
55
+
56
+ 1. Clone this repository, open it in a console.
57
+ 2. Build the docker container: `docker build -t sec-viz .`
58
+ 3. Run the container: `docker run -i --rm -t -p 3000:3000 -v $(pwd)/tmp:/aws-security-viz --name sec-viz sec-viz` (Description: `-i` interactive shell, `--rm` remove the container after usage, `-t` attach this terminal to it, `-p 3000:3000` we expose port 3000 for the HTTP server, `-v $(pwd)/tmp:aws-security-viz` mount tmp directory for generated artifacts, `-name sec-viz` the container will have the same name as the image we will start)
59
+ 4. Now you can use the tool as described in [usage](#USAGE). Make sure that you use the commands with `bundler exec ` as prefix. For example: `aws_security_viz -a your_aws_key -s your_aws_secret_key -f aws.json`.
60
+ 5. To start the web view, execute `ruby -run -e httpd -- -p 3000` in the container. You can open it with your local browser at `http://0.0.0.0:3000/`. There you can view the generated images and the graph. Use `Ctrl+C` to close the HTTP server.
61
+ 6. Terminate the docker container by typing `exit` in the console.
62
+
52
63
  ### Help
53
64
 
54
65
  ```
@@ -21,17 +21,15 @@ Gem::Specification.new do |s|
21
21
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
22
22
  s.require_paths = ['lib']
23
23
 
24
- s.add_development_dependency 'bundler', '~> 1.15'
24
+ s.add_development_dependency 'bundler', '~> 2.0.1'
25
25
  s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
26
26
  s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
27
27
 
28
28
  s.add_runtime_dependency 'graphviz', '~> 1.1', '>= 1.1.0'
29
- s.add_runtime_dependency 'fog-aws', '~> 2.0', '>= 2.0.1'
30
- s.add_runtime_dependency 'unf', '~> 0.1.4'
31
- s.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0'
32
29
  s.add_runtime_dependency 'optimist', '~> 3.0.0'
33
30
  s.add_runtime_dependency 'organic_hash', '~> 1.0', '>= 1.0.2'
34
31
  s.add_runtime_dependency 'rgl', '~> 0.5.3'
32
+ s.add_runtime_dependency 'aws-sdk-ec2', '~> 1.65.0'
35
33
 
36
34
  s.required_ruby_version = '>= 2.0.0'
37
35
  end
data/lib/color_picker.rb CHANGED
@@ -7,7 +7,7 @@ class ColorPicker
7
7
  end
8
8
  class NodeColors
9
9
  def color(index, ingress)
10
- GraphViz::Utils::Colors::COLORS.keys[index]
10
+ ColorPicker::COLORS[index % ColorPicker::COLORS.length]
11
11
  end
12
12
  end
13
13
  class DefaultColors
@@ -15,4 +15,231 @@ class ColorPicker
15
15
  ingress ? :blue : :red
16
16
  end
17
17
  end
18
+
19
+ COLORS = %w(
20
+ #00004c
21
+ #000080
22
+ #0000fb
23
+ #003a52
24
+ #0040cd
25
+ #0050b2
26
+ #005390
27
+ #007800
28
+ #007eff
29
+ #0096D8
30
+ #009917
31
+ #00B4AB
32
+ #00a6a6
33
+ #00cafe
34
+ #012456
35
+ #0298c3
36
+ #02f88c
37
+ #04133b
38
+ #0579aa
39
+ #078193
40
+ #0aa0ff
41
+ #0db7ed
42
+ #0e60e3
43
+ #101F1F
44
+ #118f9e
45
+ #120F14
46
+ #14253c
47
+ #178600
48
+ #185619
49
+ #198CE7
50
+ #199f4b
51
+ #1C3552
52
+ #1D222D
53
+ #1F1F1F
54
+ #1ac620
55
+ #1e4aec
56
+ #22228f
57
+ #244776
58
+ #28431f
59
+ #2ACCA8
60
+ #2F2530
61
+ #2b7489
62
+ #2c3e50
63
+ #302B6D
64
+ #315665
65
+ #341708
66
+ #348a34
67
+ #3572A5
68
+ #358a5b
69
+ #375eab
70
+ #37775b
71
+ #3A4E3A
72
+ #3D6117
73
+ #3F3F3F
74
+ #3F85AF
75
+ #3ac486
76
+ #3be133
77
+ #3d3c6e
78
+ #3d9970
79
+ #3fb68b
80
+ #403a40
81
+ #40d47e
82
+ #427819
83
+ #42f1f4
84
+ #438eff
85
+ #447265
86
+ #44a51c
87
+ #46390b
88
+ #499886
89
+ #4A76B8
90
+ #4B6BEF
91
+ #4B6C4B
92
+ #4C3023
93
+ #4F5D95
94
+ #4d41b1
95
+ #5232e7
96
+ #555555
97
+ #563d7c
98
+ #596706
99
+ #5A8164
100
+ #5B2063
101
+ #5a6986
102
+ #5c7611
103
+ #5e5086
104
+ #60B5CC
105
+ #62A8D6
106
+ #636746
107
+ #646464
108
+ #64C800
109
+ #64b970
110
+ #652B81
111
+ #6594b9
112
+ #6600cc
113
+ #665a4e
114
+ #6866fb
115
+ #6E4C13
116
+ #6a40fd
117
+ #6c616e
118
+ #6e4a7e
119
+ #701516
120
+ #7055b5
121
+ #74283c
122
+ #747faa
123
+ #7582D1
124
+ #776791
125
+ #7790B2
126
+ #77d9fb
127
+ #79aa7a
128
+ #7b9db4
129
+ #7e7eff
130
+ #7fa2a7
131
+ #800000
132
+ #814CCC
133
+ #82937f
134
+ #843179
135
+ #878787
136
+ #87AED7
137
+ #882B0F
138
+ #88562A
139
+ #88ccff
140
+ #89e051
141
+ #8a1267
142
+ #8dc63f
143
+ #8f0f8d
144
+ #8f14e9
145
+ #8fb200
146
+ #913960
147
+ #945db7
148
+ #946d57
149
+ #94B0C7
150
+ #990000
151
+ #999999
152
+ #99DA07
153
+ #9DC3FF
154
+ #9EEDFF
155
+ #9d5200
156
+ #A0AA87
157
+ #AA6746
158
+ #B0CE4E
159
+ #B34936
160
+ #B5314C
161
+ #B83998
162
+ #B9D9FF
163
+ #C1F12E
164
+ #C76F5B
165
+ #C7D7DC
166
+ #DA5B0B
167
+ #DAE1C2
168
+ #DBCA00
169
+ #E3F171
170
+ #E4E6F3
171
+ #E6EFBB
172
+ #E8274B
173
+ #EB8CEB
174
+ #F18E33
175
+ #FEFE00
176
+ #FF5000
177
+ #FFF4F3
178
+ #a270ba
179
+ #a3522f
180
+ #a54c4d
181
+ #a78649
182
+ #a9188d
183
+ #a957b0
184
+ #aa2afe
185
+ #adb2cb
186
+ #b07219
187
+ #b0b77e
188
+ #b2011d
189
+ #b2b7f8
190
+ #b30000
191
+ #b7e1f4
192
+ #b845fc
193
+ #ba595e
194
+ #c065db
195
+ #c22d40
196
+ #c4a79c
197
+ #c7a938
198
+ #c9df40
199
+ #cabbff
200
+ #cc0000
201
+ #cc0088
202
+ #cc9900
203
+ #cca760
204
+ #ccccff
205
+ #ccce35
206
+ #cd6400
207
+ #cdd0e3
208
+ #cf142b
209
+ #d4bec1
210
+ #d80074
211
+ #da291c
212
+ #dad8d8
213
+ #db5855
214
+ #db901e
215
+ #dbb284
216
+ #dc566d
217
+ #dce200
218
+ #dea584
219
+ #df7900
220
+ #dfa535
221
+ #e16737
222
+ #e34c26
223
+ #e4cc98
224
+ #e69f56
225
+ #ecdebe
226
+ #ed2cd6
227
+ #f0a9f0
228
+ #f1e05a
229
+ #f34b7d
230
+ #f3ca0a
231
+ #f50000
232
+ #f7ede0
233
+ #f97732
234
+ #fab738
235
+ #fb855d
236
+ #fbe5cd
237
+ #fcd7de
238
+ #ff0c5a
239
+ #ff2b2b
240
+ #ff6375
241
+ #ff7f7f
242
+ #ffac45
243
+ #fffaa0
244
+ )
18
245
  end
data/lib/provider/ec2.rb CHANGED
@@ -1,25 +1,21 @@
1
- require 'fog/aws'
1
+ require 'aws-sdk-ec2'
2
2
 
3
3
  class Ec2Provider
4
4
 
5
5
  def initialize(options)
6
6
  @options = options
7
7
  conn_opts = {
8
- region: options[:region]
9
- }
10
-
11
- conn_opts[:aws_access_key_id] = options[:access_key]
12
- conn_opts[:aws_secret_access_key] = options[:secret_key]
13
-
14
- if options[:session_token]
15
- conn_opts[:aws_session_token] = options[:session_token]
16
- end
8
+ region: options[:region],
9
+ access_key_id: options[:access_key],
10
+ secret_access_key: options[:secret_key],
11
+ session_token: options[:session_token]
12
+ }.delete_if {|k,v| v.nil?}
17
13
 
18
- @compute = Fog::Compute::AWS.new conn_opts
14
+ @client = Aws::EC2::Client.new(conn_opts)
19
15
  end
20
16
 
21
17
  def security_groups
22
- @compute.security_groups.reject { |sg|
18
+ @client.describe_security_groups.security_groups.reject { |sg|
23
19
  @options[:vpc_id] && sg.vpc_id != @options[:vpc_id]
24
20
  }.collect { |sg|
25
21
  Ec2::SecurityGroup.new(sg)
@@ -35,6 +31,10 @@ module Ec2
35
31
  @sg = sg
36
32
  end
37
33
 
34
+ def name
35
+ @sg.group_name
36
+ end
37
+
38
38
  def ip_permissions
39
39
  @sg.ip_permissions.collect { |ip|
40
40
  Ec2::IpPermission.new(ip)
@@ -54,25 +54,25 @@ module Ec2
54
54
  end
55
55
 
56
56
  def protocol
57
- @ip['ipProtocol']
57
+ @ip['ip_protocol']
58
58
  end
59
59
 
60
60
  def from
61
- @ip['fromPort']
61
+ @ip['from_port']
62
62
  end
63
63
 
64
64
  def to
65
- @ip['toPort']
65
+ @ip['to_port']
66
66
  end
67
67
 
68
68
  def ip_ranges
69
- @ip['ipRanges'].collect {|gp|
69
+ @ip['ip_ranges'].collect {|gp|
70
70
  Ec2::IpPermissionRange.new(gp)
71
71
  }
72
72
  end
73
73
 
74
74
  def groups
75
- @ip['groups'].collect {|gp|
75
+ @ip['user_id_group_pairs'].collect {|gp|
76
76
  Ec2::IpPermissionGroup.new(gp)
77
77
  }
78
78
  end
@@ -84,7 +84,7 @@ module Ec2
84
84
  end
85
85
 
86
86
  def cidr_ip
87
- @range['cidrIp']
87
+ @range['cidr_ip']
88
88
  end
89
89
 
90
90
  def to_str
@@ -98,7 +98,7 @@ module Ec2
98
98
  end
99
99
 
100
100
  def name
101
- @gp['groupName'] || @gp['groupId']
101
+ @gp['group_name'] || @gp['group_id']
102
102
  end
103
103
  end
104
104
 
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module AwsSecurityViz
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe ColorPicker do
4
+ context 'default picker' do
5
+ let(:picker) { ColorPicker.new(false) }
6
+
7
+ it 'should add default colors for edges' do
8
+ expect(picker.color(0, true)).to eq(:blue)
9
+ expect(picker.color(0, false)).to eq(:red)
10
+ end
11
+ end
12
+ context 'color picker' do
13
+ let(:picker) { ColorPicker.new(true) }
14
+
15
+ it 'should add default colors for edges' do
16
+ expect(picker.color(0, 'ignore')).to eq('#00004c')
17
+ expect(picker.color(10000, 'ignore')).to eq('#C76F5B')
18
+ end
19
+ end
20
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,18 +7,23 @@ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
7
7
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
8
8
 
9
9
  def group name, *ingress
10
- group = double("Group")
11
- allow(group).to receive(:ip_permissions).and_return(ingress)
12
- allow(group).to receive(:ip_permissions_egress).and_return([])
13
- allow(group).to receive(:name).and_return(name)
14
- allow(group).to receive(:group_id).and_return('some group')
15
- group
10
+ {group_name: name, group_id: 'some group', ip_permissions: ingress, ip_permissions_egress: []}
16
11
  end
17
12
 
18
13
  def group_ingress port, name
19
- {"groups"=>[{"userId"=>"userId", "groupId"=>"sg-groupId", "groupName"=>name}], "ipRanges"=>[], "ipProtocol"=>"tcp", "fromPort"=>port, "toPort"=>port}
14
+ {user_id_group_pairs:[{user_id: "userId", group_id: "sg-groupId", group_name: name}], ip_ranges:[], ip_protocol: "tcp", from_port: port, to_port: port}
20
15
  end
21
16
 
22
17
  def cidr_ingress port, cidr_ip
23
- {"groups"=>[], "ipRanges"=>[{"cidrIp"=> cidr_ip}], "ipProtocol"=>"tcp", "fromPort"=>port, "toPort"=>port}
18
+ {ip_ranges:[{cidr_ip: cidr_ip}], ip_protocol: "tcp", from_port: port, to_port: port}
24
19
  end
20
+
21
+ def stub_security_groups groups
22
+ Aws.config[:ec2] = {
23
+ stub_responses: {
24
+ describe_security_groups: {
25
+ security_groups: groups
26
+ }
27
+ }
28
+ }
29
+ end
@@ -17,16 +17,11 @@ class DummyRenderer
17
17
  end
18
18
 
19
19
  describe VisualizeAws do
20
- before do
21
- @ec2 = double(Fog::Compute)
22
- allow(Fog::Compute::AWS).to receive(:new).and_return(@ec2)
23
- end
24
-
25
20
  let(:visualize_aws) { VisualizeAws.new(AwsConfig.new) }
26
21
  let(:renderer) { DummyRenderer.new }
27
22
 
28
- it 'should add nodes, edges for each security group' do
29
- expect(@ec2).to receive(:security_groups).and_return([group('Remote ssh', group_ingress('22', 'My machine')), group('My machine')])
23
+ it 'should add nodes, edges for each security group' do
24
+ stub_security_groups([group('Remote ssh', group_ingress(22, 'My machine')), group('My machine')])
30
25
  graph = visualize_aws.build
31
26
 
32
27
  expect(graph.output(renderer)).to contain_exactly(
@@ -38,7 +33,7 @@ describe VisualizeAws do
38
33
 
39
34
  context 'groups' do
40
35
  it 'should add nodes for external security groups defined through ingress' do
41
- expect(@ec2).to receive(:security_groups).and_return([group('Web', group_ingress('80', 'ELB'))])
36
+ stub_security_groups([group('Web', group_ingress(80, 'ELB'))])
42
37
  graph = visualize_aws.build
43
38
 
44
39
  expect(graph.output(renderer)).to contain_exactly(
@@ -49,11 +44,11 @@ describe VisualizeAws do
49
44
  end
50
45
 
51
46
  it 'should add an edge for each security ingress' do
52
- expect(@ec2).to receive(:security_groups).and_return(
47
+ stub_security_groups(
53
48
  [
54
- group('App', group_ingress('80', 'Web'), group_ingress('8983', 'Internal')),
55
- group('Web', group_ingress('80', 'External')),
56
- group('Db', group_ingress('7474', 'App'))
49
+ group('App', group_ingress(80, 'Web'), group_ingress(8983, 'Internal')),
50
+ group('Web', group_ingress(80, 'External')),
51
+ group('Db', group_ingress(7474, 'App'))
57
52
  ])
58
53
  graph = visualize_aws.build
59
54
 
@@ -75,10 +70,10 @@ describe VisualizeAws do
75
70
  context 'cidr' do
76
71
 
77
72
  it 'should add an edge for each cidr ingress' do
78
- expect(@ec2).to receive(:security_groups).and_return(
73
+ stub_security_groups(
79
74
  [
80
- group('Web', group_ingress('80', 'External')),
81
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
75
+ group('Web', group_ingress(80, 'External')),
76
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
82
77
  ])
83
78
  graph = visualize_aws.build
84
79
 
@@ -96,10 +91,10 @@ describe VisualizeAws do
96
91
  end
97
92
 
98
93
  it 'should add map edges for cidr ingress' do
99
- expect(@ec2).to receive(:security_groups).and_return(
94
+ stub_security_groups(
100
95
  [
101
- group('Web', group_ingress('80', 'External')),
102
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
96
+ group('Web', group_ingress(80, 'External')),
97
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
103
98
  ])
104
99
  mapping = {'127.0.0.1/32' => 'Work'}
105
100
  mapping = CidrGroupMapping.new([], mapping)
@@ -121,9 +116,9 @@ describe VisualizeAws do
121
116
  end
122
117
 
123
118
  it 'should group mapped duplicate edges for cidr ingress' do
124
- expect(@ec2).to receive(:security_groups).and_return(
119
+ stub_security_groups(
125
120
  [
126
- group('ssh', cidr_ingress('22', '192.168.0.1/32'), cidr_ingress('22', '127.0.0.1/32'))
121
+ group('ssh', cidr_ingress(22, '192.168.0.1/32'), cidr_ingress(22, '127.0.0.1/32'))
127
122
  ])
128
123
  mapping = {'127.0.0.1/32' => 'Work', '192.168.0.1/32' => 'Work'}
129
124
  mapping = CidrGroupMapping.new([], mapping)
@@ -141,10 +136,10 @@ describe VisualizeAws do
141
136
 
142
137
  context "filter" do
143
138
  it 'include cidr which do not match the pattern' do
144
- expect(@ec2).to receive(:security_groups).and_return(
139
+ stub_security_groups(
145
140
  [
146
- group('Web', cidr_ingress('22', '127.0.0.1/32')),
147
- group('Db', cidr_ingress('22', '192.0.1.1/32'))
141
+ group('Web', cidr_ingress(22, '127.0.0.1/32')),
142
+ group('Db', cidr_ingress(22, '192.0.1.1/32'))
148
143
  ])
149
144
 
150
145
  opts = {:exclude => ['127.*']}
@@ -159,10 +154,10 @@ describe VisualizeAws do
159
154
  end
160
155
 
161
156
  it 'include groups which do not match the pattern' do
162
- expect(@ec2).to receive(:security_groups).and_return(
157
+ stub_security_groups(
163
158
  [
164
- group('Web', group_ingress('80', 'External')),
165
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
159
+ group('Web', group_ingress(80, 'External')),
160
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
166
161
  ])
167
162
 
168
163
  opts = {:exclude => ['D.*b', 'App']}
@@ -176,10 +171,10 @@ describe VisualizeAws do
176
171
  end
177
172
 
178
173
  it 'include derived groups which do not match the pattern' do
179
- expect(@ec2).to receive(:security_groups).and_return(
174
+ stub_security_groups(
180
175
  [
181
- group('Web', group_ingress('80', 'External')),
182
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
176
+ group('Web', group_ingress(80, 'External')),
177
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
183
178
  ])
184
179
 
185
180
  opts = {:exclude => ['App']}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_security_viz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6.pre.alpha.pre.134
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anay Nayak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-10 00:00:00.000000000 Z
11
+ date: 2019-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,128 +16,74 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: 2.0.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.15'
26
+ version: 2.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '12.0'
34
31
  - - ">="
35
32
  - !ruby/object:Gem::Version
36
33
  version: 12.0.0
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '12.0'
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: '12.0'
44
41
  - - ">="
45
42
  - !ruby/object:Gem::Version
46
43
  version: 12.0.0
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '12.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '3.5'
54
51
  - - ">="
55
52
  - !ruby/object:Gem::Version
56
53
  version: 3.5.0
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.5'
57
57
  type: :development
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '3.5'
64
61
  - - ">="
65
62
  - !ruby/object:Gem::Version
66
63
  version: 3.5.0
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.5'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: graphviz
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '1.1'
74
71
  - - ">="
75
72
  - !ruby/object:Gem::Version
76
73
  version: 1.1.0
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
74
  - - "~>"
82
75
  - !ruby/object:Gem::Version
83
76
  version: '1.1'
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 1.1.0
87
- - !ruby/object:Gem::Dependency
88
- name: fog-aws
89
- requirement: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '2.0'
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 2.0.1
97
77
  type: :runtime
98
78
  prerelease: false
99
79
  version_requirements: !ruby/object:Gem::Requirement
100
80
  requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.0'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 2.0.1
107
- - !ruby/object:Gem::Dependency
108
- name: unf
109
- requirement: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: 0.1.4
114
- type: :runtime
115
- prerelease: false
116
- version_requirements: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - "~>"
119
- - !ruby/object:Gem::Version
120
- version: 0.1.4
121
- - !ruby/object:Gem::Dependency
122
- name: json
123
- requirement: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: '2.1'
128
81
  - - ">="
129
82
  - !ruby/object:Gem::Version
130
- version: 2.1.0
131
- type: :runtime
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
83
+ version: 1.1.0
135
84
  - - "~>"
136
85
  - !ruby/object:Gem::Version
137
- version: '2.1'
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- version: 2.1.0
86
+ version: '1.1'
141
87
  - !ruby/object:Gem::Dependency
142
88
  name: optimist
143
89
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +132,20 @@ dependencies:
186
132
  - - "~>"
187
133
  - !ruby/object:Gem::Version
188
134
  version: 0.5.3
135
+ - !ruby/object:Gem::Dependency
136
+ name: aws-sdk-ec2
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 1.65.0
142
+ type: :runtime
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 1.65.0
189
149
  description: Provides a quick mechanism to visualize your EC2 security groups in multiple
190
150
  formats
191
151
  email: anayak007+rubygems@gmail.com
@@ -198,6 +158,7 @@ files:
198
158
  - ".travis.yml"
199
159
  - CHANGELOG.md
200
160
  - CODE_OF_CONDUCT.md
161
+ - Dockerfile
201
162
  - Gemfile
202
163
  - LICENSE.md
203
164
  - README.md
@@ -225,6 +186,7 @@ files:
225
186
  - lib/renderer/graphviz.rb
226
187
  - lib/renderer/json.rb
227
188
  - lib/version.rb
189
+ - spec/color_picker_spec.rb
228
190
  - spec/graph_filter_spec.rb
229
191
  - spec/integration/aws_expected.json
230
192
  - spec/integration/dummy.dot
@@ -248,16 +210,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
210
  version: 2.0.0
249
211
  required_rubygems_version: !ruby/object:Gem::Requirement
250
212
  requirements:
251
- - - ">="
213
+ - - ">"
252
214
  - !ruby/object:Gem::Version
253
- version: '0'
215
+ version: 1.3.1
254
216
  requirements: []
255
- rubyforge_project:
256
- rubygems_version: 2.5.2.3
217
+ rubygems_version: 3.0.2
257
218
  signing_key:
258
219
  specification_version: 4
259
220
  summary: Visualize your aws security groups
260
221
  test_files:
222
+ - spec/color_picker_spec.rb
261
223
  - spec/graph_filter_spec.rb
262
224
  - spec/integration/aws_expected.json
263
225
  - spec/integration/dummy.dot