From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.1 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 69E20208E9 for ; Sun, 29 Jul 2018 09:34:41 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/3] mda: use InboxWritable Date: Sun, 29 Jul 2018 09:34:39 +0000 Message-Id: <20180729093441.5250-2-e@80x24.org> In-Reply-To: <20180729093441.5250-1-e@80x24.org> References: <20180729093441.5250-1-e@80x24.org> List-Id: It's a convenient wrapper nowadays, so get rid of some legacy code and minimize differences from the -watch code. --- lib/PublicInbox/InboxWritable.pm | 1 + script/public-inbox-mda | 37 +++++++++----------------------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index 9b0cdfd..aa62132 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -39,6 +39,7 @@ sub importer { my $addr = $self->{-primary_address}; PublicInbox::Import->new($git, $name, $addr, $self); } else { + $! = 78; # EX_CONFIG 5.3.5 local configuration error die "unsupported inbox version: $v\n"; } } diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 1f1252a..2a31537 100755 --- a/script/public-inbox-mda +++ b/script/public-inbox-mda @@ -18,11 +18,10 @@ use Email::Simple; use PublicInbox::MIME; use PublicInbox::MDA; use PublicInbox::Config; -use PublicInbox::Import; -use PublicInbox::Git; use PublicInbox::Emergency; use PublicInbox::Filter::Base; use PublicInbox::Spamcheck::Spamc; +use PublicInbox::InboxWritable; # n.b: hopefully we can setup the emergency path without bailing due to # user error, we really want to setup the emergency destination ASAP @@ -39,7 +38,8 @@ my $recipient = $ENV{ORIGINAL_RECIPIENT}; defined $recipient or die "ORIGINAL_RECIPIENT not defined in ENV\n"; my $dst = $config->lookup($recipient); # first check defined $dst or do_exit(67); # EX_NOUSER 5.1.1 user unknown -my $main_repo = $dst->{mainrepo} or do_exit(67); +$dst->{mainrepo} or do_exit(67); +$dst = PublicInbox::InboxWritable->new($dst); # pre-check, MDA has stricter rules than an importer might; do_exit(0) unless PublicInbox::MDA->precheck($simple, $dst->{address}); @@ -55,18 +55,13 @@ $str = ''; do_exit(0) unless $spam_ok; my $fcfg = $dst->{filter} || ''; -my $filter; -if ($fcfg =~ /::/) { - eval "require $fcfg"; - die $@ if $@; - $filter = $fcfg->new; -} elsif ($fcfg eq 'scrub') { # TODO: - require PublicInbox::Filter::Mirror; - $filter = PublicInbox::Filter::Mirror->new; -} else { - $filter = PublicInbox::Filter::Base->new; +# -mda defaults to the strict base filter +if ($fcfg eq '') { + $dst->{filter} = 'PublicInbox::Filter::Base'; +} elsif ($fcfg eq 'scrub') { # legacy alias, undocumented, remove? + $dst->{filter} = 'PublicInbox::Filter::Mirror'; } - +my $filter = $dst->filter; my $ret = $filter->delivery($mime); if (ref($ret) && $ret->isa('Email::MIME')) { # filter altered message $mime = $ret; @@ -78,19 +73,7 @@ if (ref($ret) && $ret->isa('Email::MIME')) { # filter altered message } # else { accept PublicInbox::MDA->set_list_headers($mime, $dst); -my $v = $dst->{version} || 1; -my $im; -if ($v == 2) { - require PublicInbox::V2Writable; - $im = PublicInbox::V2Writable->new($dst); - $im->{parallel} = 0; # pointless to be parallel for a single message -} elsif ($v == 1) { - my $git = $dst->git; - $im = PublicInbox::Import->new($git, $dst->{name}, $recipient, $dst); -} else { - $! = 78; # EX_CONFIG 5.3.5 local configuration error - die "Unsupported inbox version: $v\n"; -} +my $im = $dst->importer(0); if (defined $im->add($mime)) { $emm = $emm->abort; } else { -- EW