]> Sergey Matveev's repositories - public-inbox.git/commitdiff
add filter for gmane archives
authorEric Wong <e@80x24.org>
Fri, 28 Dec 2018 19:17:36 +0000 (19:17 +0000)
committerEric Wong <e@80x24.org>
Fri, 28 Dec 2018 19:24:06 +0000 (19:24 +0000)
Extracted from import_slrnspool, since some spools get converted
to mbox or what not.

MANIFEST
lib/PublicInbox/Filter/Gmane.pm [new file with mode: 0644]
scripts/import_slrnspool

index a455dbafb511ff8b4c67be1b113c3652bf73fc90..dc851676e3a4e2eed2252d5de420a2e6292f5c0a 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -58,6 +58,7 @@ lib/PublicInbox/EvCleanup.pm
 lib/PublicInbox/ExtMsg.pm
 lib/PublicInbox/Feed.pm
 lib/PublicInbox/Filter/Base.pm
+lib/PublicInbox/Filter/Gmane.pm
 lib/PublicInbox/Filter/Mirror.pm
 lib/PublicInbox/Filter/RubyLang.pm
 lib/PublicInbox/Filter/SubjectTag.pm
diff --git a/lib/PublicInbox/Filter/Gmane.pm b/lib/PublicInbox/Filter/Gmane.pm
new file mode 100644 (file)
index 0000000..f9042df
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright (C) 2018 all contributors <meta@public-inbox.org>
+# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+
+# Filter for importing some archives from gmane
+package PublicInbox::Filter::Gmane;
+use base qw(PublicInbox::Filter::Base);
+use strict;
+use warnings;
+
+sub scrub {
+       my ($self, $mime) = @_;
+       my $hdr = $mime->header_obj;
+
+       # gmane rewrites Received headers, which increases spamminess
+       # Some older archives set Original-To
+       foreach my $x (qw(Received To)) {
+               my @h = $hdr->header_raw("Original-$x");
+               if (@h) {
+                       $hdr->header_set($x, @h);
+                       $hdr->header_set("Original-$x");
+               }
+       }
+
+       # Approved triggers for the SA HEADER_SPAM rule,
+       # X-From is gmane specific
+       foreach my $drop (qw(Approved X-From)) {
+               $hdr->header_set($drop);
+       }
+
+       # appears to be an old gmane bug:
+       $hdr->header_set('connect()');
+
+       $self->ACCEPT($mime);
+}
+
+sub delivery {
+       my ($self, $mime) = @_;
+       $self->scrub($mime);
+}
+
+1;
index 1a7d77a4d767d5d69f5e9a1b341dffa2841e7e56..e7ea45c1242a7f616201f4fe7718543e7730ec1b 100755 (executable)
@@ -35,6 +35,9 @@ if (($ibx->{version} || 1) == 2) {
                                        $ibx->{-primary_address});
 }
 
+$ibx->{filter} ||= 'PublicInbox::Filter::Gmane';
+my $filter = $ibx->filter;
+
 sub key {
        "publicinbox.$ibx->{name}.importslrnspoolstate";
 }
@@ -68,26 +71,7 @@ for (; $exit == 0 && $n < $max; $n++) {
        print STDERR $fn, "\n";
 
        my $mime = PublicInbox::MIME->new(eval { local $/; <$fh> });
-       my $hdr = $mime->header_obj;
-
-       # gmane rewrites Received headers, which increases spamminess
-       # Some older archives set Original-To
-       foreach my $x (qw(Received To)) {
-               my @h = $hdr->header_raw("Original-$x");
-               if (@h) {
-                       $hdr->header_set($x, @h);
-                       $hdr->header_set("Original-$x");
-               }
-       }
-
-       # Approved triggers for the SA HEADER_SPAM rule,
-       # X-From is gmane specific
-       foreach my $drop (qw(Approved X-From)) {
-               $hdr->header_set($drop);
-       }
-
-       # appears to be an old gmane bug:
-       $hdr->header_set('connect()');
+       $filter->scrub($mime);
        $im->add($mime);
 
        $ok = $n + 1;