home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Komunik / Webscr / Scrptw / _SETUP.1 / Whois.cgi < prev    next >
Text File  |  1999-10-06  |  4KB  |  138 lines

  1. #!/usr/bin/perl
  2.  
  3. # CONFIGURATION
  4.  
  5. $title = "Soft Lite Network: International Whois Service";
  6.  
  7. # HTML (feel free to change)
  8.  
  9. # FORM (If query_string is blank)
  10.  
  11. $form_html = qq~
  12. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  13. <html>
  14.   <head>
  15.     <title>$title</title>
  16.   </head>
  17.   <body bgcolor=ffffff>
  18. <p><FONT FACE="Verdana,Arial" SIZE="5"><h2>$title</h2></p>
  19. <form action="/cgi-bin/whois.cgi" method="get">
  20. <FONT FACE="Verdana,Arial" SIZE="1">Search for domain name; NIC handle; host IP or lastname, firstname:
  21. <input type="text" name="query">
  22. <input type="submit" value="Whois">
  23. </form>
  24. <p>
  25. <div align="center">
  26.   <table width="75%" border=0>
  27.     <tr><td>Domain Name - </td><td>softlite.net</td></tr>
  28.     <tr><td>NIC handle -</td><td>FI61-ORG</td></tr>
  29.     <tr><td>Lastname, Firstname:</td><td>Doe, John</td></tr>
  30.     <tr><td>Hosting Servers</td><td>DNS1.DOMAIN.COM</td></tr>
  31.   </table>
  32. </div>
  33. <p>
  34. Supported TLDs:
  35. (.COM, .ORG, .NET, .EDU, .GOV, .MIL, .CA, .UK, .MX, .FR, .DK, .DE, .CH, .BE, .AT, .AU, .CZ)
  36. </p>
  37. </body></html>
  38. ~;
  39.  
  40. $result_html_top = qq~
  41. <html>
  42.   <head>
  43.     <title>$title</title>
  44.   </head>
  45.   <body bgcolor=ffffff>
  46. <p><FONT FACE="Verdana,Arial" SIZE="1"><h2>$title Query Result</h2></p>
  47. <hr>
  48. ~;
  49.  
  50. $result_html_bottom = qq~
  51.   </body>
  52. </html>
  53. ~;
  54.  
  55. ##########################
  56. # DON'T EDIT ANYTHING ELSE
  57.  
  58. use IO::Socket;
  59.  
  60. &pQuery;
  61.  
  62. if ($query{'query'} eq "") {
  63.     print "Content-type: text/html\n\n";
  64.     print $form_html;
  65.   } else {
  66.     &get_data;
  67.  
  68.     print "Content-type: text/html\n\n";
  69.     print $result_html_top;
  70.  
  71.     &print_result;
  72.  
  73.     print $result_html_bottom;
  74. }
  75.  
  76. sub print_result {
  77.    foreach $_ (@out) {
  78.     print $_;
  79.      }
  80.    return;
  81. }
  82.  
  83. sub pQuery {
  84.    my($in, @in, $entry, $var, $val);
  85.    $in = $ENV{'QUERY_STRING'};
  86.    @in = split(/\&/, $in);
  87.    foreach $entry (@in) {
  88.         $entry =~ s/\+/ /g;
  89.         ($var, $val) = split(/=/, $entry, 2);
  90.            $var =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
  91.            $val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
  92.         $query{$var} = $val;
  93.      }  
  94. }
  95.  
  96. sub get_data {
  97.    $whois_port = "43";
  98.    $whois_serv = "whois.internic.net";
  99.  
  100.     $t = $query{'query'};
  101.  
  102.     if ($t !~ /co.uk/i && $t !~ /org.uk/i && $t !~ /net.uk/i && $t !~ /ltd.uk/i && $t !~ /plc.uk/i) {
  103.         @NICS = split(/\./,$query{'query'});
  104.         foreach $_ (@NICS) {
  105.             $nic = $_;
  106.           }
  107.       } else {
  108.         $whois_serv = "whois.nic.uk";
  109.     }
  110.     if ($nic eq "mil") { $whois_serv = "whois.nic.mil"; }
  111.       elsif ($nic eq "gov") { $whois_serv = "whois.nic.gov"; }
  112.     elsif ($nic eq "us") { $whois_serv = "whois.isi.edu"; }
  113.     elsif ($nic eq "mx") { $whois_serv = "whois.nic.mx"; }
  114.     elsif ($nic eq "ca") { $whois_serv = "whois.cdnnet.ca"; }
  115.     elsif ($nic eq "uk") { $whois_serv = "whois.ripe.net"; }
  116.     elsif ($nic eq "dk") { $whois_serv = "whois.ripe.net"; }
  117.     elsif ($nic eq "de") { $whois_serv = "whois.ripe.net"; }
  118.     elsif ($nic eq "be") { $whois_serv = "whois.ripe.net"; }
  119.     elsif ($nic eq "at") { $whois_serv = "whois.ripe.net"; }
  120.     elsif ($nic eq "cz") { $whois_serv = "whois.ripe.net"; }
  121.     elsif ($nic eq "fr") { $whois_serv = "whois.nic.fr"; }
  122.     elsif ($nic eq "ch") { $whois_serv = "whois.nic.ch"; }
  123.     elsif ($nic eq "au") { $whois_serv = "whois.aunic.net"; }
  124.  
  125.    $next = "\015\012";
  126.    $socket = IO::Socket::INET->new(Proto=>"tcp",
  127.     PeerAddr=>$whois_serv,PeerPort=>$whois_port,);
  128.  
  129.    unless ($socket) { die "can't connect to $whois_serv" }
  130.  
  131.    print $socket "$query{'query'}" . $next;
  132.    @out = <$socket>;
  133.  
  134.    close $remote;
  135.  
  136.    return;
  137. }
  138.