* [PATCH 4/4] config: assume multiple cgit URLs, too
2020-02-01 9:12 6% [PATCH 0/4] flesh out multi-URL support Eric Wong
@ 2020-02-01 9:12 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2020-02-01 9:12 UTC (permalink / raw)
To: meta
Since we support inboxes with multiple URLs and multiple
infourls to reduce reliance on SPOFs, we'll do the same with
cgit URLs.
---
lib/PublicInbox/Config.pm | 8 ++++++--
lib/PublicInbox/WwwText.pm | 18 +++++++++++-------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 1ba1225e..e0ca7c5a 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -190,6 +190,9 @@ sub cgit_repo_merge ($$$) {
return unless -e "$path/$se";
}
return if -e "$path/noweb";
+ # this comes from the cgit config, and AFAIK cgit only allows
+ # repos to have one URL, but that's just the PATH_INFO component,
+ # not the Host: portion
# $repo = { url => 'foo.git', dir => '/path/to/foo.git' }
my $rel = $repo->{url};
unless (defined $rel) {
@@ -207,7 +210,7 @@ sub cgit_repo_merge ($$$) {
$rel =~ s!/?\.git\z!!;
}
$self->{"coderepo.$rel.dir"} //= $path;
- $self->{"coderepo.$rel.cgiturl"} //= $rel;
+ $self->{"coderepo.$rel.cgiturl"} //= _array($rel);
}
sub is_git_dir ($) {
@@ -332,8 +335,9 @@ sub _fill_code_repo {
_array($self->{lc("$pfx.${t}UrlFormat")});
}
- if (my $cgits = $self->{lc("$pfx.cgitUrl")}) {
+ if (defined(my $cgits = $self->{"$pfx.cgiturl"})) {
$git->{cgit_url} = $cgits = _array($cgits);
+ $self->{"$pfx.cgiturl"} = $cgits;
# cgit supports "/blob/?id=%s", but it's only a plain-text
# display and requires an unabbreviated id=
diff --git a/lib/PublicInbox/WwwText.pm b/lib/PublicInbox/WwwText.pm
index fbbe8e3b..c084b5bf 100644
--- a/lib/PublicInbox/WwwText.pm
+++ b/lib/PublicInbox/WwwText.pm
@@ -168,17 +168,21 @@ EOS
my $pi_config = $ctx->{www}->{pi_config};
for my $cr_name (@$cr) {
- my $url = $pi_config->{"coderepo.$cr_name.cgiturl"};
+ my $urls = $pi_config->{"coderepo.$cr_name.cgiturl"};
my $path = "/path/to/$cr_name";
$cr_name = dq_escape($cr_name);
$$txt .= qq([coderepo "$cr_name"]\n);
- if (defined($url)) {
- my $cpath = $path;
- if ($path !~ m![a-z0-9_/\.\-]!i) {
- $cpath = dq_escape($cpath);
- }
- $$txt .= qq(\t; git clone $url "$cpath"\n);
+ if ($urls && scalar(@$urls)) {
+ $$txt .= "\t; ";
+ $$txt .= join(" ||\n\t;\t", map {;
+ my $cpath = $path;
+ if ($path !~ m![a-z0-9_/\.\-]!i) {
+ $cpath = dq_escape($cpath);
+ }
+ qq(git clone $_ "$cpath");
+ } @$urls);
+ $$txt .= "\n";
}
$$txt .= "\tdir = $path\n";
$$txt .= "\tcgiturl = https://example.com/";
^ permalink raw reply related [relevance 7%]
* [PATCH 0/4] flesh out multi-URL support
@ 2020-02-01 9:12 6% Eric Wong
2020-02-01 9:12 7% ` [PATCH 4/4] config: assume multiple cgit URLs, too Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2020-02-01 9:12 UTC (permalink / raw)
To: meta
Better support for multiple URLs will hopefully discourage SPOFs
and give users more options when hosts go down. It also gives
users and admins more agility when it comes to switching domain
names or having .onion mirrors.
Eric Wong (4):
wwwtext: show multiple infourl values properly
wwwtext: give "url" examples in sample config
solver: join multiple URLs with "||"
config: assume multiple cgit URLs, too
lib/PublicInbox/Config.pm | 8 ++++++--
lib/PublicInbox/SolverGit.pm | 5 +++--
lib/PublicInbox/WwwText.pm | 24 +++++++++++++++---------
3 files changed, 24 insertions(+), 13 deletions(-)
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2020-02-01 9:12 6% [PATCH 0/4] flesh out multi-URL support Eric Wong
2020-02-01 9:12 7% ` [PATCH 4/4] config: assume multiple cgit URLs, too Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).