From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 581381FAF1 for ; Wed, 23 Nov 2022 04:09:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1669176599; bh=efY7pykGoyCPNbM0R49nXumffP/0ZMfTsG5+2Pmka3A=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Qiuf/RQEU9oH1jQvnJsbaUdk/tn08q6FIq8fEdUhcaA6uq9xiIPrC+452L/s/hjbj wfBRsQwxwNYggd8nUDUp02cy+hJwgjsP7tMUT+HccIXXBNG65E6eQKcqCpoDXcTqoQ H3nC71xkqXBLgdBLEDUPRUhSSnccuPWR5Cb7gw2U= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 3/3] lei_curl: use http.proxy config from git if available Date: Wed, 23 Nov 2022 04:09:58 +0000 Message-Id: <20221123040958.114960-4-e@80x24.org> In-Reply-To: <20221123040958.114960-1-e@80x24.org> References: <20221123040958.114960-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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);