about summary refs log tree commit homepage
path: root/lib/PublicInbox/Inbox.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-07-29 20:41:03 +0000
committerEric Wong <e@80x24.org>2022-07-30 09:39:07 +0000
commit6544e66f13d597c93f1922fedcdec58feb4cb62b (patch)
tree563ac78d293ec3f60c21aecc481ac77079862724 /lib/PublicInbox/Inbox.pm
parent48ebf19495bfa071ce1b92e55c743b3d1623a61a (diff)
downloadpublic-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.pm30
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) = @_;