ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/myhttpd/netgeo.pl
(Generate patch)

Comparing Coro/myhttpd/netgeo.pl (file contents):
Revision 1.20 by root, Fri Jan 29 22:29:04 2010 UTC vs.
Revision 1.21 by root, Thu Feb 4 22:35:47 2010 UTC

127 } 127 }
128 $handle or die "$whois ($ip): unparseable multimatch\n"; 128 $handle or die "$whois ($ip): unparseable multimatch\n";
129 $whois = $self->whois_request("!$handle"); 129 $whois = $self->whois_request("!$handle");
130 } 130 }
131 131
132 my ($address, $info, $coordinator, undef) = split /\n\n/, $whois; 132 return
133 if $whois =~ /^OrgName:\s*RIPE Network Coordination Centre/mi;
133 134
134 $info =~ /^\s+Netname: (\S+)$/mi 135 $whois =~ /^network:Network-Name:\s*(\S+)$/mi
136 or $whois =~ /^NetName:\s*(\S+)$/mi
135 or die "$whois($ip): no netname\n"; 137 or die "$whois($ip): no netname\n";
136 my $netname = $1; 138 my $netname = $1;
137 139
138 $info =~ /^\s+Netblock: ([0-9.]+\s+-\s+[0-9.]+)\s*$/mi 140 $whois =~ /^network:IP-Network-Block:\s*([0-9.]+\s*-\s*[0-9.]+)\s*$/mi
141 or $whois =~ /^NetRange:\s*([0-9.]+\s*-\s*[0-9.]+)\s*$/mi
139 or die "$whois($ip): no netblock\n"; 142 or die "$whois($ip): no netrange\n";
140 my $netblock = $1; 143 my $netblock = $1;
141 144
142 my $maintainer; 145 my $maintainer;
143 146
144 if ($info =~ /^\s+Maintainer: (\S+)\s*$/mi) { 147 if ($whois =~ /^Maintainer:\s*(\S+)\s*$/mi) {
145 $maintainer = "*ma: $1\n"; 148 $maintainer = "*ma: $1\n";
146 return if $1 =~ /^(?:AP|RIPE)$/; 149 return if $1 =~ /^(?:AP|RIPE)$/;
147 } 150 }
148 151
149 $coordinator =~ s/^\s+Coordinator:\s*//si 152 $whois =~ /^Country:\s*(\S+)/mi
150 or $coordinator = "";
151
152 $address =~ s/\n\s*(\S+)$//
153 or die "$whois($ip): no parseable country ($address)\n"; 153 or die "$whois($ip): no parseable country ($whois)\n";
154 my $country = $1; 154 my $country = $1;
155
156 $address =~ s/^\s*/*de: /mg;
157 $coordinator =~ s/^\s*/*ad: /mg;
158 155
159 $whois = <<EOF; 156 $whois = <<EOF;
160*in: $netblock 157*in: $netblock
161*na: $netname 158*na: $netname
162*cy: $country 159*cy: $country
163$maintainer$address 160
164$coordinator 161$whois
165EOF 162EOF
166 $whois =~ s/\n+$//; 163
167 $whois; 164 $whois
168} 165}
169 166
170package Whois::RIPE; 167package Whois::RIPE;
171 168
172use Socket; 169use Socket;
345 } 342 }
346 } 343 }
347 344
348 my ($arin, $ripe, $apnic); 345 my ($arin, $ripe, $apnic);
349 346
350 $whois = $WHOIS{RIPE}->ip_request($ip) 347 $whois = $WHOIS{RIPE} ->ip_request ($ip)
351 || $WHOIS{APNIC} ->ip_request($ip) 348 || $WHOIS{APNIC} ->ip_request ($ip)
352 || $WHOIS{AFRINIC} ->ip_request($ip) 349 || $WHOIS{AFRINIC} ->ip_request ($ip)
353 || $WHOIS{LACNIC}->ip_request($ip) 350 || $WHOIS{LACNIC} ->ip_request ($ip)
354 || $WHOIS{ARIN} ->ip_request($ip) 351 || $WHOIS{ARIN} ->ip_request ($ip)
355 ; 352 ;
356 353
357 $whois =~ /^\*in: ([0-9.]+)\s+-\s+([0-9.]+)\s*$/mi 354 $whois =~ /^\*in: ([0-9.]+)\s+-\s+([0-9.]+)\s*$/mi
355 or do {
358 or do { warn "$whois($ip): no addresses found\n", last }; 356 warn "$whois($ip): no addresses found\n";
357 return <<EOF;
358*in: $ip-$ip
359*na: whois failure
360*cy: XX
361EOF
362 };
359 363
360 my ($ip0, $ip1) = ($1, $2); 364 my ($ip0, $ip1) = ($1, $2);
361 365
362 my $_ip = ip2int($ip); 366 my $_ip = ip2int($ip);
363 my $_ip0 = ip2int($ip0); 367 my $_ip0 = ip2int($ip0);
371 375
372 $iprange->db_put((pack "N", $_ip1), (join "\x0", $_ip0, $_ip1, $whois)); 376 $iprange->db_put((pack "N", $_ip1), (join "\x0", $_ip0, $_ip1, $whois));
373 (tied %whois)->db_sync; 377 (tied %whois)->db_sync;
374 $iprange->db_sync; 378 $iprange->db_sync;
375 379
376 $whois; 380 $whois
377} 381}
378 382
379sub clear_cache() { 383sub clear_cache() {
380 %netgeo::whois = (); 384 %netgeo::whois = ();
381 $netgeo::iprange->truncate (my $dummy); 385 $netgeo::iprange->truncate (my $dummy);
382} 386}
383 387
384if (0) { 388if (1) {
385 #print ip_request "68.52.164.8"; # goof 389 #print ip_request "68.52.164.8"; # goof
386 #print "\n\n"; 390 #print "\n\n";
387 #print ip_request "200.202.220.222"; # lacnic 391 print ip_request "200.202.220.222"; # lacnic
388 #print "\n\n"; 392 print "\n\n";
389 #print ip_request "62.116.167.250"; 393 #print ip_request "62.116.167.250";
390 #print "\n\n"; 394 #print "\n\n";
391 #print ip_request "133.11.128.254"; # jp 395 #print ip_request "133.11.128.254"; # jp
392 #print "\n\n"; 396 #print "\n\n";
393 print ip_request "80.131.153.93"; 397# print ip_request "76.6.7.8";
394 print "\n\n"; 398# print "\n\n";
395} 399}
396 400
3971; 4011;
398 402
399 403

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines