awful 0.0.145 → 0.0.146

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
2
  SHA1:
3
- metadata.gz: 8918e2e258dfa5fd223ed731e84d12e47a0a2e53
4
- data.tar.gz: 29940f711e894a9bff521aceca04688c3d2956c4
3
+ metadata.gz: 67e76830d6ca11e1b34442199e55587c816dfe61
4
+ data.tar.gz: f75d5135c848e592dffa10100307a93ab8134165
5
5
  SHA512:
6
- metadata.gz: 00cc479ade9ac596d3ff8f9a16c0ffffbcbfa5245d71ddc48fe6bda9e7df3b4ed3343aad75e283611c7cd9958a521558ee2244c5dd09b17e9126a704dd97113f
7
- data.tar.gz: b4506f3b63b4531938994e00f39d8545a5c272ad320d3328524547c12055b3f55fd01abd12f278eaeeb3e37fa110bbaf1822ded9879d097f5b8499d631aad03a
6
+ metadata.gz: 48860bfd4fdda8282da19281ed40215b7e253067c32149b973545c2cc9948e71aabe553e6b9da3d546eaf65b43b7194170ca5e7641e4ac752541a405414f9b33
7
+ data.tar.gz: eedaaa3d216ca79f26e3f763a00511e4141dd9bf1862d82812ca12963a157d34000b9851a54e74cb5f68117c9e00c4bcc48e3a262f7205131f7eeb99d602307d
data/bin/waf ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/ruby
2
+ #-*- mode: ruby; -*-
3
+
4
+ require 'awful'
5
+ require 'awful/waf'
6
+ require 'awful/waf_acl'
7
+ require 'awful/waf_rule'
8
+ require 'awful/waf_ipset'
9
+
10
+ Awful::WAF::Base.start(ARGV)
@@ -1,3 +1,3 @@
1
1
  module Awful
2
- VERSION = '0.0.145'
2
+ VERSION = '0.0.146'
3
3
  end
@@ -0,0 +1,40 @@
1
+ module Awful
2
+ module WAF
3
+
4
+ class Base < Cli
5
+ no_commands do
6
+ def waf
7
+ @_waf ||= Aws::WAF::Client.new
8
+ end
9
+
10
+ ## boilerplate for handling paging in all list_ methods
11
+ def list_thing(thing)
12
+ next_marker = nil
13
+ things = []
14
+ loop do
15
+ response = waf.send("list_#{thing}", next_marker: next_marker, limit: 10)
16
+ things += response.send(thing)
17
+ next_marker = response.next_marker
18
+ break unless next_marker
19
+ end
20
+ things
21
+ end
22
+
23
+ def change_token
24
+ waf.get_change_token.change_token
25
+ end
26
+ end
27
+
28
+ desc 'change [ID]', 'get or view change token'
29
+ def change(token = nil)
30
+ if token
31
+ waf.get_change_token_status(change_token: token).change_token_status.output(&method(:puts))
32
+ else
33
+ waf.get_change_token.change_token.output(&method(:puts))
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ module Awful
2
+ module Short
3
+ def waf_acl(*args)
4
+ Awful::WAF::Acl.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module WAF
9
+ class Acl < Base
10
+
11
+ desc 'ls', 'list web_acls'
12
+ method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
13
+ method_option :limit, type: :numeric, default: 50, desc: 'limit of acls to request'
14
+ def ls
15
+ list_thing(:web_acls).output do |list|
16
+ if options[:long]
17
+ print_table list.map { |a| [a.name, a.web_acl_id] }
18
+ else
19
+ puts list.map(&:name)
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ class Base < Cli
27
+ desc 'acl', 'acl subcommands'
28
+ subcommand 'acl', Acl
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,62 @@
1
+ module Awful
2
+ module Short
3
+ def waf_ipset(*args)
4
+ Awful::WAF::Ipset.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module WAF
9
+ class Ipset < Base
10
+
11
+ desc 'ls', 'list ipsets'
12
+ method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
13
+ def ls
14
+ list_thing(:ip_sets).output do |ipsets|
15
+ if options[:long]
16
+ print_table ipsets.map { |i| [i.name, i.ip_set_id] }
17
+ else
18
+ puts ipsets.map(&:name)
19
+ end
20
+ end
21
+ end
22
+
23
+ desc 'get ID', 'get ipset'
24
+ method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
25
+ def get(id)
26
+ waf.get_ip_set(ip_set_id: id).ip_set.ip_set_descriptors.output do |ipsets|
27
+ if options[:long]
28
+ print_table ipsets.map { |i| [i.value, i.type] }
29
+ else
30
+ puts ipsets.map(&:value)
31
+ end
32
+ end
33
+ end
34
+
35
+ desc 'update ID', 'update ipset with ips'
36
+ method_option :type, type: :string, default: 'ipv4', desc: 'type of address, IPV4 or IPV6'
37
+ method_option :delete, type: :boolean, default: false, desc: 'delete IPs'
38
+ def update(id, *values)
39
+ waf.update_ip_set(
40
+ ip_set_id: id,
41
+ change_token: change_token,
42
+ updates: values.map do |value|
43
+ {
44
+ action: options[:delete] ? 'DELETE' : 'INSERT',
45
+ ip_set_descriptor: {
46
+ type: options[:type].upcase,
47
+ value: value
48
+ }
49
+ }
50
+ end
51
+ )
52
+ end
53
+
54
+ end
55
+
56
+ class Base < Cli
57
+ desc 'ipset', 'ipset subcommands'
58
+ subcommand 'ipset', Ipset
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,31 @@
1
+ module Awful
2
+ module Short
3
+ def waf_rule(*args)
4
+ Awful::WAF::Rule.new.invoke(*args)
5
+ end
6
+ end
7
+
8
+ module WAF
9
+ class Rule < Base
10
+
11
+ desc 'ls', 'list rules'
12
+ method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
13
+ def ls
14
+ list_thing(:rules).output do |rules|
15
+ if options[:long]
16
+ print_table rules.map { |r| [r.name, r.rule_id] }
17
+ else
18
+ puts rules.map(&:name)
19
+ end
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ class Base < Cli
26
+ desc 'rule', 'rule subcommands'
27
+ subcommand 'rule', Rule
28
+ end
29
+
30
+ end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.145
4
+ version: 0.0.146
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ric Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-07 00:00:00.000000000 Z
11
+ date: 2016-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,6 +115,7 @@ executables:
115
115
  - subnet
116
116
  - ta
117
117
  - vpc
118
+ - waf
118
119
  extensions: []
119
120
  extra_rdoc_files: []
120
121
  files:
@@ -155,6 +156,7 @@ files:
155
156
  - bin/subnet
156
157
  - bin/ta
157
158
  - bin/vpc
159
+ - bin/waf
158
160
  - lib/awful.rb
159
161
  - lib/awful/alb.rb
160
162
  - lib/awful/ami.rb
@@ -195,6 +197,10 @@ files:
195
197
  - lib/awful/trusted_advisor.rb
196
198
  - lib/awful/version.rb
197
199
  - lib/awful/vpc.rb
200
+ - lib/awful/waf.rb
201
+ - lib/awful/waf_acl.rb
202
+ - lib/awful/waf_ipset.rb
203
+ - lib/awful/waf_rule.rb
198
204
  homepage: ''
199
205
  licenses:
200
206
  - MIT