WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 34fbd0a

Browse files
committed
Replaced form nameserver variable to nameserver class for ddr & resolver class
1 parent ec8de4f commit 34fbd0a

File tree

6 files changed

+77
-78
lines changed

6 files changed

+77
-78
lines changed

lib/ddig/ddr.rb

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ class Ddr
1212
def initialize(nameservers: nil, ip: nil)
1313
@ip = ip
1414

15-
set_nameservers(nameservers)
15+
@nameserver = Ddig::Nameserver.new(nameservers: nameservers)
16+
set_nameservers
1617

1718
# discover designated resolvers
1819
query_svcb_records
@@ -23,7 +24,7 @@ def initialize(nameservers: nil, ip: nil)
2324
def query_svcb_records
2425
@svcb_records = []
2526

26-
if @nameservers.nil? || @nameservers.empty?
27+
if @nameservers.empty?
2728
return @svcb_records
2829
end
2930

@@ -124,42 +125,16 @@ def verify_discovery
124125
end
125126
end
126127

127-
def set_nameservers(nameservers)
128-
if nameservers.nil?
129-
@nameservers = Resolv::DNS::Config.default_config_hash[:nameserver]
130-
else
131-
if nameservers.is_a?(Array)
132-
@nameservers = nameservers
133-
else
134-
@nameservers = [nameservers]
135-
end
136-
137-
@nameservers.map! { |nameserver| IPAddr.new(nameserver).to_s rescue nil }.compact!
138-
end
128+
def set_nameservers
129+
@nameservers = @nameserver.servers
139130

140131
if @ip == :ipv4
141-
@nameservers = nameservers_ipv4
132+
@nameservers = @nameserver.servers_ipv4
142133
end
143134

144135
if @ip == :ipv6
145-
@nameservers = nameservers_ipv6
136+
@nameservers = @nameserver.servers_ipv6
146137
end
147138
end
148-
149-
def nameservers_ipv4
150-
@nameservers.map do |nameserver|
151-
if IPAddr.new(nameserver).ipv4?
152-
nameserver
153-
end
154-
end.compact
155-
end
156-
157-
def nameservers_ipv6
158-
@nameservers.map do |nameserver|
159-
if IPAddr.new(nameserver).ipv6?
160-
nameserver
161-
end
162-
end.compact
163-
end
164139
end
165140
end

lib/ddig/nameserver.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ def default_servers
3030
Resolv::DNS::Config.default_config_hash[:nameserver]
3131
end
3232

33+
def servers_ipv4
34+
@servers.map do |nameserver|
35+
if IPAddr.new(nameserver).ipv4?
36+
nameserver
37+
end
38+
end.compact
39+
end
40+
41+
def servers_ipv6
42+
@servers.map do |nameserver|
43+
if IPAddr.new(nameserver).ipv6?
44+
nameserver
45+
end
46+
end.compact
47+
end
48+
3349
def validation_servers
3450
@servers.uniq.each do |server|
3551
addr = IPAddr.new(server) rescue nil

lib/ddig/resolver/do53.rb

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ def initialize(hostname:, nameservers: nil, ip: nil)
1111
@hostname = hostname
1212
@ip = ip
1313

14-
set_nameservers(nameservers)
14+
@nameserver = Ddig::Nameserver.new(nameservers: nameservers)
15+
set_nameservers
1516
end
1617

1718
def lookup
18-
if @nameservers.nil? || @nameservers.empty?
19+
if @nameservers.empty?
1920
return nil
2021
end
2122

@@ -32,37 +33,17 @@ def lookup
3233
self
3334
end
3435

35-
def set_nameservers(nameservers)
36-
if nameservers.nil?
37-
@nameservers = Resolv::DNS::Config.default_config_hash[:nameserver]
38-
else
39-
@nameservers = nameservers
40-
end
36+
def set_nameservers
37+
@nameservers = @nameserver.servers
4138

4239
if @ip == :ipv4
43-
@nameservers = nameservers_ipv4
40+
@nameservers = @nameserver.servers_ipv4
4441
end
4542

4643
if @ip == :ipv6
47-
@nameservers = nameservers_ipv6
44+
@nameservers = @nameserver.servers_ipv6
4845
end
4946
end
50-
51-
def nameservers_ipv4
52-
@nameservers.map do |nameserver|
53-
if IPAddr.new(nameserver).ipv4?
54-
nameserver
55-
end
56-
end.compact
57-
end
58-
59-
def nameservers_ipv6
60-
@nameservers.map do |nameserver|
61-
if IPAddr.new(nameserver).ipv6?
62-
nameserver
63-
end
64-
end.compact
65-
end
6647
end
6748
end
6849
end

spec/ddig/ddr_spec.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@
2020
expect(svcb_record[:svcb_record].target.to_s).to eq 'dns.google'
2121
end
2222

23-
it "return [] with empty namesevers" do
24-
@ddr = Ddig::Ddr.new(nameservers: [])
25-
26-
expect(@ddr.svcb_records).to eq []
23+
it "raise error with empty namesevers" do
24+
expect {
25+
@ddr = Ddig::Ddr.new(nameservers: [])
26+
}.to raise_error(Ddig::Error)
2727
end
2828

29-
it "return [] with invalid namesevers" do
30-
@ddr = Ddig::Ddr.new(nameservers: 'invalid')
31-
32-
expect(@ddr.svcb_records).to eq []
29+
it "raise error with invalid namesevers" do
30+
expect {
31+
@ddr = Ddig::Ddr.new(nameservers: 'invalid')
32+
}.to raise_error(Ddig::Error)
3333
end
3434
end
3535

@@ -50,16 +50,16 @@
5050
expect(designated_resolver.verify_cert).not_to eq nil
5151
end
5252

53-
it "return [] with empty namesevers" do
54-
@ddr = Ddig::Ddr.new(nameservers: [])
55-
56-
expect(@ddr.designated_resolvers).to eq []
53+
it "raise error with empty namesevers" do
54+
expect {
55+
@ddr = Ddig::Ddr.new(nameservers: [])
56+
}.to raise_error(Ddig::Error)
5757
end
5858

59-
it "return [] with invalid namesevers" do
60-
@ddr = Ddig::Ddr.new(nameservers: 'invalid')
61-
62-
expect(@ddr.designated_resolvers).to eq []
59+
it "raise error with invalid namesevers" do
60+
expect {
61+
@ddr = Ddig::Ddr.new(nameservers: 'invalid')
62+
}.to raise_error(Ddig::Error)
6363
end
6464
end
6565
end

spec/ddig/nameserver_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,32 @@
5050
end
5151
end
5252
end
53+
54+
context "#servers_ipv4" do
55+
it "return only ipv4 nameservers with namesevers" do
56+
@nameserver = Ddig::Nameserver.new(nameservers: ['8.8.8.8', '2001:4860:4860::8888'])
57+
58+
expect(@nameserver.servers_ipv4).to eq ['8.8.8.8']
59+
end
60+
61+
it "return empty array without ipv4 namesevers" do
62+
@nameserver = Ddig::Nameserver.new(nameservers: ['2001:4860:4860::8888'])
63+
64+
expect(@nameserver.servers_ipv4).to eq []
65+
end
66+
end
67+
68+
context "#servers_ipv6" do
69+
it "return only ipv6 nameservers with namesevers" do
70+
@nameserver = Ddig::Nameserver.new(nameservers: ['8.8.8.8', '2001:4860:4860::8888'])
71+
72+
expect(@nameserver.servers_ipv6).to eq ['2001:4860:4860::8888']
73+
end
74+
75+
it "return empty array without ipv6 namesevers" do
76+
@nameserver = Ddig::Nameserver.new(nameservers: ['8.8.8.8'])
77+
78+
expect(@nameserver.servers_ipv6).to eq []
79+
end
80+
end
5381
end

spec/ddig/resolver/do53_spec.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,13 @@
6464
context "#lookup: with invalid nameserver" do
6565
before(:each) do
6666
@nameservers = ['invalid']
67-
68-
@do53 = Ddig::Resolver::Do53.new(hostname: 'dns.google', nameservers: @nameservers)
6967
end
7068

7169
it "raise Error" do
7270
expect {
73-
@do53.lookup
74-
}.to raise_error(StandardError) # ruby 3.3+: Socket::ResolutionError, ruby 3.2-: SocketError
71+
@do53 = Ddig::Resolver::Do53.new(hostname: 'dns.google', nameservers: @nameservers)
72+
#@do53.lookup
73+
}.to raise_error(Ddig::Error)
7574
end
7675
end
7776

0 commit comments

Comments
 (0)