* [PATCH 1/3] lei_curl: set --proxy for curl(1) properly
2022-11-23 4:09 [PATCH 0/3] proxy-related things Eric Wong
@ 2022-11-23 4:09 ` Eric Wong
2022-11-23 4:09 ` [PATCH 2/3] config: urlmatch $? does not influence our exits Eric Wong
2022-11-23 4:09 ` [PATCH 3/3] lei_curl: use http.proxy config from git if available Eric Wong
2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2022-11-23 4:09 UTC (permalink / raw)
To: meta
curl(1) doesn't accept `--proxy=' with the `=', apparently :x
---
lib/PublicInbox/LeiCurl.pm | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/lib/PublicInbox/LeiCurl.pm b/lib/PublicInbox/LeiCurl.pm
index 4e602a48..f5e95956 100644
--- a/lib/PublicInbox/LeiCurl.pm
+++ b/lib/PublicInbox/LeiCurl.pm
@@ -7,8 +7,7 @@
# n.b. curl may support a daemon/client model like lei someday:
# https://github.com/curl/curl/wiki/curl-tool-master-client
package PublicInbox::LeiCurl;
-use strict;
-use v5.10.1;
+use v5.12;
use PublicInbox::Spawn qw(which);
use PublicInbox::Config;
@@ -78,7 +77,7 @@ sub for_uri {
if ($uri->scheme =~ /\Ahttps?\z/i) {
my $cfg = $lei->_lei_cfg;
my $p = $cfg ? $cfg->urlmatch('http.Proxy', $$uri) : undef;
- push(@opt, "--proxy=$p") if defined($p);
+ push(@opt, '--proxy', $p) if defined($p);
}
bless [ @$pfx, @$self, @opt, $uri->as_string ], ref($self);
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] lei_curl: use http.proxy config from git if available
2022-11-23 4:09 [PATCH 0/3] proxy-related things Eric Wong
2022-11-23 4:09 ` [PATCH 1/3] lei_curl: set --proxy for curl(1) properly Eric Wong
2022-11-23 4:09 ` [PATCH 2/3] config: urlmatch $? does not influence our exits Eric Wong
@ 2022-11-23 4:09 ` Eric Wong
2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2022-11-23 4:09 UTC (permalink / raw)
To: meta
Since HTTP(S) URLs hit by lei or public-inbox-{clone,fetch} are
expected to be git endpoints anyways, fall back to using
http.proxy from git configs to save the user from having to
maintain the same configuration for different things.
---
lib/PublicInbox/Config.pm | 16 +++++++++++-----
lib/PublicInbox/LeiCurl.pm | 2 +-
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 6a51226e..5620bd0e 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -533,7 +533,7 @@ sub _fill_ei ($$) {
}
sub urlmatch {
- my ($self, $key, $url) = @_;
+ my ($self, $key, $url, $try_git) = @_;
state $urlmatch_broken; # requires git 1.8.5
return if $urlmatch_broken;
my $file = $self->{'-f'} // default_file();
@@ -542,13 +542,19 @@ sub urlmatch {
my $fh = popen_rd($cmd);
local $/ = "\0";
my $val = <$fh>;
- if (close($fh)) {
- chomp($val);
- } else {
- $urlmatch_broken = 1 if (($? >> 8) != 1);
+ if (!close($fh)) {
undef $val;
+ if (($? >> 8) != 1) {
+ $urlmatch_broken = 1;
+ } elsif ($try_git) { # n.b. this takes cwd into account
+ $cmd = [qw(git config -z --get-urlmatch), $key, $url];
+ $fh = popen_rd($cmd);
+ $val = <$fh>;
+ close($fh) or undef($val);
+ }
}
$? = 0; # don't influence lei exit status
+ chomp $val if defined $val;
$val;
}
diff --git a/lib/PublicInbox/LeiCurl.pm b/lib/PublicInbox/LeiCurl.pm
index f5e95956..48c66ee9 100644
--- a/lib/PublicInbox/LeiCurl.pm
+++ b/lib/PublicInbox/LeiCurl.pm
@@ -76,7 +76,7 @@ sub for_uri {
my $pfx = torsocks($self, $lei, $uri) or return; # error
if ($uri->scheme =~ /\Ahttps?\z/i) {
my $cfg = $lei->_lei_cfg;
- my $p = $cfg ? $cfg->urlmatch('http.Proxy', $$uri) : undef;
+ my $p = $cfg ? $cfg->urlmatch('http.Proxy', $$uri, 1) : undef;
push(@opt, '--proxy', $p) if defined($p);
}
bless [ @$pfx, @$self, @opt, $uri->as_string ], ref($self);
^ permalink raw reply related [flat|nested] 4+ messages in thread