rack-detect-tor 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rack-detect-tor.rb +1 -26
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 689e8a3e35aa0b9b8eb807e9a295f0674e0f20f8
|
4
|
+
data.tar.gz: 88f0f4160574255bac09f48a9e233f958b1693b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bfd6e3a4f0eca63f8f6e60f0ed125ed69c4094eafd3876f6b5ed9c3c071113e427c0ef7dd9008a03019b950f6205dfde40246709d203d59b297d9fd4a3c402a
|
7
|
+
data.tar.gz: 37e278a94d8499600acc328b99c33db71befa4bebae143eb8669ea8d154d7108361defe3be6b35609a85a2987def6feb3e40046b1a4c35e7ba11b91a4afb39d0
|
data/lib/rack-detect-tor.rb
CHANGED
@@ -26,7 +26,7 @@ module Rack
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def call(env)
|
29
|
-
env['tor_exit_user'] = @tor_exits.include?
|
29
|
+
env['tor_exit_user'] = @tor_exits.include? Rack::Request.new(env).ip
|
30
30
|
@app.call(env)
|
31
31
|
end
|
32
32
|
|
@@ -81,30 +81,5 @@ module Rack
|
|
81
81
|
$stderr.puts "Rack::DetectTor [#{@identifier}]: ERROR: #{message}"
|
82
82
|
end
|
83
83
|
|
84
|
-
# below yanked from https://github.com/rack/rack/blob/master/lib/rack/request.rb
|
85
|
-
|
86
|
-
def request_ip(env)
|
87
|
-
remote_addrs = split_ip_addresses(env['REMOTE_ADDR'])
|
88
|
-
remote_addrs = reject_trusted_ip_addresses(remote_addrs)
|
89
|
-
|
90
|
-
return remote_addrs.first if remote_addrs.any?
|
91
|
-
|
92
|
-
forwarded_ips = split_ip_addresses(env['HTTP_X_FORWARDED_FOR'])
|
93
|
-
|
94
|
-
return reject_trusted_ip_addresses(forwarded_ips).last || env["REMOTE_ADDR"]
|
95
|
-
end
|
96
|
-
|
97
|
-
def trusted_proxy?(ip)
|
98
|
-
ip =~ /\A127\.0\.0\.1\Z|\A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|\A::1\Z|\Afd[0-9a-f]{2}:.+|\Alocalhost\Z|\Aunix\Z|\Aunix:/i
|
99
|
-
end
|
100
|
-
|
101
|
-
def reject_trusted_ip_addresses(ip_addresses)
|
102
|
-
ip_addresses.reject { |ip| trusted_proxy?(ip) }
|
103
|
-
end
|
104
|
-
|
105
|
-
def split_ip_addresses(ip_addresses)
|
106
|
-
ip_addresses ? ip_addresses.strip.split(/[,\s]+/) : []
|
107
|
-
end
|
108
|
-
|
109
84
|
end
|
110
85
|
end
|