@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
<%= 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 %>
require 'resolv'
require 'ipaddr'
require 'yaml'
+require 'timeout'
+
require File.dirname(__FILE__) + '/server/server'
# Module for manage all Whois Class
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
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
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
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