Listing for whois.pl
#!/usr/bin/perl -T -w
# Whois protocol client
use strict;
$| = 1; # Autoflush output
my $uri_data = $ENV{'URI_DATA'};
print "content-type: text/html\n";
print "\n";
print "<html>\n";
print "<body>\n";
if (!$uri_data) {
print "URI syntax: <b>whois:name</b>\n";
} else {
if ($uri_data =~ /^([-\@\w.]+)$/) {
$uri_data = $1; # data now untainted
$ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin"; # safe path
my $whois_output = `whois $uri_data`; # execute whois command
if ($whois_output =~ /detailed information\.\n\n(.+)\n\nTosingle/s) {
my @names = split(/\n/, $1);
print "<b>Multiple matches were found.<br>\n";
print "Please click on one of the following:<b>\n";
print "<ul>\n";
my $name;
foreach $name (@names) {
print "<li><a href='whois:$name'>whois:$name</a>\n"
}
print "</ul>\n"
} elsif ($whois_output =~ /detailed information\.\n\n(.+)\n>>> Last/s) {
my $data = $1;
$data =~ s/\n/<br>\n/sg;
print $data;
}
} else {
print "<b>Invalid characters in URI data:</b> $uri_data\n";
}
}
print "</body>\n";
print "</html>\n";