aboutsummaryrefslogtreecommitdiffstats
path: root/dist-tools/html2txt
Commit message (Collapse)AuthorAgeFilesLines
* Move the html2txt script to dist-tools.Graham Wilson2004-11-291-0/+49
svn path=/trunk/; revision=4012
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
#!/usr/bin/perl
# Copyright 2000 john Summerfield ,summer@os2.ami.com.au>
# Your choice of licence: GPL 2 or later, or same licence as Perl.
#
# Warranty? 					None
# If it breaks? 				The pieces are yours
# If it breaks something?	You drove it.
# Bugs?							At least one.

# now we've cleared the air;
#	This supposed to allow one to talk pop-3 to a mail server. If you're lucky (and know how)
#		you might also be able to talk a few other Internet protocols with it.
#	Typically, it's run thus:
#		pop2test.1 <mailserver> [<mailport>]
#	mailport's optional; default is 110 (pop-3).
#	
#	Having started, you type away much as you would with telnet.
#	
#	
#	
#	It has this great advantage over telnet: it reads its input from stdin and writes to stdout;
#		you can prepare the entire sequence in a file, then run it this:
#			pop2test.1 <thefileyoujustcreated >theresultsyouwanttoperuse host port
#	
#	
#	uses:
#		1	Debugging POP3 (and maybe imap does anyone know?) mail problems
#		2	Deleting the occasional piece of mail that's too big or stuffs fetchmail.
#		3	Talking to sendmail
#	
use Socket;
sub hx;
sub getreply;
$timeout=1;
$RemoteHost = $ARGV[0];shift;
$RemotePort = $ARGV[0] || 110;shift;
($PRname,$PRaliases,$PRport,$PRproto) = getservbyname($RemotePort,'tcp');
$PRport=$RemotePort unless $PRport;
$proto=getprotobyname($PRproto);  
$RemoteIP = inet_aton $RemoteHost or die "Can't resolve $RemoteHost";
$that = pack 'Sna4x8',AF_INET, $PRport, $RemoteIP;
socket(REMOTESITE,AF_INET,SOCK_STREAM,$proto)
        or die "Can't create socket to $RemoteHost: $!\n";;
connect(REMOTESITE, $that) or die "Can't connect: $!\n";
select(REMOTESITE);$|=1;select STDOUT;
$rin = $win = $ein = '';
vec($rin,fileno(REMOTESITE),1) = 1;
#vec($win,fileno(REMOTESITE),1) = 1;
$ein = $rin | $win;
getreply;
while ($L=<STDIN>)
{
	chomp $L;
	print REMOTESITE $L . "\r\n";
	print "send: " . $L . "\n";
	getreply;
}
print REMOTESITE "Quit\r\n";
getreply;
#print <REMOTESITE>;
close REMOTESITE;
exit;
# P
sub hx
{
	$N=$_[0];shift;
	$S=$_[0];shift;
	return "$N(" . unpack("h", $S) . ") "; 
}
sub getreply
{
	while ('x')
	{
		($nfound,$timeleft) = select($rout=$rin, undef, $eout=$ein, $timeout);
		last if $nfound == 0;
#		print "nf($nfound) tl($timeleft) " . hx("rin",$rin) . hx("rout", $rout) . hx("ein",$ein) . hx("eout",$eout) . "\n";
		$Reply= <REMOTESITE>;
		print "recv: " . $Reply;
		last if $Reply eq '';
		$Reply =~ s/[\r\n]*//;
		last if $Reply eq '.';
	}
}