+<%= GMap.header %>
+
+<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= 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>
+ </tr>
+<% end %>
+</table>
+