tshield 0.6.0.0 → 0.6.1.0

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: 19c70680e289c5c8b514feeca2fc6a276fc7edc8
4
- data.tar.gz: 68c61ad023d98d721bf2c88570e1f3170823b968
3
+ metadata.gz: 566af7ee3e491ed0f05f870c08e7581d90a210f9
4
+ data.tar.gz: 7f41265085e90389f8832b0132c158672e9b6751
5
5
  SHA512:
6
- metadata.gz: 257777b038cf582aaf4d62e354a11cf976e0bdf55f3f018b3f8c60e1c18d7be81331570bd70a26e0ce461b9c5082f7840371fd7b5bf83187cdbc7865a2147ef1
7
- data.tar.gz: 12df75edf9427185e53f67b12d01fab27b015735d78b62a0cf8489b1108f6e8d3af009f25035272d36502c000930b9b78780b59705983e0043da72b13d21fd18
6
+ metadata.gz: 3132976dff0b4c21318f2961383779d0f918a5cb1a766ed9be706d4abd3cd602731ef0563f7b54a536d78f82ff0105b5835b8c8cd42f8378010b055f78b235ea
7
+ data.tar.gz: b1a2bcc07892b7624971f7e51c7a994307d0bdf6199a041297d503857d2e1c72be90db604ec486fb893745e245048eb92e8e38dc08e6e58552d82a3a03ee1f8f
@@ -0,0 +1,12 @@
1
+ module TShield
2
+
3
+ # Example:
4
+ # def filter(response)
5
+ # response
6
+ # end
7
+ class AfterFilter
8
+ def filter(response)
9
+ raise 'should implement method filter and returns response'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module TShield
2
+
3
+ # Example:
4
+ # def filter(method, url, options)
5
+ # [method, url, options]
6
+ # end
7
+ class BeforeFilter
8
+ def filter(method, url, options)
9
+ raise 'should implement method filter and returns method, url, options'
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,8 @@
1
1
  require 'yaml'
2
2
 
3
+ require 'tshield/after_filter'
4
+ require 'tshield/before_filter'
5
+
3
6
  module TShield
4
7
  class Configuration
5
8
 
@@ -12,6 +15,15 @@ module TShield
12
15
  attributes.each do |key, value|
13
16
  send("#{key}=", value)
14
17
  end
18
+
19
+ if File.exists?('filters')
20
+ Dir.entries('filters').each do |entry|
21
+ next if entry =~ /^\.\.?$/
22
+ puts "loading filter #{entry}"
23
+ entry.gsub!('.rb', '')
24
+ require File.join('.', 'filters', entry)
25
+ end
26
+ end
15
27
  end
16
28
 
17
29
  def self.singleton
@@ -20,7 +32,7 @@ module TShield
20
32
 
21
33
  def get_domain_for(path)
22
34
  domains.each do |url, config|
23
- config['paths'].each { |p| return url if path =~ Regexp.new(p) }
35
+ config['paths'].each { |p| return url if path =~ Regexp.new(p) }
24
36
  end
25
37
  nil
26
38
  end
@@ -33,6 +45,26 @@ module TShield
33
45
  domains[domain]['name'] || domain.gsub(/.*:\/\//, '')
34
46
  end
35
47
 
48
+ def get_before_filters(domain)
49
+ get_filters(domain)
50
+ .select { |k| k.ancestors.include?(TShield::BeforeFilter) }
51
+ end
52
+
53
+ def get_after_filters(domain)
54
+ get_filters(domain)
55
+ .select { |k| k.ancestors.include?(TShield::AfterFilter) }
56
+ end
57
+
58
+ def cache_request?(domain)
59
+ return true unless domains[domain].include?('cache_request')
60
+ domains[domain]['cache_request']
61
+ end
62
+
63
+ def get_filters(domain)
64
+ (domains[domain]['filters'] || [])
65
+ .collect { |f| Class.const_get(f) }
66
+ end
67
+
36
68
  def get_excluded_headers(domain)
37
69
  domains[domain]['excluded_headers'] || []
38
70
  end
@@ -20,7 +20,7 @@ module TShield
20
20
  @options = options
21
21
  @configuration = TShield::Configuration.singleton
22
22
  @options[:timeout] = @configuration.request['timeout']
23
- @options[:verify] = @configuration.request['verify_ssl'] == 'true'
23
+ @options[:verify] = @configuration.request['verify_ssl']
24
24
  request
25
25
  end
26
26
 
@@ -35,8 +35,19 @@ module TShield
35
35
  @response = get_current_response
36
36
  @response.original = false
37
37
  else
38
- raw = HTTParty.send("#{method}", @url, @options)
38
+ @method = method
39
+ @configuration.get_before_filters(domain).each do |filter|
40
+ @method, @url, @options = filter.new.filter(@method, @url, @options)
41
+ end
42
+
43
+ raw = HTTParty.send("#{@method}", @url, @options)
44
+
45
+ @configuration.get_after_filters(domain).each do |filter|
46
+ raw = filter.new.filter(raw)
47
+ end
48
+
39
49
  @response = save(raw)
50
+
40
51
  @response.original = true
41
52
  end
42
53
  current_session[:counter].add(@path, method) if current_session
@@ -87,7 +98,7 @@ module TShield
87
98
  end
88
99
 
89
100
  def exists
90
- file_exists
101
+ file_exists && @configuration.cache_request?(domain)
91
102
  end
92
103
 
93
104
  def get_current_response
@@ -2,7 +2,7 @@ module TShield
2
2
  class Version
3
3
  MAJOR = 0
4
4
  MINOR = 6
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE = 0
7
7
 
8
8
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tshield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.0
4
+ version: 0.6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Rubin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-10 00:00:00.000000000 Z
11
+ date: 2018-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -182,6 +182,7 @@ files:
182
182
  - Rakefile
183
183
  - bin/tshield
184
184
  - lib/tshield.rb
185
+ - lib/tshield/after_filter.rb
185
186
  - lib/tshield/assets/favicon.ico
186
187
  - lib/tshield/assets/javascripts/application.js
187
188
  - lib/tshield/assets/javascripts/bootstrap.min.js
@@ -189,6 +190,7 @@ files:
189
190
  - lib/tshield/assets/stylesheets/application.css
190
191
  - lib/tshield/assets/stylesheets/bootstrap-theme.min.css
191
192
  - lib/tshield/assets/stylesheets/bootstrap.min.css
193
+ - lib/tshield/before_filter.rb
192
194
  - lib/tshield/configuration.rb
193
195
  - lib/tshield/controller.rb
194
196
  - lib/tshield/controllers/admin/requests.rb