From 4edfee1a201259ce803d9153f38235f1c69bcd8f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 29 Jul 2018 09:34:39 +0000 Subject: mda: use InboxWritable It's a convenient wrapper nowadays, so get rid of some legacy code and minimize differences from the -watch code. --- script/public-inbox-mda | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) (limited to 'script/public-inbox-mda') diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 1f1252a7..2a315378 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 { -- cgit v1.2.3-24-ge0c7