tor 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/{CONTRIBUTORS → CREDITS} +0 -0
- data/README +1 -0
- data/VERSION +1 -1
- data/lib/tor.rb +6 -4
- data/lib/tor/control.rb +35 -1
- data/lib/tor/dnsel.rb +6 -6
- data/lib/tor/version.rb +1 -1
- metadata +45 -63
- data/README +0 -106
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: aaef75e8798a08e6b53ba48cf9017d823a5149b345b7570a7a47d579c75a3056
|
4
|
+
data.tar.gz: bdb1f3103eaa2ba1529c6b427681779a7725bf56280f1a5d021a5b96d94997fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d7a90398037ee2bb8fbe8842bece7a8500100f09d850e1c52f73ef8b605f6de2bdebfa9764cba06b34b7ed7216d4db20bab1e9d3d49721dfb5aa2e65ad9733a8
|
7
|
+
data.tar.gz: d4716f3d5c6eed3d319d3077dbefaeddae7e0e46c1a62ca43d76d72b11691d85cf38b3702ac38531f610373b992243e41720037e28857a169e4fe314b67ef6bb
|
data/{CONTRIBUTORS → CREDITS}
RENAMED
File without changes
|
data/README
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
./README.md
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/tor.rb
CHANGED
@@ -17,10 +17,10 @@ end
|
|
17
17
|
##
|
18
18
|
# @see https://www.torproject.org/
|
19
19
|
module Tor
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
require_relative 'tor/config'
|
21
|
+
require_relative 'tor/control'
|
22
|
+
require_relative 'tor/dnsel'
|
23
|
+
require_relative 'tor/version'
|
24
24
|
|
25
25
|
##
|
26
26
|
# Returns `true` if the Tor process is running locally, `false` otherwise.
|
@@ -65,6 +65,8 @@ module Tor
|
|
65
65
|
def self.version
|
66
66
|
if available? && `#{program_path} --version` =~ /Tor v(\d+)\.(\d+)\.(\d+)\.(\d+)/
|
67
67
|
[$1, $2, $3, $4].join('.')
|
68
|
+
elsif available? && `#{program_path} --version` =~ /Tor version (\d+)\.(\d+)\.(\d+)\.(\d+)/
|
69
|
+
[$1, $2, $3, $4].join('.')
|
68
70
|
end
|
69
71
|
end
|
70
72
|
|
data/lib/tor/control.rb
CHANGED
@@ -190,7 +190,7 @@ module Tor
|
|
190
190
|
# @raise [AuthenticationError] if authentication failed
|
191
191
|
def authenticate(cookie = nil)
|
192
192
|
cookie ||= @options[:cookie]
|
193
|
-
send(:send_line, cookie ? "AUTHENTICATE #{cookie}" : "AUTHENTICATE")
|
193
|
+
send(:send_line, cookie ? "AUTHENTICATE \"#{cookie}\"" : "AUTHENTICATE")
|
194
194
|
case reply = read_reply
|
195
195
|
when '250 OK' then @authenticated = true
|
196
196
|
else raise AuthenticationError.new(reply)
|
@@ -236,6 +236,40 @@ module Tor
|
|
236
236
|
Pathname(reply)
|
237
237
|
end
|
238
238
|
|
239
|
+
##
|
240
|
+
# Returns the current (in-memory) Tor configuration.
|
241
|
+
# Response is terminated with a "."
|
242
|
+
#
|
243
|
+
# @example
|
244
|
+
# C: GETINFO config-text
|
245
|
+
# S: 250+config-text=
|
246
|
+
# S: ControlPort 9051
|
247
|
+
# S: RunAsDaemon 1
|
248
|
+
# S: .
|
249
|
+
def config_text
|
250
|
+
send_command(:getinfo, 'config-text')
|
251
|
+
reply = ""
|
252
|
+
read_reply # skip "250+config-text="
|
253
|
+
while line = read_reply
|
254
|
+
break unless line != "."
|
255
|
+
reply.concat(line + "\n")
|
256
|
+
end
|
257
|
+
read_reply # skip "250 OK"
|
258
|
+
return reply
|
259
|
+
end
|
260
|
+
|
261
|
+
##
|
262
|
+
# Send a signal to the server
|
263
|
+
#
|
264
|
+
# @example
|
265
|
+
# tor.signal("newnym")
|
266
|
+
#
|
267
|
+
# @return [String]
|
268
|
+
def signal(name)
|
269
|
+
send_command(:signal, name)
|
270
|
+
read_reply
|
271
|
+
end
|
272
|
+
|
239
273
|
protected
|
240
274
|
|
241
275
|
##
|
data/lib/tor/dnsel.rb
CHANGED
@@ -12,7 +12,7 @@ module Tor
|
|
12
12
|
# policy.
|
13
13
|
#
|
14
14
|
# @example Checking source IP addresses
|
15
|
-
# Tor::DNSEL.include?("
|
15
|
+
# Tor::DNSEL.include?("185.220.101.21") #=> true
|
16
16
|
# Tor::DNSEL.include?("1.2.3.4") #=> false
|
17
17
|
#
|
18
18
|
# @example Checking source hostnames
|
@@ -20,12 +20,12 @@ module Tor
|
|
20
20
|
# Tor::DNSEL.include?("myhost.example.org") #=> false
|
21
21
|
#
|
22
22
|
# @example Specifying an explicit target port
|
23
|
-
# Tor::DNSEL.include?("
|
24
|
-
# Tor::DNSEL.include?("
|
23
|
+
# Tor::DNSEL.include?("185.220.101.21", :port => 80) #=> true
|
24
|
+
# Tor::DNSEL.include?("185.220.101.21", :port => 25) #=> false
|
25
25
|
#
|
26
26
|
# @example Specifying an explicit target IP address and port
|
27
27
|
# Tor::DNSEL.include?(source_addr, :addr => target_addr, :port => target_port)
|
28
|
-
# Tor::DNSEL.include?("
|
28
|
+
# Tor::DNSEL.include?("185.220.101.21", :addr => myip, :port => myport)
|
29
29
|
#
|
30
30
|
# @example Using from a Rack application
|
31
31
|
# Tor::DNSEL.include?(env['REMOTE_ADDR'] || env['REMOTE_HOST'], {
|
@@ -50,7 +50,7 @@ module Tor
|
|
50
50
|
# another.
|
51
51
|
#
|
52
52
|
# @example
|
53
|
-
# Tor::DNSEL.include?("
|
53
|
+
# Tor::DNSEL.include?("185.220.101.21") #=> true
|
54
54
|
# Tor::DNSEL.include?("1.2.3.4") #=> false
|
55
55
|
#
|
56
56
|
# @param [String, #to_s] host
|
@@ -77,7 +77,7 @@ module Tor
|
|
77
77
|
# exit node and raising a `Resolv::ResolvError` if it isn't.
|
78
78
|
#
|
79
79
|
# @example
|
80
|
-
# Tor::DNSEL.query("
|
80
|
+
# Tor::DNSEL.query("185.220.101.21") #=> "127.0.0.2"
|
81
81
|
# Tor::DNSEL.query("1.2.3.4") #=> Resolv::ResolvError
|
82
82
|
#
|
83
83
|
# @param [String, #to_s] host
|
data/lib/tor/version.rb
CHANGED
metadata
CHANGED
@@ -1,100 +1,82 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
version: 0.1.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- Arto Bendiken
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: yard
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
25
17
|
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
- 5
|
30
|
-
- 8
|
31
|
-
version: 0.5.8
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.6.0
|
32
20
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rspec
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
39
31
|
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 1
|
43
|
-
- 3
|
44
|
-
- 0
|
45
|
-
version: 1.3.0
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3'
|
46
34
|
type: :development
|
47
|
-
|
48
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3'
|
41
|
+
description: Tor.rb is a Ruby library for interacting with the Tor anonymity network.
|
49
42
|
email: or-talk@seul.org
|
50
43
|
executables: []
|
51
|
-
|
52
44
|
extensions: []
|
53
|
-
|
54
45
|
extra_rdoc_files: []
|
55
|
-
|
56
|
-
files:
|
46
|
+
files:
|
57
47
|
- AUTHORS
|
58
|
-
-
|
48
|
+
- CREDITS
|
59
49
|
- README
|
60
50
|
- UNLICENSE
|
61
51
|
- VERSION
|
52
|
+
- lib/tor.rb
|
62
53
|
- lib/tor/config.rb
|
63
54
|
- lib/tor/control.rb
|
64
55
|
- lib/tor/dnsel.rb
|
65
56
|
- lib/tor/version.rb
|
66
|
-
- lib/tor.rb
|
67
|
-
has_rdoc: false
|
68
57
|
homepage: http://cypherpunk.rubyforge.org/tor/
|
69
|
-
licenses:
|
58
|
+
licenses:
|
70
59
|
- Public Domain
|
60
|
+
metadata: {}
|
71
61
|
post_install_message:
|
72
62
|
rdoc_options: []
|
73
|
-
|
74
|
-
require_paths:
|
63
|
+
require_paths:
|
75
64
|
- lib
|
76
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
78
67
|
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 1
|
82
|
-
- 8
|
83
|
-
- 1
|
68
|
+
- !ruby/object:Gem::Version
|
84
69
|
version: 1.8.1
|
85
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
87
72
|
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
|
91
|
-
version: "0"
|
92
|
-
requirements:
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements:
|
93
76
|
- Tor (>= 0.2.1.25)
|
94
77
|
rubyforge_project: cypherpunk
|
95
|
-
rubygems_version:
|
78
|
+
rubygems_version: 2.7.6.2
|
96
79
|
signing_key:
|
97
|
-
specification_version:
|
80
|
+
specification_version: 4
|
98
81
|
summary: Onion routing for Ruby.
|
99
82
|
test_files: []
|
100
|
-
|
data/README
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
Tor.rb: Onion Routing for Ruby
|
2
|
-
==============================
|
3
|
-
|
4
|
-
This is a Ruby library for interacting with the [Tor][] anonymity network.
|
5
|
-
|
6
|
-
* <http://github.com/bendiken/tor-ruby>
|
7
|
-
|
8
|
-
Features
|
9
|
-
--------
|
10
|
-
|
11
|
-
* Supports checking whether Tor is installed in the user's current `PATH`,
|
12
|
-
and if it is, returning the version number.
|
13
|
-
* Supports parsing Tor configuration files and looking up the values of
|
14
|
-
particular options.
|
15
|
-
* Supports querying and controlling a locally-running Tor process using the
|
16
|
-
[Tor Control Protocol (TC)][TC] over a socket connection.
|
17
|
-
* Supports querying the [Tor DNS Exit List (DNSEL)][TorDNSEL] to determine
|
18
|
-
whether a particular host is a Tor exit node or not.
|
19
|
-
* Compatible with Ruby 1.8.7+, Ruby 1.9.x, and JRuby 1.4/1.5.
|
20
|
-
|
21
|
-
Examples
|
22
|
-
--------
|
23
|
-
|
24
|
-
require 'rubygems'
|
25
|
-
require 'tor'
|
26
|
-
|
27
|
-
### Checking whether Tor is installed and which version it is
|
28
|
-
|
29
|
-
Tor.available? #=> true
|
30
|
-
Tor.version #=> "0.2.1.25"
|
31
|
-
|
32
|
-
### Parsing the Tor configuration file (1)
|
33
|
-
|
34
|
-
torrc = Tor::Config.load("/etc/tor/torrc")
|
35
|
-
|
36
|
-
### Parsing the Tor configuration file (2)
|
37
|
-
|
38
|
-
Tor::Config.open("/etc/tor/torrc") do |torrc|
|
39
|
-
puts "Tor SOCKS port: #{torrc['SocksPort']}"
|
40
|
-
puts "Tor control port: #{torrc['ControlPort']}"
|
41
|
-
puts "Tor exit policy:"
|
42
|
-
torrc.each('ExitPolicy') do |key, value|
|
43
|
-
puts " #{value}"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
### Communicating with a running Tor process
|
48
|
-
|
49
|
-
Tor::Controller.connect(:port => 9051) do |tor|
|
50
|
-
puts "Tor version: #{tor.version}"
|
51
|
-
puts "Tor config file: #{tor.config_file}"
|
52
|
-
end
|
53
|
-
|
54
|
-
### Checking whether a particular host is a Tor exit node
|
55
|
-
|
56
|
-
Tor::DNSEL.include?("208.75.57.100") #=> true
|
57
|
-
Tor::DNSEL.include?("1.2.3.4") #=> false
|
58
|
-
|
59
|
-
Documentation
|
60
|
-
-------------
|
61
|
-
|
62
|
-
* <http://cypherpunk.rubyforge.org/tor/>
|
63
|
-
|
64
|
-
Dependencies
|
65
|
-
------------
|
66
|
-
|
67
|
-
* [Ruby](http://ruby-lang.org/) (>= 1.8.7) or (>= 1.8.1 with [Backports][])
|
68
|
-
* [Tor](https://www.torproject.org/download.html.en) (>= 0.2.1)
|
69
|
-
|
70
|
-
Installation
|
71
|
-
------------
|
72
|
-
|
73
|
-
The recommended installation method is via [RubyGems](http://rubygems.org/).
|
74
|
-
To install the latest official release of Tor.rb, do:
|
75
|
-
|
76
|
-
% [sudo] gem install tor # Ruby 1.8.7+ or 1.9.x
|
77
|
-
% [sudo] gem install backports tor # Ruby 1.8.1+
|
78
|
-
|
79
|
-
Download
|
80
|
-
--------
|
81
|
-
|
82
|
-
To get a local working copy of the development repository, do:
|
83
|
-
|
84
|
-
% git clone git://github.com/bendiken/tor-ruby.git
|
85
|
-
|
86
|
-
Alternatively, you can download the latest development version as a tarball
|
87
|
-
as follows:
|
88
|
-
|
89
|
-
% wget http://github.com/bendiken/tor-ruby/tarball/master
|
90
|
-
|
91
|
-
Author
|
92
|
-
------
|
93
|
-
|
94
|
-
* [Arto Bendiken](mailto:arto.bendiken@gmail.com) - <http://ar.to/>
|
95
|
-
|
96
|
-
License
|
97
|
-
-------
|
98
|
-
|
99
|
-
Tor.rb is free and unencumbered public domain software. For more
|
100
|
-
information, see <http://unlicense.org/> or the accompanying UNLICENSE file.
|
101
|
-
|
102
|
-
[Tor]: https://www.torproject.org/
|
103
|
-
[TorDNSEL]: https://www.torproject.org/tordnsel/
|
104
|
-
[TC]: http://gitweb.torproject.org/tor.git?a=blob_plain;hb=HEAD;f=doc/spec/control-spec.txt
|
105
|
-
[OR]: http://en.wikipedia.org/wiki/Onion_routing
|
106
|
-
[Backports]: http://rubygems.org/gems/backports
|