<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/perl -w
use Socket;
use strict;
$main::SIG{'INT'} = 'closeSocket';

my $VERSION = 0.2;
my($protocol)      = getprotobyname("tcp")|| 6;
my($port)       = 80;
my($serverAddr) = (gethostbyname("proxy..."))[4];

socket(SMTP, AF_INET(), SOCK_STREAM(), $protocol)
    or die("socket: $!");

my($packFormat) = 'S n a4 x8';   # Windows 95

connect(SMTP, pack($packFormat, AF_INET(), $port, $serverAddr))
    or die("connect: $!");

 my($len)=$#ARGV;
 my($inc)=0;
 
 if ($len &lt; 0)
 {
        print ("\n Usage rfc.pl xxxx [xxxx,xxxx...] \n xxxx is rfc number \n The utility uses faqs.org to get RFC's\nBy Naunidh Singh Chadha (naunidh[at]gmail[dot]com)\n");
        exit;
 }
 #Start Leeching......
  for ($inc = 0; $inc &lt;= $len ; $inc++) 
  {  
    my($rfcNum)=$ARGV[$inc];
    #Create the file name and create output file.
    my ($filename)=$rfcNum . ".txt";    
    open OUTFILE, "&gt;$filename";     
    
    my($buffer) = "GET http://www.faqs.org/rfcs/rfc" . $rfcNum . ".html HTTP/1.0\x0d\x0aAccept: */*\x0d\x0aProxy-Connection: Keep-Alive\x0d\x0aHost: www.faqs.org\x0d\x0aUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\x0d\x0a\x0d\x0a";
    my($flag)=1;
    send(SMTP, $buffer, 0); 
    my($final)="";     
    while ($flag==1)
      {
          recv(SMTP, $buffer, 50000, 0);                       
		  #Test for &lt;/HTML&gt; meaning end of file for us 
		  #I didnt want to count the number of bytes received :))
          if ($buffer =~ /&lt;\/HTML&gt;/)
          {
          $flag=0; 
          }
          $final .= $buffer;
      }      
	  #Put all that is in between &lt;PRE&gt; &lt;/PRE&gt; tags into a txt file. Works for all the rfc's I have tested.
      if($final =~ /&lt;PRE&gt;(.*)&lt;\/PRE&gt;/s)
      { 
        print OUTFILE $1;    
      } 
     #Close the file and go up to fetch a new RFC.
    close OUTFILE;
  }    
    close(SMTP);

sub closeSocket {     # close smtp socket on error
    close(SMTP);
    die("SMTP socket closed due to SIGINT\n");
}

=pod

=head1 NAME

getRFC - This script downloads RFC's from faqs.org and put them in the current directory. 

=head1 DESCRIPTION

Just pass on the RFC numbers to the script as arguments and it will zap them all in a directory leaching them one by one in batch mode.

For bugs/corrections contact naunidh [at] gmail [dot] com

=pod OSNAMES

Linux
Windows

=pod README

getRFC - This script downloads RFC's from faqs.org and put them in the current directory. 
Just pass on the RFC numbers to the script as arguments and it will zap them all in a directory leaching them one by one in batch mode.
For bugs/corrections contact naunidh [at] gmail [dot] com

=pod SCRIPT CATEGORIES

Web
Win32/Utilities

=cut
</pre></body></html>