tor_detector 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccdac22f3528da72db18b823184e7fb2139e4338
4
- data.tar.gz: 33d2af66f07046338ce2659414fcef46a1527fc8
3
+ metadata.gz: 405d6d1c00623ec6455b248adb9ee0783213df8c
4
+ data.tar.gz: f936807a9e3236cc18f9b5484ead958bea29c647
5
5
  SHA512:
6
- metadata.gz: c3bf8e38d72d36569bb2887fd0d226a458bb95effafefd4a97cb6235c2dc919e172dbc7064d2ee1a689358ef82873e191fdfb0547f3401bb7db7ddc24685e047
7
- data.tar.gz: 2038e97f36774ac4af871f85767f6107716d4c5f6ddb9faab250f839c46a315ce9ef276d1a0a30608dbb924cdf97421b8d964cf2cdaa8d9c3222dd06f12c6769
6
+ metadata.gz: 1e43f5975712ae63f61fe6b7d13192a3ce33e79cf5602410ae98705b420b1d1411f52afa19fd27446f53694b4ca72b1dfa955e8c0e5d7db5cf87f94c2f1d8737
7
+ data.tar.gz: 7aef5f95edcb4fb2c932e31485e24cc6ea05c92ebdb4f5545c6308a480a42fe9e93b72c7bdc5becdce152ea804f0e7007983dc2250b13ffe9408316883e53b87
@@ -1,23 +1,32 @@
1
1
  require 'ipaddr'
2
2
  require 'resolv'
3
+ require 'timeout'
3
4
 
4
5
  module TorDetector
5
- MalformedIP = Class.new(StandardError)
6
+ Error = Class.new(StandardError)
7
+ MalformedIP = Class.new(Error)
8
+ DNSTimeout = Class.new(Error)
6
9
 
7
10
  # tor_detector = TorDetector::Base.new
8
11
  # tor_detector.call('1.2.3.4')
9
12
  class Base
10
13
  attr_reader :dns_ip,
11
- :dns_port
14
+ :dns_port,
15
+ :timeout
12
16
 
13
- def initialize(dns_ip = '8.8.8.8', dns_port = 53)
17
+ def initialize(dns_ip = '8.8.8.8', dns_port = 53, timeout = 5)
14
18
  @dns_ip = dns_ip
15
19
  @dns_port = dns_port
20
+ @timeout = timeout
16
21
  end
17
22
 
18
23
  def call(ip)
19
24
  IPAddr.new(ip)
20
- Resolv.getaddress(tor_hostname_for(ip)) == positive_tor_ip
25
+ Timeout.timeout(timeout) do
26
+ Resolv.getaddress(tor_hostname_for(ip)) == positive_tor_ip
27
+ end
28
+ rescue Timeout::Error
29
+ raise DNSTimeout
21
30
  rescue IPAddr::InvalidAddressError
22
31
  raise MalformedIP
23
32
  rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH, Resolv::ResolvError
@@ -1,3 +1,3 @@
1
1
  module TorDetector
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tor_detector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-13 00:00:00.000000000 Z
11
+ date: 2016-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler