#!/usr/bin/perl -w (undef, $query) = split(/\?/, $ENV{'SELECTOR'}); $query =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($query =~ /(http:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}(:\d{1-5})?(\/[a-zA-Z0-9-\.\/\?%&=]*)?/i) { $query =~ s/http:\/\///i; ($domain, $path) = split(/\//, $query, 2); ($host, $port) = split(/:/, $domain); if (!$port) { $port = 80; } } else { print "Incorrect URL"; } use Socket; socket(SH, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $!; my $dest = sockaddr_in ($port, inet_aton($host)); connect (SH, $dest) || die $!; $data = "GET /$path HTTP/1.0\nHost: $host\nUser-Agent: Web 2 Gopher (gopher://gopher.rp.spb.su/)\n\n"; send (SH, $data, ""); while () { #$_ =~ s/(src=|background=|href=)["|']?([^>"']*)["|']?/$1."http:\/\/$host:$port\/$2"/ieg; #images $text .= $_; } close (SH); print &convert($text); sub convert { local ($string) = @_; $string =~ s/^HTTP.*?\r\n\r\n//igsm; $string =~ s/