merged from devel
[selectricity] / app / views / quickvote / list_voters.rhtml
1 <%= GMap.header %> 
2 <%require('whois/whois') %>
3 <div id="title-header">
4     <span class="header">Quickvote</span>
5       <span class="subheader">Voters</span>
6     </div>
7     
8   <div class="clear-div"></div>
9 <%= @map.to_html %>  
10 <%= @map.div(:width => 550, :height => 400) %> 
11 <br><br>
12 <table class="voterbox">
13 <tr>
14 <th>IP/Host</th>
15 <th>Organization Name</th>
16 </tr>
17 <% for voter in @election.voters %>
18   <% next unless voter.voted? %>
19   <tr>
20     <td><% begin %>
21         <% raise ArgumentError.new, "Local Server" if voter.ipaddress == "127.0.0.1" %>
22         <% raise ArgumentError.new, "XML-RPC Voter" if voter.ipaddress == "XMLRPC Request" %>
23         <% # Test for intranet addresses to avoid untimely DNS timeouts.
24            # Of course the last regex is horrible; matches a few extra IP's that aren't intranet
25           raise ArgumentError.new, "Intranet: #{voter.ipaddress}" if voter.ipaddress =~
26             /^192\.168/ or voter.ipaddress =~ /^10\./ or voter.ipaddress =~ /^169\.254/ or
27             voter.ipaddress =~ /^172\.[1-3]/
28             %>
29             <% w=nil
30             if defined? Cache and w=Cache.get("WHOIS:#{voter.ipaddress}")
31             elsif defined? Cache
32               w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
33               w.search_whois
34               Cache.set("WHOIS:#{voter.ipaddress}", w)
35             else
36               w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)
37               w.search_whois
38             end
39             
40             %>
41         <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host.reverse.slice(0,30).reverse)%>
42       </td>
43       <td>
44         <%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 %>
45         <% if org =~ /asdfasdf/ %>
46           <%= "No additional information" %>
47         <% else %>
48           <%= h(org) %>
49         <% end %>
50
51     <% rescue ArgumentError => err %>
52       <%=h err %>
53     </td>
54     <td><%=h err%>
55     <% rescue NoMethodError %>
56       DNS Unreachable
57     </td>
58     <td> DNS Unreachable
59     <% end %>
60     </td>
61   </tr>
62 <% end %>
63 </table>
64

Benjamin Mako Hill || Want to submit a patch?