diff --git a/lib/whois/server/adapters/base.rb b/lib/whois/server/adapters/base.rb index 6b1e24d8e..92cc032fd 100644 --- a/lib/whois/server/adapters/base.rb +++ b/lib/whois/server/adapters/base.rb @@ -28,6 +28,10 @@ class Base # Default WHOIS request port. DEFAULT_WHOIS_PORT = 43 + # Default bind hostname. + DEFAULT_BIND_HOST = "0.0.0.0" + + # @return [Symbol] The type of WHOIS server attr_reader :type # @return [String] The allocation this server is responsible for. @@ -150,7 +154,7 @@ def query_the_socket(query, host, port = nil) query, host, port || options[:port] || DEFAULT_WHOIS_PORT, - options[:bind_host], + options[:bind_host] || DEFAULT_BIND_HOST, options[:bind_port] ) end @@ -162,6 +166,7 @@ def query_the_socket(query, host, port = nil) # # @api internal def ask_the_socket(query, host, port, local_host, local_port) + args = [host, port, local_host, local_port].compact client = TCPSocket.open(host, port, local_host, local_port) client.write("#{query}\r\n") # I could use put(foo) and forget the \n client.read # but write/read is more symmetric than puts/read diff --git a/spec/integration_spec.rb b/spec/integration_spec.rb index d1a586095..6a9cefa39 100644 --- a/spec/integration_spec.rb +++ b/spec/integration_spec.rb @@ -6,7 +6,7 @@ it "works" do with_definitions do Whois::Server.define(:tld, ".it", "whois.nic.it") - Whois::Server::Adapters::Standard.any_instance.expects(:ask_the_socket).with("example.it", "whois.nic.it", 43, nil, nil).returns(<<-EOS) + Whois::Server::Adapters::Standard.any_instance.expects(:ask_the_socket).with("example.it", "whois.nic.it", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(<<-EOS) Domain: example.it Status: AVAILABLE EOS diff --git a/spec/whois/server/adapters/afilias_spec.rb b/spec/whois/server/adapters/afilias_spec.rb index dcf76eb11..c7e744a65 100644 --- a/spec/whois/server/adapters/afilias_spec.rb +++ b/spec/whois/server/adapters/afilias_spec.rb @@ -13,7 +13,7 @@ it "returns the WHOIS record" do response = "No match for DOMAIN.TEST." expected = response - @server.expects(:ask_the_socket).with("domain.test", "whois.afilias-grs.info", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("domain.test", "whois.afilias-grs.info", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected @@ -27,8 +27,8 @@ referral = File.read(fixture("referrals/afilias.bz.txt")) response = "Match for DOMAIN.TEST." expected = referral + "\n" + response - @server.expects(:ask_the_socket).with("domain.test", "whois.afilias-grs.info", 43, nil, nil).returns(referral) - @server.expects(:ask_the_socket).with("domain.test", "whois.belizenic.bz", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("domain.test", "whois.afilias-grs.info", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(referral) + @server.expects(:ask_the_socket).with("domain.test", "whois.belizenic.bz", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected diff --git a/spec/whois/server/adapters/formatted_spec.rb b/spec/whois/server/adapters/formatted_spec.rb index fde7bfb0d..5e9fe8c8d 100644 --- a/spec/whois/server/adapters/formatted_spec.rb +++ b/spec/whois/server/adapters/formatted_spec.rb @@ -12,7 +12,7 @@ response = "Whois Response" expected = response server = klass.new(*@definition) - server.expects(:ask_the_socket).with("-T dn,ace -C US-ASCII domain.de", "whois.denic.de", 43, nil, nil).returns(response) + server.expects(:ask_the_socket).with("-T dn,ace -C US-ASCII domain.de", "whois.denic.de", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = server.query("domain.de") record.to_s.should == expected @@ -33,7 +33,7 @@ it "sends the request to given port" do response = "Whois Response" server = klass.new(:tld, ".de", "whois.denic.de", { :format => "-T dn,ace -C US-ASCII %s", :port => 20 }) - server.expects(:ask_the_socket).with("-T dn,ace -C US-ASCII domain.de", "whois.denic.de", 20, nil, nil).returns(response) + server.expects(:ask_the_socket).with("-T dn,ace -C US-ASCII domain.de", "whois.denic.de", 20, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) server.query("domain.de") end diff --git a/spec/whois/server/adapters/pir_spec.rb b/spec/whois/server/adapters/pir_spec.rb index 0351bc228..9a060b47a 100644 --- a/spec/whois/server/adapters/pir_spec.rb +++ b/spec/whois/server/adapters/pir_spec.rb @@ -13,7 +13,7 @@ it "returns the WHOIS record" do response = "No match for DOMAIN.TEST." expected = response - @server.expects(:ask_the_socket).with("FULL domain.test", "whois.publicinterestregistry.net", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("FULL domain.test", "whois.publicinterestregistry.net", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected @@ -27,8 +27,8 @@ referral = File.read(fixture("referrals/pir.org.txt")) response = "Match for DOMAIN.TEST." expected = referral + "\n" + response - @server.expects(:ask_the_socket).with("FULL domain.test", "whois.publicinterestregistry.net", 43, nil, nil).returns(referral) - @server.expects(:ask_the_socket).with("domain.test", "whois.iana.org", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("FULL domain.test", "whois.publicinterestregistry.net", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(referral) + @server.expects(:ask_the_socket).with("domain.test", "whois.iana.org", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected diff --git a/spec/whois/server/adapters/standard_spec.rb b/spec/whois/server/adapters/standard_spec.rb index 2cddc5c6f..60d2e5d87 100644 --- a/spec/whois/server/adapters/standard_spec.rb +++ b/spec/whois/server/adapters/standard_spec.rb @@ -12,7 +12,7 @@ response = "Whois Response" expected = response server = klass.new(*@definition) - server.expects(:ask_the_socket).with("domain.test", "whois.test", 43, nil, nil).returns(response) + server.expects(:ask_the_socket).with("domain.test", "whois.test", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = server.query("domain.test") record.to_s.should == expected @@ -23,7 +23,7 @@ it "sends the request to given port" do response = "Whois Response" server = klass.new(:tld, ".test", "whois.test", { :port => 20 }) - server.expects(:ask_the_socket).with("domain.test", "whois.test", 20, nil, nil).returns(response) + server.expects(:ask_the_socket).with("domain.test", "whois.test", 20, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) server.query("domain.test") end diff --git a/spec/whois/server/adapters/verisign_spec.rb b/spec/whois/server/adapters/verisign_spec.rb index 951276e66..cb6f3d2b7 100644 --- a/spec/whois/server/adapters/verisign_spec.rb +++ b/spec/whois/server/adapters/verisign_spec.rb @@ -13,7 +13,7 @@ it "returns the WHOIS record" do response = "No match for DOMAIN.TEST." expected = response - @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected @@ -27,8 +27,8 @@ referral = File.read(fixture("referrals/crsnic.com.txt")) response = "Match for DOMAIN.TEST." expected = referral + "\n" + response - @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, nil, nil).returns(referral) - @server.expects(:ask_the_socket).with("domain.test", "whois.markmonitor.com", 43, nil, nil).returns(response) + @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(referral) + @server.expects(:ask_the_socket).with("domain.test", "whois.markmonitor.com", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(response) record = @server.query("domain.test") record.to_s.should == expected @@ -38,7 +38,7 @@ it "ignore referral when is not defined" do referral = File.read(fixture("referrals/crsnic.com_referral_not_defined.txt")) - @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, nil, nil).returns(referral) + @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(referral) @server.expects(:ask_the_socket).never record = @server.query("domain.test") @@ -47,8 +47,8 @@ it "extracts the closest referral when multiple referrals" do referral = File.read(fixture("referrals/crsnic.com_referral_multiple.txt")) - @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, nil, nil).returns(referral) - @server.expects(:ask_the_socket).with("domain.test", "whois.markmonitor.com", 43, nil, nil).returns("") + @server.expects(:ask_the_socket).with("=domain.test", "whois.test", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns(referral) + @server.expects(:ask_the_socket).with("domain.test", "whois.markmonitor.com", 43, Whois::Server::Adapters::Base::DEFAULT_BIND_HOST, nil).returns("") record = @server.query("domain.test") record.parts.should have(2).parts