legitbot 0.2.0 → 0.2.1

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
- SHA1:
3
- metadata.gz: '09d1957d911120207a2518f7ddd87673fb780206'
4
- data.tar.gz: 7a8acb9e1bca9d0f409d84055a029baadf9a6c03
2
+ SHA256:
3
+ metadata.gz: 43121c17f4de712a7c1b33797c0075b31762ff31a1461a871efa486461acf0e2
4
+ data.tar.gz: b6d015e3889a421b3dbce8189489239894bbdf87f8a5677e0d612ece4655f973
5
5
  SHA512:
6
- metadata.gz: 6372a1064b86b8a63e043fd0e737c5a87c394f0dd601bf96fe9d9d5945002ed286ce5f84928f3cfb7fb894d9cf3c7e7c970c6b4a59aef729f19100ffa484e4a1
7
- data.tar.gz: c4538f8f81fdb71aa65dff43ea41c49c2bd51de9c664778bf2d86b7ca0483de614330dac32fde87db5933a2781e4e21fd6862e1b4ecf4d8be16c83932384f062
6
+ metadata.gz: 44dec432e5ba97bb28cefd59e6f800d363342360d10ae72cf69419124836ffcc115b780882e797ea2879e41217402c53b6bd8472a449343814f007d1ea9b6996
7
+ data.tar.gz: '091b35b6eccc08b4e4b083e8498084e3726534a7560e8626b47e0e9dbcaa5a469568b477429804b47a3c16848d506c856823e8809ee88fc70df0d10723507a9d'
data/legitbot.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  "made by a real search engine, not a fake"
16
16
 
17
17
  spec.required_ruby_version = '>= 2.0.0'
18
- spec.add_dependency "irrc"
18
+ spec.add_dependency "irrc", ">= 0.2.1"
19
19
  spec.add_dependency "segment_tree"
20
20
  spec.add_development_dependency "rake"
21
21
  spec.add_development_dependency "minitest"
@@ -1,18 +1,31 @@
1
- require 'segment_tree'
2
- require 'irrc'
3
- require 'monitor'
4
1
  require 'ipaddr'
2
+ require 'irrc'
3
+ require 'segment_tree'
5
4
 
6
5
  module Legitbot
7
6
  # https://developers.facebook.com/docs/sharing/webmasters/crawler
8
7
 
9
8
  class Facebook < BotMatch
10
- lock = Monitor.new
11
-
12
9
  AS = 'AS32934'
13
- ValidIPs = lock.synchronize do
10
+
11
+ def valid?
12
+ ip = IPAddr.new(@ip)
13
+ Facebook.valid_ips[ip.ipv4? ? :ipv4 : :ipv6].find(ip)
14
+ end
15
+
16
+ @mutex = Mutex.new
17
+
18
+ def self.valid_ips
19
+ @mutex.synchronize { @ips ||= load_ips }
20
+ end
21
+
22
+ def self.reload!
23
+ @mutex.synchronize { @ips = load_ips }
24
+ end
25
+
26
+ def self.load_ips
14
27
  client = Irrc::Client.new
15
- client.query :radb, 'AS32934'
28
+ client.query :radb, AS
16
29
  results = client.perform
17
30
 
18
31
  Hash[%i(ipv4 ipv6).map { |k|
@@ -21,11 +34,6 @@ module Legitbot
21
34
  })]
22
35
  }]
23
36
  end
24
-
25
- def valid?
26
- ip = IPAddr.new(@ip)
27
- ValidIPs[ip.ipv4? ? :ipv4 : :ipv6].find(ip)
28
- end
29
37
  end
30
38
 
31
39
  rule Legitbot::Facebook, %w(facebookhit facebookexternalhit)
@@ -1,3 +1,3 @@
1
1
  module Legitbot
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legitbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Azarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-26 00:00:00.000000000 Z
11
+ date: 2018-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: irrc
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: segment_tree
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.5.2.3
123
+ rubygems_version: 2.7.6
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Validate Web request was made by legitimate search engine