Merge jdong
authorJohn Dong <jdong@mit.edu>
Fri, 31 Aug 2007 15:44:38 +0000 (11:44 -0400)
committerJohn Dong <jdong@mit.edu>
Fri, 31 Aug 2007 15:44:38 +0000 (11:44 -0400)
app/controllers/quickvote_controller.rb
app/views/quickvote/list_voters.rhtml
lib/whois/whois.rb

index d8d3d59e59139b9499c70c514cc77b8442203359..b9c790f40f872fa99048f10aec38cc76abc348a1 100644 (file)
@@ -168,7 +168,14 @@ class QuickvoteController < ApplicationController
     @election=QuickVote.ident_to_quickvote(params[:id])
     @election.voters.each do |voter|
       next unless voter.ipaddress
-      location = GeoKit::Geocoders::IpGeocoder.geocode(voter.ipaddress)
+      location=nil
+      if Cache and location=Cache.get("GEO:#{voter.ipaddress}")
+      elsif Cache
+        location = GeoKit::Geocoders::IpGeocoder.geocode(voter.ipaddress)
+        Cache.set "GEO:#{voter.ipaddress}", location
+      else
+        location = GeoKit::Geocoders::IpGeocoder.geocode(voter.ipaddress)
+      end
       next unless location.lng and location.lat
 
       unless center
index 1672499f0a3b38af7fe185ee5e750e4a5b703667..be11290b444cad0bb0bbb0258b4e264bb60343ee 100644 (file)
@@ -1,5 +1,5 @@
 <%= GMap.header %> 
-
+<%require('whois/whois') %>
 <div id="title-header">
     <span class="header">Quickvote</span>
       <span class="subheader">Voters</span>
             voter.ipaddress =~ /^172\.[1-3]/
             %>
             <% w=nil
+            puts "WHOIS #{voter.ipaddress}"
             if Cache and w=Cache.get("WHOIS:#{voter.ipaddress}")
             elsif Cache
+              puts "CREATE"
               w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
+              puts "SEARCH"
               w.search_whois
+              puts "DONE"
               Cache.set("WHOIS:#{voter.ipaddress}", w)
             else
               w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
         <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
       </td>
       <td>
-        <%=h (w.all.grep(/^(OrgName|org-name)/)[0] or "").sub(/^(OrgName|org-name)\:/,'').strip -%> - <%=  (w.all.grep(/^(NetName|netname)/)[0] or "").sub(/^(NetName|netname)\:/,'').strip %>
+        <%org=(w.all.grep(/^(OrgName|org-name)/)[0] or "").sub(/^(OrgName|org-name)\:/,'').strip+" - "+ (w.all.grep(/^(NetName|netname)/)[0] or "").sub(/^(NetName|netname)\:/,'').strip %>
+        <% if org =~ /IANA/ %>
+          <%= "No additional information" %>
+        <% else %>
+          <%= h(org) %>
+        <% end %>
 
     <% rescue ArgumentError => err %>
       <%=h err %>
index 9b07aef9e5108a37d46b39e634fc29592a053d8d..7cc6e9d1eea43efef502e6ac0d4ea406f156b440 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::Ripe.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::Ripe.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?