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
File tree Expand file tree Collapse file tree 3 files changed +107
-2
lines changed
Expand file tree Collapse file tree 3 files changed +107
-2
lines changed Original file line number Diff line number Diff line change 11# frozen_string_literal: true
22
33require_relative "ddig/version"
4+ require_relative "ddig/nameserver"
45require_relative "ddig/resolver/do53"
56require_relative "ddig/resolver/dot"
67require_relative "ddig/ddr"
@@ -12,8 +13,10 @@ def self.lookup(hostname, nameservers: nil)
1213 @hostname = hostname
1314 @nameservers = nameservers
1415
15- @do53_ipv4 = Ddig ::Resolver ::Do53 . new ( hostname : @hostname , nameservers : @nameservers , ip : :ipv4 ) . lookup
16- @do53_ipv6 = Ddig ::Resolver ::Do53 . new ( hostname : @hostname , nameservers : @nameservers , ip : :ipv6 ) . lookup
16+ @nameserver = Ddig ::Nameserver . new ( nameservers : @nameservers )
17+
18+ @do53_ipv4 = Ddig ::Resolver ::Do53 . new ( hostname : @hostname , nameservers : @nameserver . servers , ip : :ipv4 ) . lookup
19+ @do53_ipv6 = Ddig ::Resolver ::Do53 . new ( hostname : @hostname , nameservers : @nameserver . servers , ip : :ipv6 ) . lookup
1720
1821 @ddr = Ddig ::Ddr . new ( nameservers : @nameservers )
1922
Original file line number Diff line number Diff line change 1+ require 'resolv'
2+
3+ module Ddig
4+ class Nameserver
5+ attr_reader :servers
6+
7+ def initialize ( nameservers : nil )
8+ @nameservers = nameservers
9+
10+ if @nameservers . nil?
11+ @servers = default_servers
12+ elsif @nameservers . is_a? ( Array )
13+ @servers = @nameservers
14+ else
15+ @servers = [ @nameservers ]
16+ end
17+
18+ validation_servers
19+ end
20+
21+ def servers
22+ if @servers . count . zero?
23+ raise Ddig ::Error . new ( 'nameservers required' )
24+ end
25+
26+ @servers
27+ end
28+
29+ def default_servers
30+ Resolv ::DNS ::Config . default_config_hash [ :nameserver ]
31+ end
32+
33+ def validation_servers
34+ @servers . uniq . each do |server |
35+ addr = IPAddr . new ( server ) rescue nil
36+ if addr . nil?
37+ puts "Warning: nameservers has invalid ip address (nameserver: #{ server } )"
38+ @servers . delete ( server )
39+ end
40+ end
41+
42+ if @servers . count . zero?
43+ return false
44+ end
45+
46+ return true
47+ end
48+ end
49+ end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ RSpec . describe Ddig ::Nameserver do
4+ context "#servers" do
5+ it "return nameservers with namesevers" do
6+ @nameserver = Ddig ::Nameserver . new ( nameservers : [ '8.8.8.8' ] )
7+
8+ expect ( @nameserver . servers ) . to eq [ '8.8.8.8' ]
9+ end
10+
11+ it "return nameservers with string value of namesevers" do
12+ @nameserver = Ddig ::Nameserver . new ( nameservers : '8.8.8.8' )
13+
14+ expect ( @nameserver . servers ) . to eq [ '8.8.8.8' ]
15+ end
16+
17+ it "return default nameservers without namesevers" do
18+ @nameserver = Ddig ::Nameserver . new ( )
19+
20+ expect ( @nameserver . servers . count ) . not_to eq 0
21+ end
22+
23+ it "return default nameservers with nil value of namesevers" do
24+ @nameserver = Ddig ::Nameserver . new ( nameservers : nil )
25+
26+ expect ( @nameserver . servers . count ) . not_to eq 0
27+ end
28+
29+ it "raise error when nameservers is blank" do
30+ @nameserver = Ddig ::Nameserver . new ( nameservers : [ ] )
31+
32+ expect {
33+ @nameserver . servers
34+ } . to raise_error ( Ddig ::Error )
35+ end
36+
37+ context "with invalid value of namesevers" do
38+ it "return only valid nameservers with valid and invalid value of nameservers" do
39+ @nameserver = Ddig ::Nameserver . new ( nameservers : [ 'invalid' , '8.8.8.8' ] )
40+
41+ expect ( @nameserver . servers ) . to eq [ '8.8.8.8' ]
42+ end
43+
44+ it "raise error when nameservers is blank" do
45+ @nameserver = Ddig ::Nameserver . new ( nameservers : [ 'invalid' ] )
46+
47+ expect {
48+ @nameserver . servers
49+ } . to raise_error ( Ddig ::Error )
50+ end
51+ end
52+ end
53+ end
You can’t perform that action at this time.
0 commit comments