diff options
author | Eric Wong <e@80x24.org> | 2019-03-11 05:32:07 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-04-04 09:13:58 +0000 |
commit | 411dc580077c5240e9cfd4808c06623345435b69 (patch) | |
tree | 913d0571dee0c1b76e7fb0d7d909a853ff71494f /lib/PublicInbox/WWW.pm | |
parent | 7f9cf4cbf5920591a955035555c2969d7d29af66 (diff) | |
download | public-inbox-411dc580077c5240e9cfd4808c06623345435b69.tar.gz |
Requests intended for cgit are unlikely to conflict with requests to inboxes. So we can safely hand those requests off to cgit.cgi.
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r-- | lib/PublicInbox/WWW.pm | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 7ed4f654..6e14e8c1 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -15,6 +15,7 @@ use 5.008; use strict; use warnings; use bytes (); # only for bytes::length +use Plack::Util; use PublicInbox::Config; use PublicInbox::Hval; use URI::Escape qw(uri_unescape); @@ -154,6 +155,7 @@ sub preload { eval "require $_;"; } if (ref($self)) { + $self->cgit; $self->stylesheets_prepare($_) for ('', '../', '../../'); } } @@ -188,7 +190,9 @@ sub invalid_inbox ($$) { # generation and link things intended for nntp:// to https?://, # so try to infer links and redirect them to the appropriate # list URL. - $www->news_www->call($ctx->{env}); + my $env = $ctx->{env}; + my $res = $www->news_www->call($env); + $res->[0] == 404 ? $www->cgit->call($env) : $res; } # returns undef if valid, array ref response if invalid @@ -467,6 +471,20 @@ sub news_www { } } +sub cgit { + my ($self) = @_; + $self->{cgit} ||= do { + my $pi_config = $self->{pi_config}; + + if (defined($pi_config->{'publicinbox.cgitrc'})) { + require PublicInbox::Cgit; + PublicInbox::Cgit->new($pi_config); + } else { + Plack::Util::inline_object(call => sub { r404() }); + } + } +} + sub get_attach { my ($ctx, $idx, $fn) = @_; require PublicInbox::WwwAttach; |