#!/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";