From: Sébastien Santoro Date: Fri, 25 Mar 2016 15:10:19 +0000 (+0000) Subject: Http::getProxy() method to get proxy configuration X-Git-Tag: 1.31.0-rc.0~7506^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=6ae9367cddf8565c948f4d9458b07bb688f2ddc2;hp=36171312ef0e1b9acdea876f300dca8f3ad9982e Http::getProxy() method to get proxy configuration MediaWiki currently uses two sources for proxy configuration: * the $wgHTTPProxy global configuration variable * the http_proxy environment variable The HTTP proxy adress to use is a valuable information for extensions handling directly HTTP requests instead of use helper classes provided by the core to construct them. This change offers an Http::getProxy() utility method to get the configuration, regardless of the source. Bug: T117954 Change-Id: I5df31845df71f05ac581f532cc9bd7a1fea25583 --- diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php index 60196aba5b..697391b6d0 100644 --- a/includes/HttpFunctions.php +++ b/includes/HttpFunctions.php @@ -193,6 +193,26 @@ class Http { $uri ); } + + /** + * Gets the relevant proxy from $wgHTTPProxy/http_proxy (when set). + * + * @return mixed The proxy address or an empty string if not set. + */ + public static function getProxy() { + global $wgHTTPProxy; + + if ( $wgHTTPProxy ) { + return $wgHTTPProxy; + } + + $envHttpProxy = getenv( "http_proxy" ); + if ( $envHttpProxy ) { + return $envHttpProxy; + } + + return ""; + } } /** @@ -369,8 +389,6 @@ class MWHttpRequest { * @return void */ public function proxySetup() { - global $wgHTTPProxy; - // If there is an explicit proxy set and proxies are not disabled, then use it if ( $this->proxy && !$this->noProxy ) { return; @@ -380,10 +398,8 @@ class MWHttpRequest { // local URL and proxies are not disabled if ( Http::isLocalURL( $this->url ) || $this->noProxy ) { $this->proxy = ''; - } elseif ( $wgHTTPProxy ) { - $this->proxy = $wgHTTPProxy; - } elseif ( getenv( "http_proxy" ) ) { - $this->proxy = getenv( "http_proxy" ); + } else { + $this->proxy = Http::getProxy(); } } diff --git a/tests/phpunit/includes/HttpTest.php b/tests/phpunit/includes/HttpTest.php index ea4b6462e0..246c609ed2 100644 --- a/tests/phpunit/includes/HttpTest.php +++ b/tests/phpunit/includes/HttpTest.php @@ -62,6 +62,17 @@ class HttpTest extends MediaWikiTestCase { ); } + /** + * @covers Http::getProxy + */ + public function testGetProxy() { + $this->setMwGlobals( 'wgHTTPProxy', 'proxy.domain.tld' ); + $this->assertEquals( + 'proxy.domain.tld', + Http::getProxy() + ); + } + /** * Feeds URI to test a long regular expression in Http::isValidURI */