diff options
author | Eric Wong <e@80x24.org> | 2022-07-29 20:41:03 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-07-30 09:39:07 +0000 |
commit | 6544e66f13d597c93f1922fedcdec58feb4cb62b (patch) | |
tree | 563ac78d293ec3f60c21aecc481ac77079862724 /lib/PublicInbox/Inbox.pm | |
parent | 48ebf19495bfa071ce1b92e55c743b3d1623a61a (diff) | |
download | public-inbox-6544e66f13d597c93f1922fedcdec58feb4cb62b.tar.gz |
Hopefully it makes sense to new users deploying or using POP3...
Diffstat (limited to 'lib/PublicInbox/Inbox.pm')
-rw-r--r-- | lib/PublicInbox/Inbox.pm | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index da81fb67..0ad68810 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -28,7 +28,7 @@ sub do_cleanup { check_inodes($ibx); } else { delete(@$ibx{qw(over mm description cloneurl - -imap_url -nntp_url)}); + -imap_url -nntp_url -pop3_url)}); } my $srch = $ibx->{search} // $ibx; delete @$srch{qw(xdb qp)}; @@ -230,9 +230,9 @@ sub base_url { $url; } -# imapserver, nntpserver, and pop3server configs are used here: +# imapserver, nntpserver configs are used here: sub _x_url ($$$) { - my ($self, $x, $ctx) = @_; # $x is "imap", "nntp", or "pop3" + my ($self, $x, $ctx) = @_; # $x is "imap" or "nntp" # no checking for nntp_usable here, we can point entirely # to non-local servers or users run by a different user my $ns = $self->{"${x}server"} // @@ -276,7 +276,29 @@ EOM # my ($self, $ctx) = @_; sub imap_url { $_[0]->{-imap_url} //= _x_url($_[0], 'imap', $_[1]) } sub nntp_url { $_[0]->{-nntp_url} //= _x_url($_[0], 'nntp', $_[1]) } -sub pop3_url { $_[0]->{-pop3_url} //= _x_url($_[0], 'pop3', $_[1]) } + +sub pop3_url { + my ($self, $ctx) = @_; + $self->{-pop3_url} //= do { + my $ps = $self->{'pop3server'} // + $ctx->{www}->{pi_cfg}->get_all('publicinbox.pop3server'); + my $group = $self->{newsgroup}; + my @urls; + ($ps && $group) and + @urls = map { m!\Apops?://! ? $_ : "pop://$_" } @$ps; + if (my $mi = $self->{'pop3mirror'}) { + my @m = map { m!\Apops?://! ? $_ : "pop://$_" } @$mi; + my %seen; # List::Util::uniq requires Perl 5.26+ + @urls = grep { !$seen{$_}++ } (@urls, @m); + } + my $n = 0; + for (@urls) { $n += s!/+\z!! } + warn <<EOM if $n; +W: pop3server and/or pop3mirror URLs should not end with trailing slash `/' +EOM + \@urls; + } +} sub nntp_usable { my ($self) = @_; |