This should prevent crawlers (including most robots.txt ignoring
ones) from burning our CPU time without severely compromising
usability for humans.
+sub mbox_results {
+ my ($ctx) = @_;
+ my $q = PublicInbox::SearchQuery->new($ctx->{qp});
+ my $x = $q->{x};
+ return PublicInbox::Mbox::mbox_all($ctx, $q->{'q'}) if $x eq 'm';
+ sres_top_html($ctx);
+}
+
sub sres_top_html {
my ($ctx) = @_;
my $q = PublicInbox::SearchQuery->new($ctx->{qp});
my $x = $q->{x};
my $query = $q->{'q'};
sub sres_top_html {
my ($ctx) = @_;
my $q = PublicInbox::SearchQuery->new($ctx->{qp});
my $x = $q->{x};
my $query = $q->{'q'};
- return PublicInbox::Mbox::mbox_all($ctx, $query) if $x eq 'm';
my $code = 200;
# double the limit for expanded views:
my $code = 200;
# double the limit for expanded views:
} else {
return adump($_[0], $mset, $q, $ctx) if $x eq 'A';
} else {
return adump($_[0], $mset, $q, $ctx) if $x eq 'A';
- $ctx->{-html_tip} = search_nav_top($mset, $q, $ctx) . "\n\n";
+ $ctx->{-html_tip} = search_nav_top($mset, $q, $ctx);
if ($x eq 't') {
$cb = mset_thread($ctx, $mset, $q);
} else {
if ($x eq 't') {
$cb = mset_thread($ctx, $mset, $q);
} else {
sub search_nav_top {
my ($mset, $q, $ctx) = @_;
sub search_nav_top {
my ($mset, $q, $ctx) = @_;
+ my $m = $q->qs_html(x => 'm', r => undef);
+ my $rv = qq{<form\naction="?$m"\nmethod="post"><pre>};
my $initial_q = $ctx->{-uxs_retried};
if (defined $initial_q) {
my $rewritten = $q->{'q'};
my $initial_q = $ctx->{-uxs_retried};
if (defined $initial_q) {
my $rewritten = $q->{'q'};
}
my $A = $q->qs_html(x => 'A', r => undef);
$rv .= qq{|<a\nhref="?$A">Atom feed</a>]};
}
my $A = $q->qs_html(x => 'A', r => undef);
$rv .= qq{|<a\nhref="?$A">Atom feed</a>]};
- my $m = $q->qs_html(x => 'm', r => undef);
- warn "m: $m\n";
$rv .= qq{\n\t\t\t\t\t\tdownload: };
$rv .= qq{\n\t\t\t\t\t\tdownload: };
- $rv .= qq{<a\nhref="?$m"\nrel="nofollow">mbox.gz</a>};
+ $rv .= qq{<input\ntype=submit\nvalue="mbox.gz"/></pre></form><pre>};
my $path_info = $env->{PATH_INFO};
my $method = $env->{REQUEST_METHOD};
my $path_info = $env->{PATH_INFO};
my $method = $env->{REQUEST_METHOD};
- if ($method eq 'POST' &&
- $path_info =~ m!$INBOX_RE/(git-upload-pack)\z!) {
- my $path = $2;
- return invalid_inbox($ctx, $1) || serve_git($ctx, $path);
+ if ($method eq 'POST') {
+ if ($path_info =~ m!$INBOX_RE/(git-upload-pack)\z!) {
+ my $path = $2;
+ return invalid_inbox($ctx, $1) ||
+ serve_git($ctx, $path);
+ } elsif ($path_info =~ m!$INBOX_RE/!o) {
+ return invalid_inbox($ctx, $1) || mbox_results($ctx);
+ }
}
elsif ($method !~ /\AGET|HEAD\z/) {
return r(405, 'Method Not Allowed');
}
elsif ($method !~ /\AGET|HEAD\z/) {
return r(405, 'Method Not Allowed');
PublicInbox::GitHTTPBackend::serve($ctx->{env}, $ctx->{git}, $path);
}
PublicInbox::GitHTTPBackend::serve($ctx->{env}, $ctx->{git}, $path);
}
+sub mbox_results {
+ my ($ctx) = @_;
+ if ($ctx->{env}->{QUERY_STRING} =~ /(?:\A|[&;])q=/) {
+ searcher($ctx) or return need_search($ctx);
+ require PublicInbox::SearchView;
+ return PublicInbox::SearchView::mbox_results($ctx);
+ }
+ r404();
+}
+
sub serve_mbox_range {
my ($ctx, $inbox, $range) = @_;
invalid_inbox($ctx, $inbox) || eval {
sub serve_mbox_range {
my ($ctx, $inbox, $range) = @_;
invalid_inbox($ctx, $inbox) || eval {