chiark / gitweb /
REORG Delete everything that's not innduct or build system or changed for innduct
[innduct.git] / samples / filter_innd.pl
diff --git a/samples/filter_innd.pl b/samples/filter_innd.pl
deleted file mode 100644 (file)
index a56b908..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# $Id: filter_innd.pl 7860 2008-06-07 12:46:49Z iulius $
-#
-# Sample Perl filtering file for the innd hooks.
-# 
-
-# This file gets loaded at innd process startup, and everytime a
-# "ctlinnd reload filter.perl 'reason'" or a
-# "ctlinnd reload all 'reason'" is done.
-#
-# Before this file is loaded, the perl routine `filter_before_reload' is
-# called, and after it's finished loading, the perl routine
-# `filter_after_reload' is called. See startup_innd.pl for more details.
-#
-# The following routines can be defined here for use by innd:
-#
-#      sub filter_art { ... }
-#
-#              This routine is called before every article is accepted for
-#              posting. Is is called with no arguments, but has access to
-#              all the non-empty standard headers of the article via the
-#              global associative array `%hdr.'  If it returns the empty
-#              string ("") then the article is accepted. If it returns any
-#              non-null string value, then the article is rejected and the
-#              returned string value is logged as the reason why.
-#
-#              The standard headers are:
-#
-#                      Approved, Control, Date, Distribution, Expires,
-#                      From, Lines, Message-ID, Newsgroups, Path,
-#                      Reply-To, Sender, Subject, Supersedes, Bytes,
-#                      Also-Control, References
-#
-#      sub filter_mode { ... }
-#
-#              This routine is called every time `go', `pause', or
-#              `throttle' is called. It is called with no arguments and
-#              returns no value. The global associative array `%mode' has
-#              three keyed values stored in it:
-#
-#                      'Mode'          The current mode
-#                                         ("running", "paused", "throttled") 
-#                      'NewMode"       The new mode
-#                      'reason'        The reason given.
-#
-#              For example:    %mode = ('Mode', 'running', 
-#                                      'NewMode', 'throttled', 
-#                                      'reason', 'doing nightly backups')
-#
-# If filter_art is not defined when this file is done loading, then
-# filtering is disabled. If any syntax error occurs when loading the file,
-# then filtering is disabled.
-#
-#      sub filter_messageid { ... }
-#
-#              This routine is called when each article (in streaming
-#              mode only) is checked to see if INN wants to accept the
-#              article.  If it returns the empty string, the article
-#              is accepted. If it returns a non-empty value, the
-#              article is refused.  It is called with one argument,
-#              the message-id to check.
-
-
-
-#
-# Called on each article innd receives from a peer. Return "" to accept,
-# and any other non-null string to reject. If rejecting the string returned
-# will be part of the logged reason.
-#
-
-sub filter_art {
-       my $rval = "" ; # Assume we'll accept. Cannot be `0'
-
-### Remove two leading '##' from the following section (and then
-### "ctlinnd reload filter.perl 'reason'" and the filter will reject articles that
-### have "make money" in the subject, or are posted to more than 10
-### newsgroups. 
-
-##     my ($maxgroups) = 10 ;
-##
-### Normally this output would be lost, but if you run innd with '-d -f' you
-### can see what's going on.
-###
-###    foreach $key (sort keys %hdr) {
-###            print "Header:\t$key Value:\t $hdr{$key}\n" ;
-###    }
-##
-##     if ($hdr{"Subject"} =~ /\$*make.*money.*\$*/i ) {
-##             $rval = "no money requests here"
-##     } elsif ( ( @_ = split(",",$hdr{'Newsgroups'}) ) > $maxgroups ) {
-##             $rval = "too many groups" ;
-###    Kill article with "Re: " but no References:
-##     } elsif ($hdr{'Subject'} =~ /^Re: /o and $hdr{'References'} eq "") {
-##       $rval = "Followup without References:";
-###    Kill article with invalid From:
-##     } elsif ($hdr{'From'} =~ /^\w*$/o or
-##          $hdr{'From'} !~ /^(.+?)\@([-\w\d]+\.)*([-\w\d]+)\.([-\w\d]{2,})$/o) {
-##       $rval = "From: is invalid, must be user\@[host.]domain.tld";
-##   }
-###
-###    print "Accepting\n" if ! $rval ;
-
-       $rval ;
-}
-
-sub filter_mode {
-       if ($mode{'NewMode'} eq "throttled" || $mode{'NewMode'} eq "paused") {
-#              print "Closing spam database\n" ; # won't kill server.
-#              &close_spam_database ;
-       } else {
-#              print "Opening spam database\n" ; # won't kill server
-#              &open_spam_database ;
-       }
-}
-
-sub filter_messageid {
-    my ($messageid) = @_;
-    $rval = '';
-#    $rval = 'No' if ($messageid =~ /a\.spam\.domain>?/i);
-     $rval;
-}
-
-
-
-
-
-###########################################################################
-##
-## Another sample. More elaborate, but cleaner... from Christophe
-## Wolfhugel <wolf@pasteur.fr>.
-##
-
-
-#### Regular expressions we reject.
-#### Format : Header => regexp => reason
-##%reject = (
-##   'Subject' => {
-##      'make.*money.*fast'            =>      'MMF rejected',
-##      'cash.*cash.*cash'             =>      'Cash rejected'
-##   },
-##);
-##
-##sub filter_art {
-##   my($rval) = '';
-##   my(@ng, $i, $j, $k, $l);
-##
-##   if ($hdr{'From'} !~ /\@/o) {
-##      $rval = 'Invalid From';
-##   } else {
-##      while (($i, $j) = each %reject) {
-##         while (($k, $l) = each %{$j}) {
-##            if ($hdr{$i} =~ /$k/i) {
-##               $rval = $l;
-##               goto the_end;
-##            }
-##         }
-##      }
-##   }
-##   @ng = split(/,/, $hdr{'Newsgroups'});
-##   if ($#ng > 10) {
-##     $rval = 'ECP rejected';
-##   }
-##the_end:
-##   undef %hdr;
-##   return $rval
-##}
-##
-##sub filter_mode {
-##}
-##
-###%hdr = (
-###    'Subject'       =>      'Make money fast',
-###    'From'          =>      'bozo@gov.org'
-###);
-###&filter_art;
-
-
-
-###########################################################################
-##
-## From Chrisophe Wolfhugel again (wolf@pasteur.fr). This is not 
-## standalone code. 
-##
-
-##Just for the fun, I've added following code to filter_innd.pl :
-##
-##   ## Keep track of the From and subject.
-##   $i = "$hdr{'From'} $hdr{'Subject'}";
-##   push(@history, $i);
-##   $history{$i}++;
-##
-##   ## Reject the EMP.
-##   if ($history{$i} > 10) {
-##      $rval = "EMP rejected (appeared $history{$i} times): $i";
-##   }
-##
-##   ## Remove too old things.
-##   while ($#history > 1000) {
-##      delete($history{shift(@history)});
-##   }
-##
-##It is pretty successfull in detecting and refusing excessive multi-posting.
-##Same sender, same subject, appearing more than 10 times without the last
-##1000 articles gets junked.
-##
-##Already catched a few hundreds :
-##
-##Nov 20 08:27:23.175 - vishnu.jussieu.fr <3292ac9a.4064710@nntp.cts.com> 437 EMP rejected (btr@trenet.com Be a Beta Tester!)
-##
-##That was just for the pleasure. It is still sucking a non significant CPU
-##time on my slow Alpha.
-