]> projects.mako.cc - selectricity/blobdiff - lib/whois/whois.rb
merged in from code from the other master
[selectricity] / lib / whois / whois.rb
index 9b07aef9e5108a37d46b39e634fc29592a053d8d..962a399c9283b4a12d054f0dcc6d2506d91caf23 100755 (executable)
@@ -4,6 +4,8 @@ require 'socket'
 require 'resolv'
 require 'ipaddr'
 require 'yaml'
+require 'timeout'
+
 require File.dirname(__FILE__) + '/server/server'
 
 # Module for manage all Whois Class
@@ -92,7 +94,11 @@ module Whois
         def search_host
             begin
                 if @host_search
-                    @host = Resolv.getname self.ip.to_s
+                   begin
+                     timeout(5) {@host = Resolv.getname self.ip.to_s}
+                   rescue Timeout::Error
+                     @host=nil
+                   end
                 else
                     @host = nil
                 end
@@ -121,9 +127,10 @@ module Whois
           arr_tmp = ip_hash.sort{|b,c| c[0][/\/(.+)/, 1].to_i <=> b[0][/\/(.+)/, 1].to_i}
           arr_tmp.each do |l|
             ip_range = IPAddr.new l[0]
-            if ip_range.include? self.ip
+            if ip_range.include? self.ip and l[1].length > 0
               return Object.instance_eval("Server::#{l[1]}.new")
             end
+            return Server::Arin.new
           end
         end
 
@@ -132,7 +139,7 @@ module Whois
           ipv6_list = YAML::load_file(File.dirname(__FILE__) + '/data/ipv6.yaml')
           server = server_with_hash(ipv6_list)
           unless server.kind_of? Server::Server
-            raise WhoisException.new("no server found for this IPv6 : #{self.ip}")
+            return Server::Arin.new
           else
             return server
           end
@@ -143,7 +150,7 @@ module Whois
           ipv4_list = YAML::load_file(File.dirname(__FILE__) + '/data/ipv4.yaml')
           server = server_with_hash(ipv4_list)
           unless server.kind_of? Server::Server
-            raise WhoisException.new("no server found for this IPv4 : #{self.ip}")
+            return Server::Ripe.new
           else
             return server
           end

Benjamin Mako Hill || Want to submit a patch?