File: //scripts.20110531.215904.25158/HTTPreq.pm
#!/usr/bin/perl
use Socket;
sub httpreq {
my($page);
my($host,$url) = @_;
eval {
$SIG{'PIPE'} = $SIG{'ALRM'} = sub {
print "Unable to retrieve file\n";
die;
};
alarm(30);
$proto = getprotobyname('tcp');
socket(Socket_Handle, AF_INET, SOCK_STREAM, $proto);
$iaddr = inet_aton("$host");
$port = getservbyname('http', 'tcp');
$sin = sockaddr_in($port, $iaddr);
connect(Socket_Handle, $sin);
send Socket_Handle, "GET $url HTTP/1.0\r\nHost: $host\r\n\r\n",0;
$inheader = 1;
while(<Socket_Handle>) {
alarm(20);
if (!$inheader) {
$page .= $_;
}
if ($inheader && (/^HTTP\/\d+\.\d+ (\d+)/)) { if ($1 eq "404" || $1 eq "500" || $1 eq "301") { print "Error $1 while fetching url http://$host/$url\n"; return(); } }
if ($inheader && (/^\n$/ || /^\r\n$/ || /^$/)) { $inheader = 0; }
}
alarm(0);
};
return($page);
}
1;