X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FWwwStream.pm;h=9ba8fa114de43a6c5621915f2e035d548fa348b9;hb=2adbbf87748719b422ba08d674ccb35637cb76b5;hp=e06e3456ae19cbf163fcae457cce533f58bf33c0;hpb=6c853f5256f3a324c018a37a9e8a6b9fc8fdc063;p=public-inbox.git
diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm
index e06e3456..9ba8fa11 100644
--- a/lib/PublicInbox/WwwStream.pm
+++ b/lib/PublicInbox/WwwStream.pm
@@ -12,11 +12,12 @@ our @EXPORT_OK = qw(html_oneshot);
use bytes (); # length
use PublicInbox::Hval qw(ascii_html prurl ts2str);
our $TOR_URL = 'https://www.torproject.org/';
-our $CODE_URL = 'https://public-inbox.org/public-inbox.git';
+our $CODE_URL = [ qw(http://ou63pmih66umazou.onion/public-inbox.git
+ https://public-inbox.org/public-inbox.git) ];
sub base_url ($) {
my $ctx = shift;
- my $base_url = $ctx->{-inbox}->base_url($ctx->{env});
+ my $base_url = $ctx->{ibx}->base_url($ctx->{env});
chop $base_url; # no trailing slash for clone
$base_url;
}
@@ -35,7 +36,7 @@ sub async_eml { # for async_blob_cb
sub html_top ($) {
my ($ctx) = @_;
- my $ibx = $ctx->{-inbox};
+ my $ibx = $ctx->{ibx};
my $desc = ascii_html($ibx->description);
my $title = delete($ctx->{-title_html}) // $desc;
my $upfx = $ctx->{-upfx} || '';
@@ -50,10 +51,11 @@ sub html_top ($) {
} elsif ($ctx->{qp}->{t}) {
$top = qq($top);
}
- my $links = "help / ".
- "color / ".
- "Atom feed";
- if ($ibx->search) {
+ my $links = qq(help / ).
+ qq(color / ).
+ qq(mirror / ).
+ qq(Atom feed);
+ if ($ibx->isrch) {
my $q_val = delete($ctx->{-q_value_html}) // '';
$q_val = qq(\nvalue="$q_val") if $q_val ne '';
# XXX gross, for SearchView.pm
@@ -75,6 +77,24 @@ sub html_top ($) {
'
'. $top . (delete($ctx->{-html_tip}) // '');
}
+sub coderepos ($) {
+ my ($ctx) = @_;
+ my $cr = $ctx->{ibx}->{coderepo} // return ();
+ my $cfg = $ctx->{www}->{pi_cfg};
+ my @ret;
+ for my $cr_name (@$cr) {
+ my $urls = $cfg->{"coderepo.$cr_name.cgiturl"} // next;
+ $ret[0] //= <{env}, $u));
+ $ret[0] .= qq(\n\t$u);
+ }
+ }
+ @ret; # may be empty, this sub is called as an arg for join()
+}
+
sub code_footer ($) {
my ($env) = @_;
my $u = prurl($env, $CODE_URL);
@@ -83,8 +103,12 @@ sub code_footer ($) {
sub _html_end {
my ($ctx) = @_;
- my $urls = 'Archives are clonable:';
- my $ibx = $ctx->{-inbox};
+ my $urls = <This inbox may be cloned and mirrored by anyone:
+EOF
+
+ my $ibx = $ctx->{ibx};
my $desc = ascii_html($ibx->description);
my @urls;
@@ -94,12 +118,18 @@ sub _html_end {
my %seen = ($http => 1);
if (defined($max)) { # v2
for my $i (0..$max) {
- # old parts my be deleted:
+ # old epochs my be deleted:
-d "$ibx->{inboxdir}/git/$i.git" or next;
my $url = "$http/$i";
$seen{$url} = 1;
push @urls, "$url $dir/git/$i.git";
}
+ my $nr = scalar(@urls);
+ if ($nr > 1) {
+ $urls .= "\n\t# this inbox consists of $nr epochs:";
+ $urls[0] .= "\t# oldest";
+ $urls[-1] .= "\t# newest";
+ }
} else { # v1
push @urls, $http;
}
@@ -111,44 +141,39 @@ sub _html_end {
push @urls, $u =~ /\Ahttps?:/ ? qq($u) : $u;
}
- if (defined($max) || scalar(@urls) > 1) {
- $urls .= "\n" .
- join("\n", map { "\tgit clone --mirror $_" } @urls);
- } else {
- $urls .= " git clone --mirror $urls[0]";
- }
- if (defined $max) {
- my $addrs = $ibx->{address};
+ $urls .= "\n" . join('', map { "\tgit clone --mirror $_\n" } @urls);
+ if (my $addrs = $ibx->{address}) {
$addrs = join(' ', @$addrs) if ref($addrs) eq 'ARRAY';
- $urls .= <{name} $dir/ $http \\
+ public-inbox-init $v $ibx->{name} $dir/ $http \\
$addrs
public-inbox-index $dir
EOF
- } else { # v1
- $urls .= "\n";
}
-
my $cfg_link = ($ctx->{-upfx} // '').'_/text/config/raw';
- $urls .= qq(\nExample config snippet for mirrors\n);
+ $urls .= <config snippet for mirrors.
+EOF
my @nntp = map { qq($_) } @{$ibx->nntp_url};
if (@nntp) {
- $urls .= "\n";
$urls .= @nntp == 1 ? 'Newsgroup' : 'Newsgroups are';
$urls .= ' available over NNTP:';
$urls .= "\n\t" . join("\n\t", @nntp) . "\n";
}
if ($urls =~ m!\b[^:]+://\w+\.onion/!) {
- $urls .= "\n note: .onion URLs require Tor: ";
+ $urls .= " note: .onion URLs require Tor: ";
$urls .= qq[$TOR_URL];
}
'
'.join("\n\n",
$desc,
$urls,
+ coderepos($ctx),
code_footer($ctx->{env})
).'