user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [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).