From eda511d908d77a04095542000d90e6b4d90ac757 Mon Sep 17 00:00:00 2001 From: Jonathan Amery Date: Thu, 14 Jul 2016 16:03:28 +0100 Subject: [PATCH] Old version --- autorep.pl | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100755 autorep.pl diff --git a/autorep.pl b/autorep.pl new file mode 100755 index 0000000..3c2e373 --- /dev/null +++ b/autorep.pl @@ -0,0 +1,123 @@ +#!/usr/bin/perl + +my $rcsid='$Id: testrep.channel,v 1.2 2000/08/22 23:52:51 sec Exp sec $'; +my $len=5; # Max Size in KB of included article. + +use Date::Manip; +use strict; + +$|=1; +while(<>){ + chomp; + if(!open(ARTICLE,"/usr/lib/news/bin/sm '$_'|")){ + print "$0 failed to get article $_\n"; + }; + print "$_\n"; + &reply(); + close(ARTICLE); +}; +print "$0 Exiting on eof.\n"; +sleep(10); +exit(0); + +sub reply(){ +my @hdrs; +my ($nor,$date,$from,$reply,$mid,$path,$subject,$ng); +my ($pathe); +my ($nodes,@paths,$paths,$s); + +while (
){ + push @hdrs,$_; + chomp; + last if /^$/; + $nor=1 if (/(ignore|no\s?reply)/i); + $date=$_ if (s/^date:\s+//i); + $from=$_ if (s/^from:\s+//i); + $reply=$_ if (s/^reply-to:\s+//i); + $mid=$_ if (s/^message-id:\s+//i); + $path=$_ if (s/^path:\s+//i); + $subject=$_ if (s/^subject:\s+//i); + $ng=$_ if (s/^newsgroups:\s+//i); +} + +for my $k (1..10){ + $_ = scalar
; + push @hdrs,$_; + $nor=1 if (/(ignore|no\s?reply)/i); +} + +return if ($ng =~ /,/); # Ignore cross-postings. +return if ($nor); # User wanted us to ignore it. +return if ($from =~ /NNTP-Monitor\@hero\.vmc\.private\.ntl\.com/) ; + # spammy and unmailable + +my $diff=&timediff(time- +UnixDate(ParseDate($date),"%s") +),"\n"; + +sub timediff(){ + my @n=qw(second minute hour day); + my @t=(60,60,24,99999); + my $r=shift; + my $f=1; + my $p=0; + my $s=""; + for my $i (0..$#t){ + $p=$r%$t[$i];$r=int($r/$t[$i]); + #print "p: $p, r: $r\n"; + if($p){$s=(($f-->0 && $r>0)?"and ":"").$p." ".$n[$i].($p>1?"s":"").($f<-1?",":"").($s?" ".$s:"")} + } + return $s; +} + +$from=$reply if ($reply); + +$path =~ /([^!]*)!/; $pathe=$1; +$nodes = (($paths = $path)=~ s/!/ /g); +$s=$nodes>1?"s":""; + +@paths=split(/!/,$path); +pop(@paths); +$paths=join(" ->_",reverse @paths).". "; +$paths=~s/([^\n]{40,75})[ \n]/$1\n/g; +$paths=~s/_/ /g; + +my $rdate=localtime; + +open(FOO,"|/usr/sbin/sendmail -t -f usenet-autoresponder\@ysolde.ucam.org"); +print FOO < +To: $from +X-Rcs-Id: $rcsid +X-Local-Version: 0.1.0 +Precedence: junk + +This message has been generated automatically in order to help you track +the circulation in the $ng newsgroup. If you do not wish any reply +from this program, just include the words "ignore" or "no reply" in the +header or in the 10 first lines of the body of your message. + +Your Message $mid was received by $pathe +at $rdate. + +Assuming your clock was set correctly, this means that your article +travelled the network for $diff +before arriving here. + +It had to pass through the following $nodes Usenet node$s starting with +your system: +$paths + +Full headers plus the first 10 lines of your original message were: + +EOF + +my $str=join ("",@hdrs); +print FOO substr($str,0,$len*1024); +if (substr($str,$len*1024,1)){ + print "\n- The above message has been trunctated, because it is longer than $len KB.\n"; +} +close(FOO); + +}; -- 2.30.2