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

Sign up to get free protection for your applications and to get access to all the features.
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