resolver_replace 0.0.2 → 0.0.3
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/example/example.rb +9 -4
- data/lib/resolver_replace/replace.rb +75 -0
- data/lib/resolver_replace.rb +1 -74
- data/resolver_replace.gemspec +2 -2
- metadata +8 -8
- data/Gemfile.lock +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2d7be38119515d08fdb024771a094aebbe81ff6a
|
|
4
|
+
data.tar.gz: 37cb391072b4c8fa64485ae7f5ae0880fb86586f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8d9ba209c965612564954dba47a1048049c55cf7dac223c52018117660142b09dac52188d4dd1f39bf1cd7d7d5380b11d82d030b2bf7ae943fe5396aed6847f8
|
|
7
|
+
data.tar.gz: 7f57f57ad114affb76ab0868019058c84158fe44ce6b4454181e0b067c33def5570ed5b608e41d75f3846eea40fe719cdf4f2eef508479199e62db8c6c3df8df
|
data/CHANGELOG.md
CHANGED
data/example/example.rb
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'resolv'
|
|
2
|
+
require 'resolver_replace'
|
|
2
3
|
|
|
3
4
|
resolver = Resolv::DNS.new(:nameserver => ['210.251.121.21'],
|
|
4
5
|
:search => ['ruby-lang.org'],
|
|
5
6
|
:ndots => 1)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
addr = IPSocket.getaddress('ruby-lang.org') # Should not use ResolverReplace yet
|
|
9
|
+
|
|
10
|
+
ResolverReplace.register!(
|
|
11
|
+
getaddress: Proc.new {|host| resolver.getaddress(host) },
|
|
12
|
+
getaddresses: Proc.new {|host| resolver.getaddresses(host) },
|
|
10
13
|
error_class: Resolv::ResolvError,
|
|
11
14
|
)
|
|
15
|
+
|
|
16
|
+
addr = IPSocket.getaddress('ruby-lang.org') # Should use ResolverReplace
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# reference: ruby/lib/resolv-replace.rb
|
|
2
|
+
require 'socket'
|
|
3
|
+
require 'resolver_replace'
|
|
4
|
+
|
|
5
|
+
class << IPSocket
|
|
6
|
+
# :stopdoc:
|
|
7
|
+
alias original_resolver_getaddress getaddress
|
|
8
|
+
# :startdoc:
|
|
9
|
+
def getaddress(host)
|
|
10
|
+
begin
|
|
11
|
+
return ResolverReplace.getaddress(host).to_s
|
|
12
|
+
rescue ResolverReplace.error_class => e
|
|
13
|
+
raise SocketError, "#{e.class} #{e.message}"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class TCPSocket < IPSocket
|
|
19
|
+
# :stopdoc:
|
|
20
|
+
alias original_resolver_initialize initialize
|
|
21
|
+
# :startdoc:
|
|
22
|
+
def initialize(host, serv, *rest)
|
|
23
|
+
rest[0] = IPSocket.getaddress(rest[0]) unless rest.empty?
|
|
24
|
+
original_resolver_initialize(IPSocket.getaddress(host), serv, *rest)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class UDPSocket < IPSocket
|
|
29
|
+
# :stopdoc:
|
|
30
|
+
alias original_resolver_bind bind
|
|
31
|
+
# :startdoc:
|
|
32
|
+
def bind(host, port)
|
|
33
|
+
host = IPSocket.getaddress(host) if host != ""
|
|
34
|
+
original_resolver_bind(host, port)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# :stopdoc:
|
|
38
|
+
alias original_resolver_connect connect
|
|
39
|
+
# :startdoc:
|
|
40
|
+
def connect(host, port)
|
|
41
|
+
original_resolver_connect(IPSocket.getaddress(host), port)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# :stopdoc:
|
|
45
|
+
alias original_resolver_send send
|
|
46
|
+
# :startdoc:
|
|
47
|
+
def send(mesg, flags, *rest)
|
|
48
|
+
if rest.length == 2
|
|
49
|
+
host, port = rest
|
|
50
|
+
begin
|
|
51
|
+
addrs = ResolverReplace.getaddresses(host)
|
|
52
|
+
rescue ResolverReplace.error_class => e
|
|
53
|
+
raise SocketError, "#{e.class} #{e.message}"
|
|
54
|
+
end
|
|
55
|
+
addrs[0...-1].each {|addr|
|
|
56
|
+
begin
|
|
57
|
+
return original_resolver_send(mesg, flags, addr, port)
|
|
58
|
+
rescue SystemCallError
|
|
59
|
+
end
|
|
60
|
+
}
|
|
61
|
+
original_resolver_send(mesg, flags, addrs[-1], port)
|
|
62
|
+
else
|
|
63
|
+
original_resolver_send(mesg, flags, *rest)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
class SOCKSSocket < TCPSocket
|
|
69
|
+
# :stopdoc:
|
|
70
|
+
alias original_resolver_initialize initialize
|
|
71
|
+
# :startdoc:
|
|
72
|
+
def initialize(host, serv)
|
|
73
|
+
original_resolver_initialize(IPSocket.getaddress(host), port)
|
|
74
|
+
end
|
|
75
|
+
end if defined? SOCKSSocket
|
data/lib/resolver_replace.rb
CHANGED
|
@@ -9,6 +9,7 @@ class ResolverReplace
|
|
|
9
9
|
raise ArgumentError, 'getaddresses is required'
|
|
10
10
|
end
|
|
11
11
|
@error_class = params[:error_class] || StandardError
|
|
12
|
+
require 'resolver_replace/replace.rb'
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def self.getaddress(host)
|
|
@@ -28,77 +29,3 @@ class ResolverReplace
|
|
|
28
29
|
end
|
|
29
30
|
end
|
|
30
31
|
|
|
31
|
-
# reference: ruby/lib/resolv-replace.rb
|
|
32
|
-
require 'socket'
|
|
33
|
-
|
|
34
|
-
class << IPSocket
|
|
35
|
-
# :stopdoc:
|
|
36
|
-
alias original_resolver_getaddress getaddress
|
|
37
|
-
# :startdoc:
|
|
38
|
-
def getaddress(host)
|
|
39
|
-
begin
|
|
40
|
-
return ResolverReplace.getaddress(host).to_s
|
|
41
|
-
rescue ResolverReplace.error_class => e
|
|
42
|
-
raise SocketError, "#{e.class} #{e.message}"
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
class TCPSocket < IPSocket
|
|
48
|
-
# :stopdoc:
|
|
49
|
-
alias original_resolver_initialize initialize
|
|
50
|
-
# :startdoc:
|
|
51
|
-
def initialize(host, serv, *rest)
|
|
52
|
-
rest[0] = IPSocket.getaddress(rest[0]) unless rest.empty?
|
|
53
|
-
original_resolver_initialize(IPSocket.getaddress(host), serv, *rest)
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
class UDPSocket < IPSocket
|
|
58
|
-
# :stopdoc:
|
|
59
|
-
alias original_resolver_bind bind
|
|
60
|
-
# :startdoc:
|
|
61
|
-
def bind(host, port)
|
|
62
|
-
host = IPSocket.getaddress(host) if host != ""
|
|
63
|
-
original_resolver_bind(host, port)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# :stopdoc:
|
|
67
|
-
alias original_resolver_connect connect
|
|
68
|
-
# :startdoc:
|
|
69
|
-
def connect(host, port)
|
|
70
|
-
original_resolver_connect(IPSocket.getaddress(host), port)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# :stopdoc:
|
|
74
|
-
alias original_resolver_send send
|
|
75
|
-
# :startdoc:
|
|
76
|
-
def send(mesg, flags, *rest)
|
|
77
|
-
if rest.length == 2
|
|
78
|
-
host, port = rest
|
|
79
|
-
begin
|
|
80
|
-
addrs = ResolverReplace.getaddresses(host)
|
|
81
|
-
rescue ResolverReplace.error_class => e
|
|
82
|
-
raise SocketError, "#{e.class} #{e.message}"
|
|
83
|
-
end
|
|
84
|
-
addrs[0...-1].each {|addr|
|
|
85
|
-
begin
|
|
86
|
-
return original_resolver_send(mesg, flags, addr, port)
|
|
87
|
-
rescue SystemCallError
|
|
88
|
-
end
|
|
89
|
-
}
|
|
90
|
-
original_resolver_send(mesg, flags, addrs[-1], port)
|
|
91
|
-
else
|
|
92
|
-
original_resolver_send(mesg, flags, *rest)
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
class SOCKSSocket < TCPSocket
|
|
98
|
-
# :stopdoc:
|
|
99
|
-
alias original_resolver_initialize initialize
|
|
100
|
-
# :startdoc:
|
|
101
|
-
def initialize(host, serv)
|
|
102
|
-
original_resolver_initialize(IPSocket.getaddress(host), port)
|
|
103
|
-
end
|
|
104
|
-
end if defined? SOCKSSocket
|
data/resolver_replace.gemspec
CHANGED
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = "resolver_replace"
|
|
7
|
-
spec.version = "0.0.
|
|
7
|
+
spec.version = "0.0.3"
|
|
8
8
|
spec.authors = ["Naotoshi Seo"]
|
|
9
9
|
spec.email = ["sonots@gmail.com"]
|
|
10
10
|
spec.summary = %q{Replace the DNS resolver}
|
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
18
18
|
spec.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
-
spec.add_development_dependency "bundler"
|
|
20
|
+
spec.add_development_dependency "bundler"
|
|
21
21
|
spec.add_development_dependency "rake"
|
|
22
22
|
spec.add_development_dependency "rspec"
|
|
23
23
|
spec.add_development_dependency "pry"
|
metadata
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resolver_replace
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Naotoshi Seo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-07-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '0'
|
|
20
20
|
type: :development
|
|
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: '
|
|
26
|
+
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -90,7 +90,6 @@ files:
|
|
|
90
90
|
- ".gitignore"
|
|
91
91
|
- CHANGELOG.md
|
|
92
92
|
- Gemfile
|
|
93
|
-
- Gemfile.lock
|
|
94
93
|
- LICENSE.txt
|
|
95
94
|
- README.md
|
|
96
95
|
- Rakefile
|
|
@@ -98,6 +97,7 @@ files:
|
|
|
98
97
|
- lib/resolver_replace.rb
|
|
99
98
|
- lib/resolver_replace/error.rb
|
|
100
99
|
- lib/resolver_replace/plugins/mysql2.rb
|
|
100
|
+
- lib/resolver_replace/replace.rb
|
|
101
101
|
- resolver_replace.gemspec
|
|
102
102
|
- spec/resolver_replace_spec.rb
|
|
103
103
|
- spec/spec_helper.rb
|
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
121
121
|
version: '0'
|
|
122
122
|
requirements: []
|
|
123
123
|
rubyforge_project:
|
|
124
|
-
rubygems_version: 2.2.
|
|
124
|
+
rubygems_version: 2.2.0
|
|
125
125
|
signing_key:
|
|
126
126
|
specification_version: 4
|
|
127
127
|
summary: Replace the DNS resolver
|
data/Gemfile.lock
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
resolver_replace (0.0.2)
|
|
5
|
-
|
|
6
|
-
GEM
|
|
7
|
-
remote: https://rubygems.org/
|
|
8
|
-
specs:
|
|
9
|
-
coderay (1.1.0)
|
|
10
|
-
diff-lcs (1.2.5)
|
|
11
|
-
method_source (0.8.2)
|
|
12
|
-
mysql2 (0.3.16)
|
|
13
|
-
pry (0.9.12.6)
|
|
14
|
-
coderay (~> 1.0)
|
|
15
|
-
method_source (~> 0.8)
|
|
16
|
-
slop (~> 3.4)
|
|
17
|
-
pry-nav (0.2.3)
|
|
18
|
-
pry (~> 0.9.10)
|
|
19
|
-
rake (10.3.2)
|
|
20
|
-
rspec (3.0.0)
|
|
21
|
-
rspec-core (~> 3.0.0)
|
|
22
|
-
rspec-expectations (~> 3.0.0)
|
|
23
|
-
rspec-mocks (~> 3.0.0)
|
|
24
|
-
rspec-core (3.0.2)
|
|
25
|
-
rspec-support (~> 3.0.0)
|
|
26
|
-
rspec-expectations (3.0.2)
|
|
27
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
28
|
-
rspec-support (~> 3.0.0)
|
|
29
|
-
rspec-mocks (3.0.2)
|
|
30
|
-
rspec-support (~> 3.0.0)
|
|
31
|
-
rspec-support (3.0.2)
|
|
32
|
-
slop (3.5.0)
|
|
33
|
-
|
|
34
|
-
PLATFORMS
|
|
35
|
-
ruby
|
|
36
|
-
|
|
37
|
-
DEPENDENCIES
|
|
38
|
-
bundler (~> 1.6)
|
|
39
|
-
mysql2
|
|
40
|
-
pry
|
|
41
|
-
pry-nav
|
|
42
|
-
rake
|
|
43
|
-
resolver_replace!
|
|
44
|
-
rspec
|