tor_detector 0.1.0 → 0.2.0

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
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