]> Sergey Matveev's repositories - public-inbox.git/commitdiff
wwwlisting: allow hiding entries from manifest
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Sun, 9 Jun 2019 04:31:02 +0000 (04:31 +0000)
committerEric Wong <e@80x24.org>
Sun, 9 Jun 2019 04:32:31 +0000 (04:32 +0000)
Since we already have a mechanism for hiding repositories from
the WWW listing, we might as well support another one for hiding
repositories from the upcoming manifest.js.gz generation.

lib/PublicInbox/WwwListing.pm

index e1473b3deec7135b4aa9557a65371ce9dd469d7a..6d6d301555bb474c7b648431b98339c09a32501f 100644 (file)
@@ -10,25 +10,27 @@ use PublicInbox::Hval qw(ascii_html);
 use PublicInbox::Linkify;
 use PublicInbox::View;
 
-sub list_all ($$) {
-       my ($self, undef) = @_;
+sub list_all ($$$) {
+       my ($self, $env, $hide_key) = @_;
        my @list;
        $self->{pi_config}->each_inbox(sub {
                my ($ibx) = @_;
-               push @list, $ibx unless $ibx->{-hide}->{www};
+               push @list, $ibx unless $ibx->{-hide}->{$hide_key};
        });
        \@list;
 }
 
-sub list_match_domain ($$) {
-       my ($self, $env) = @_;
+sub list_match_domain ($$$) {
+       my ($self, $env, $hide_key) = @_;
        my @list;
        my $host = $env->{HTTP_HOST} // $env->{SERVER_NAME};
        $host =~ s/:[0-9]+\z//;
        my $re = qr!\A(?:https?:)?//\Q$host\E(?::[0-9]+)?/!i;
        $self->{pi_config}->each_inbox(sub {
                my ($ibx) = @_;
-               push @list, $ibx if !$ibx->{-hide}->{www} && $ibx->{url} =~ $re;
+               if (!$ibx->{-hide}->{$hide_key} && $ibx->{url} =~ $re) {
+                       push @list, $ibx;
+               }
        });
        \@list;
 }
@@ -78,7 +80,11 @@ sub ibx_entry {
 sub call {
        my ($self, $env) = @_;
        my $h = [ 'Content-Type', 'text/html; charset=UTF-8' ];
-       my $list = $self->{list_cb}->($self, $env);
+       my $hide_key = 'www';
+       if ($env->{PATH_INFO} =~ m!/manifest\.js(?:\.gz)\z/!) {
+               $hide_key = 'manifest';
+       }
+       my $list = $self->{list_cb}->($self, $env, $hide_key);
        my $code = 404;
        my $title = 'public-inbox';
        my $out = '';