redirect_to quickvote_url( :ident => params[:ident] )
end
- def mapvoters
+ def list_voters
@map = GMap.new("map_div_id")
@map.control_init(:large_map => true, :map_type => true)
center = nil
-
- QuickVote.ident_to_quickvote(params[:id]).voters.each do |voter|
+ @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
<div id="header">
<div id="top-bar">
- <a href="/account/login">login</a>
- <a href="/account/signup">sign up</a>
- <a href="/site/about">help/about</a>
+ <% if session[:user]%>
+ <%= link_to User.find(session[:user]).login.capitalize,
+ :controller => "account",
+ :action => "summary", :id => session[:user][:id] %>
+ <%= link_to( 'Log out', :controller => 'account',
+ :action => 'logout' )%>
+ <% else %>
+ <%= link_to("login", :controller => "account", :action => "login")
+ %>
+ <%= link_to("sign up", :controller => "account",
+ :action => "signup")%>
+ <% end -%>
+ <%= link_to ("help/about", :controller => "site",
+ :action => 'about')%>
</div>
<a href="index.html"><h1>selectricity: voting machinery for the masses</h1></a>
</div>
--- /dev/null
+<%= GMap.header %>
+<%require('whois/whois') %>
+<div id="title-header">
+ <span class="header">Quickvote</span>
+ <span class="subheader">Voters</span>
+ </div>
+
+ <div class="clear-div"></div>
+<%= @map.to_html %>
+<%= @map.div(:width => 550, :height => 400) %>
+<br><br>
+<table class="voterbox">
+<tr>
+<th>IP/Host</th>
+<th>Organization Name</th>
+</tr>
+<% for voter in @election.voters %>
+ <% next unless voter.voted? %>
+ <tr>
+ <td><% begin %>
+ <% raise ArgumentError.new, "Local Server" if voter.ipaddress == "127.0.0.1" %>
+ <% raise ArgumentError.new, "XML-RPC Voter" if voter.ipaddress == "XMLRPC Request" %>
+ <% # Test for intranet addresses to avoid untimely DNS timeouts.
+ # Of course the last regex is horrible; matches a few extra IP's that aren't intranet
+ raise ArgumentError.new, "Intranet: #{voter.ipaddress}" if voter.ipaddress =~
+ /^192\.168/ or voter.ipaddress =~ /^10\./ or voter.ipaddress =~ /^169\.254/ or
+ voter.ipaddress =~ /^172\.[1-3]/
+ %>
+ <% w=nil
+ if Cache and w=Cache.get("WHOIS:#{voter.ipaddress}")
+ elsif Cache
+ w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
+ w.search_whois
+ Cache.set("WHOIS:#{voter.ipaddress}", w)
+ else
+ w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
+ w.search_whois
+ end
+
+ %>
+ <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
+ </td>
+ <td>
+ <%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 %>
+ </td>
+ <td><%=h err%>
+ <% rescue NoMethodError %>
+ DNS Unreachable
+ </td>
+ <td> DNS Unreachable
+ <% end %>
+ </td>
+ </tr>
+<% end %>
+</table>
+
+++ /dev/null
-<%= GMap.header %>
-<%= @map.to_html %>
-<%= @map.div(:width => 800, :height => 400) %>
<span class="subheader"></span>
</div>
-<p><%= link_to "[Stalk Voters]", :controller => "quickvote", :action => "mapvoters", :id => @election.id %></p>
-<table class="voterbox">
-<tr>
-<th>IP/Host</th>
-<th>Origin</th>
-<th>Vote</th>
-</tr>
-<% for voter in @election.voters %>
- <% next unless voter.voted? %>
- <tr>
- <td><% begin %>
- <% raise ArgumentError.new, "Local Server" if voter.ipaddress == "127.0.0.1" %>
- <% raise ArgumentError.new, "XML-RPC Voter" if voter.ipaddress == "XMLRPC Request" %>
- <% w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)%>
- <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
- </td>
- <td>
- <%w.search_whois%>
- <%=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 %>
-
- <% rescue ArgumentError => err %>
- <%=h err %>
- </td>
- <td><%=h err%>
- <% rescue NoMethodError %>
- DNS Unreachable
- </td>
- <td> DNS Unreachable
- <% end %>
- </td>
- <td><%= voter.vote.votestring %></td>
- </tr>
-<% end %>
-</table>
-
+<p><%= link_to "[View All Voters]", :controller => "quickvote", :action => "list_voters", :id => @election.id %></p>
<br />
<!--
ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ\r
\r
production:\r
- thepochisuperstarmegashow.com: ABQIAAAAzMUFFnT9uH0Sfg76Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDmlRT6e90j135zat56yhJKQlWnkaidDIQ\r
- example.com: ABQIAAAAzMUFFnT9uH0Sfg98Y4kbhGFJQa0g3IQ9GZqIMmInSLrthJKGDmlRT98f4j135zat56yjRKQlWnkmod3TB\r
+ ABQIAAAA479zRK1hoNqMcKLTMuBcTRQ0mFvgRda1vOZQqJO6gQItognzGRQueA871M_O5_Q9Pd9xs4Ah4SNYTg\r
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