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 +4 -4
- data/lib/tshield/after_filter.rb +12 -0
- data/lib/tshield/before_filter.rb +12 -0
- data/lib/tshield/configuration.rb +33 -1
- data/lib/tshield/request.rb +14 -3
- data/lib/tshield/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 566af7ee3e491ed0f05f870c08e7581d90a210f9
|
4
|
+
data.tar.gz: 7f41265085e90389f8832b0132c158672e9b6751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3132976dff0b4c21318f2961383779d0f918a5cb1a766ed9be706d4abd3cd602731ef0563f7b54a536d78f82ff0105b5835b8c8cd42f8378010b055f78b235ea
|
7
|
+
data.tar.gz: b1a2bcc07892b7624971f7e51c7a994307d0bdf6199a041297d503857d2e1c72be90db604ec486fb893745e245048eb92e8e38dc08e6e58552d82a3a03ee1f8f
|
@@ -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
|
data/lib/tshield/request.rb
CHANGED
@@ -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']
|
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
|
-
|
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
|
data/lib/tshield/version.rb
CHANGED
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.
|
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-
|
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
|