tshield 0.6.0.0 → 0.6.1.0

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
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