-# Copyright (C) 2016-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# used for displaying help texts and other non-mail content
package PublicInbox::WwwText;
use strict;
-use warnings;
-use bytes (); # only for bytes::length
+use v5.10.1;
use PublicInbox::Linkify;
use PublicInbox::WwwStream;
use PublicInbox::Hval qw(ascii_html);
$txt = $gzf->translate($txt);
$txt .= $gzf->zflush;
}
- $hdr->[3] = bytes::length($txt);
+ $hdr->[3] = length($txt);
return [ $code, $hdr, [ $txt ] ]
}
# enforce trailing slash for "wget -r" compatibility
if (!$have_tslash && $code == 200) {
- my $url = $ctx->{-inbox}->base_url($env);
+ my $url = $ctx->{ibx}->base_url($env);
$url .= "_/text/$key/";
return [ 302, [ 'Content-Type', 'text/plain',
sub _colors_help ($$) {
my ($ctx, $txt) = @_;
- my $ibx = $ctx->{-inbox};
+ my $ibx = $ctx->{ibx};
my $env = $ctx->{env};
my $base_url = $ibx->base_url($env);
$$txt .= "color customization for $base_url\n";
# n.b. this is a perfect candidate for memoization
sub inbox_config ($$$) {
my ($ctx, $hdr, $txt) = @_;
- my $ibx = $ctx->{-inbox};
+ my $ibx = $ctx->{ibx};
push @$hdr, 'Content-Disposition', 'inline; filename=inbox.config';
my $name = dq_escape($ibx->{name});
my $inboxdir = '/path/to/top-level-inbox';
+ my $base_url = $ibx->base_url($ctx->{env});
$$txt .= <<EOS;
-; example public-inbox config snippet for "$name"
-; see public-inbox-config(5) manpage for more details:
+; Example public-inbox config snippet for a mirror of
+; $base_url
+; See public-inbox-config(5) manpage for more details:
; https://public-inbox.org/public-inbox-config.html
[publicinbox "$name"]
inboxdir = $inboxdir
- ; note: public-inbox before v1.2.0 used "mainrepo"
- ; instead of "inboxdir", both remain supported after 1.2
+ ; note: public-inbox before v1.2.0 used `mainrepo' instead of
+ ; `inboxdir', both remain supported after 1.2
mainrepo = $inboxdir
url = https://example.com/$name/
url = http://example.onion/$name/
$$txt .= "\t$k = $_\n" for @$v;
}
if (my $altid = $ibx->{altid}) {
- my $base_url = $ibx->base_url($ctx->{env});
my $altid_map = $ibx->altid_map;
$$txt .= <<EOF;
; altid DBs may be used to provide numeric article ID lookup from
; gzip(1), and sqlite3(1) as documented:
EOF
for (sort keys %$altid_map) {
- $$txt .= "\t;\tcurl -XPOST $base_url$_.sql.gz | \\\n" .
+ $$txt .= "\t;\tcurl -d '' $base_url$_.sql.gz | \\\n" .
"\t;\tgzip -dc | \\\n" .
"\t;\tsqlite3 $inboxdir/$_.sqlite3\n";
$$txt .= "\taltid = serial:$_:file=$_.sqlite3\n";
; line number ranges in `[PATCH]' emails link to /$INBOX_NAME/$OID/s/,
; an HTTP endpoint which reconstructs git blobs via git-apply(1).
EOF
- my $pi_config = $ctx->{www}->{pi_config};
+ my $pi_cfg = $ctx->{www}->{pi_cfg};
for my $cr_name (@$cr) {
- my $urls = $pi_config->{"coderepo.$cr_name.cgiturl"};
+ my $urls = $pi_cfg->get_all("coderepo.$cr_name.cgiturl");
my $path = "/path/to/$cr_name";
$cr_name = dq_escape($cr_name);
return inbox_config($ctx, $hdr, $txt) if $key eq 'config';
return if $key ne 'help'; # TODO more keys?
- my $ibx = $ctx->{-inbox};
+ my $ibx = $ctx->{ibx};
my $base_url = $ibx->base_url($ctx->{env});
$$txt .= "public-inbox help for $base_url\n";
$$txt .= <<EOF;
# n.b. we use the Xapian DB for any regeneratable,
# order-of-arrival-independent data.
- my $srch = $ibx->search;
+ my $srch = $ibx->isrch;
if ($srch) {
$$txt .= <<EOF;
search
This help text is maintained by public-inbox developers
reachable via plain-text email at: meta\@public-inbox.org
+ Their inbox is archived at: https://public-inbox.org/meta/
EOF
# TODO: support admin contact info in ~/.public-inbox/config