tor 0.1.4 → 0.1.5
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 +5 -5
- data/AUTHORS +1 -0
- data/README +1 -1
- data/VERSION +1 -1
- data/lib/tor/dnsel.rb +9 -57
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7be2c2b80fea90e1b3e9567624a442d4b3d1a92946f72d6b465280ad4b5d0ec8
|
4
|
+
data.tar.gz: 96358536b8479ea4fba83fb236dabb6b743074c058a48a6fbfe435bf00ab5bbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b961dc19ac6f692cbade5226a895782c311cf6463fd228595ee4044085de9340f6948e852c981649c63abfd0abd01665d3fd7cabf2970815be6f87541b8158ee
|
7
|
+
data.tar.gz: cbecd4beddfd8d543d79233ea2f116609204550f0366a091aacac9573eae593e08c2d5c663020b56713ea6fc46b6dbb2ca39aa6b4e0e1686bb30d6ae7c7b2a7c
|
data/AUTHORS
CHANGED
data/README
CHANGED
@@ -1 +1 @@
|
|
1
|
-
README.md
|
1
|
+
./README.md
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/lib/tor/dnsel.rb
CHANGED
@@ -1,49 +1,12 @@
|
|
1
1
|
require 'resolv' unless defined?(Resolv)
|
2
2
|
|
3
3
|
module Tor
|
4
|
-
##
|
5
|
-
# Tor DNS Exit List (DNSEL) client.
|
6
|
-
#
|
7
|
-
# Unless the target IP address and port are explicitly specified, the
|
8
|
-
# query will be performed using a target IP address of "8.8.8.8" and a
|
9
|
-
# target port of 53. These correspond to the DNS protocol port on one of
|
10
|
-
# the [Google Public DNS](http://code.google.com/speed/public-dns/)
|
11
|
-
# servers, and they are guaranteed to be reachable from Tor's default exit
|
12
|
-
# policy.
|
13
|
-
#
|
14
|
-
# @example Checking source IP addresses
|
15
|
-
# Tor::DNSEL.include?("185.220.101.21") #=> true
|
16
|
-
# Tor::DNSEL.include?("1.2.3.4") #=> false
|
17
|
-
#
|
18
|
-
# @example Checking source hostnames
|
19
|
-
# Tor::DNSEL.include?("ennui.lostinthenoise.net") #=> true
|
20
|
-
# Tor::DNSEL.include?("myhost.example.org") #=> false
|
21
|
-
#
|
22
|
-
# @example Specifying an explicit target port
|
23
|
-
# Tor::DNSEL.include?("185.220.101.21", :port => 80) #=> true
|
24
|
-
# Tor::DNSEL.include?("185.220.101.21", :port => 25) #=> false
|
25
|
-
#
|
26
|
-
# @example Specifying an explicit target IP address and port
|
27
|
-
# Tor::DNSEL.include?(source_addr, :addr => target_addr, :port => target_port)
|
28
|
-
# Tor::DNSEL.include?("185.220.101.21", :addr => myip, :port => myport)
|
29
|
-
#
|
30
|
-
# @example Using from a Rack application
|
31
|
-
# Tor::DNSEL.include?(env['REMOTE_ADDR'] || env['REMOTE_HOST'], {
|
32
|
-
# :addr => env['SERVER_NAME'],
|
33
|
-
# :port => env['SERVER_PORT'],
|
34
|
-
# })
|
35
|
-
#
|
36
|
-
# @see https://www.torproject.org/tordnsel/
|
37
|
-
# @see https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorDNSExitList
|
38
|
-
# @see http://gitweb.torproject.org/tor.git?a=blob_plain;hb=HEAD;f=doc/contrib/torel-design.txt
|
39
4
|
module DNSEL
|
40
5
|
RESOLVER = Resolv::DefaultResolver unless defined?(RESOLVER)
|
41
|
-
|
42
|
-
TARGET_PORT = 53 unless defined?(TARGET_PORT) # DNS
|
43
|
-
DNS_SUFFIX = 'ip-port.exitlist.torproject.org'.freeze
|
6
|
+
DNS_SUFFIX = 'dnsel.torproject.org'.freeze
|
44
7
|
|
45
8
|
##
|
46
|
-
# Returns `true` if
|
9
|
+
# Returns `true` if `host` is a Tor Exit Node, `false` otherwise.
|
47
10
|
#
|
48
11
|
# If the DNS server is unreachable or the DNS query times out, returns
|
49
12
|
# `nil` to indicate that we don't have a definitive answer one way or
|
@@ -54,13 +17,10 @@ module Tor
|
|
54
17
|
# Tor::DNSEL.include?("1.2.3.4") #=> false
|
55
18
|
#
|
56
19
|
# @param [String, #to_s] host
|
57
|
-
# @param [Hash{Symbol => Object}] options
|
58
|
-
# @option options [String, #to_s] :addr ("8.8.8.8")
|
59
|
-
# @option options [Integer, #to_i] :port (53)
|
60
20
|
# @return [Boolean]
|
61
|
-
def self.include?(host
|
21
|
+
def self.include?(host)
|
62
22
|
begin
|
63
|
-
query(host
|
23
|
+
query(host) == '127.0.0.2'
|
64
24
|
rescue Resolv::ResolvError # NXDOMAIN
|
65
25
|
false
|
66
26
|
rescue Resolv::ResolvTimeout
|
@@ -81,31 +41,23 @@ module Tor
|
|
81
41
|
# Tor::DNSEL.query("1.2.3.4") #=> Resolv::ResolvError
|
82
42
|
#
|
83
43
|
# @param [String, #to_s] host
|
84
|
-
# @param [Hash{Symbol => Object}] options
|
85
|
-
# @option options [String, #to_s] :addr ("8.8.8.8")
|
86
|
-
# @option options [Integer, #to_i] :port (53)
|
87
44
|
# @return [String]
|
88
45
|
# @raise [Resolv::ResolvError] for an NXDOMAIN response
|
89
|
-
def self.query(host
|
90
|
-
getaddress(dnsname(host
|
46
|
+
def self.query(host)
|
47
|
+
getaddress(dnsname(host))
|
91
48
|
end
|
92
49
|
|
93
50
|
##
|
94
51
|
# Returns the DNS name used for Tor DNSEL queries of `host`.
|
95
52
|
#
|
96
53
|
# @example
|
97
|
-
# Tor::DNSEL.dnsname("1.2.3.4") #=> "4.3.2.1.
|
54
|
+
# Tor::DNSEL.dnsname("1.2.3.4") #=> "4.3.2.1.dnsel.torproject.org"
|
98
55
|
#
|
99
56
|
# @param [String, #to_s] host
|
100
|
-
# @param [Hash{Symbol => Object}] options
|
101
|
-
# @option options [String, #to_s] :addr ("8.8.8.8")
|
102
|
-
# @option options [Integer, #to_i] :port (53)
|
103
57
|
# @return [String]
|
104
|
-
def self.dnsname(host
|
58
|
+
def self.dnsname(host)
|
105
59
|
source_addr = getaddress(host, true)
|
106
|
-
|
107
|
-
target_port = options[:port] || TARGET_PORT
|
108
|
-
[source_addr, target_port, target_addr, DNS_SUFFIX].join('.')
|
60
|
+
"#{source_addr}.#{DNS_SUFFIX}"
|
109
61
|
end
|
110
62
|
class << self; alias_method :hostname, :dnsname; end
|
111
63
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.6.0
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0.6'
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,18 +27,21 @@ dependencies:
|
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 0.6.0
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.6'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rspec
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- - "
|
37
|
+
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
39
|
version: '3'
|
34
40
|
type: :development
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
|
-
- - "
|
44
|
+
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: '3'
|
41
47
|
description: Tor.rb is a Ruby library for interacting with the Tor anonymity network.
|
@@ -56,7 +62,7 @@ files:
|
|
56
62
|
- lib/tor/version.rb
|
57
63
|
homepage: http://cypherpunk.rubyforge.org/tor/
|
58
64
|
licenses:
|
59
|
-
-
|
65
|
+
- Unlicense
|
60
66
|
metadata: {}
|
61
67
|
post_install_message:
|
62
68
|
rdoc_options: []
|
@@ -74,8 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
80
|
version: '0'
|
75
81
|
requirements:
|
76
82
|
- Tor (>= 0.2.1.25)
|
77
|
-
|
78
|
-
rubygems_version: 2.5.2.3
|
83
|
+
rubygems_version: 3.0.3
|
79
84
|
signing_key:
|
80
85
|
specification_version: 4
|
81
86
|
summary: Onion routing for Ruby.
|