rack-detect-tor 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rack-detect-tor.rb +26 -1
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7963c9ae710b9b5f9a6b47ea251aa6bddc644aac
4
- data.tar.gz: 45b6a0b4c6c9d3a2c6ed6a57b6c088b7b4bd6fa6
3
+ metadata.gz: ca95a72a1819a0419c4eb93a4f4fd21ffd46167f
4
+ data.tar.gz: 5ebe2469cb14b0306f989c942c2ea8a3f9b64857
5
5
  SHA512:
6
- metadata.gz: 35a6e8440ae33e266e6f7d70259f3aab97185fc6251b66b6d724740ea7cbc843be81442f5924883fcd3b27e66cd8ecbaa903994b8ef38445b5ec5932559b3d81
7
- data.tar.gz: 9edc60fbfb0c4698b061a81dbd0ec01b282caf37502113cb330cb0886cde470852fb7ba8f381a93e5ec3d52cb2cd700bb46687565473976196a196a7f46ec441
6
+ metadata.gz: 9299cf11e242970a1f9a7b08ce8b127f6373c7cf1bb6902d1b2481f2e9d6a2c85a5cd8eb536acc88ac22f3fc15bfc711e0b2ff098adb1ada2de7052501f347c0
7
+ data.tar.gz: c2b87df5d9c00998f6267205dbd8917aa1f6d97ce7d5c17904336c7cc265745a14dbdb393d9074e9080466d3a93305c4631f893eb5026e41973dd3e90b11e93e
@@ -26,7 +26,7 @@ module Rack
26
26
  end
27
27
 
28
28
  def call(env)
29
- env['tor_exit_user'] = @tor_exits.include? env['REMOTE_ADDR']
29
+ env['tor_exit_user'] = @tor_exits.include? request_ip(env)
30
30
  @app.call(env)
31
31
  end
32
32
 
@@ -81,5 +81,30 @@ 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
+
84
109
  end
85
110
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-detect-tor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Warren Guy