[wp-trac] [WordPress Trac] #37494: Wordpress 4.6 Beta 4: Proxy setting not work

WordPress Trac noreply at wordpress.org
Thu Jul 28 09:56:18 UTC 2016


#37494: Wordpress 4.6 Beta 4: Proxy setting not work
------------------------------+-----------------------------
 Reporter:  francescobagnoli  |      Owner:
     Type:  defect (bug)      |     Status:  new
 Priority:  normal            |  Milestone:  Awaiting Review
Component:  HTTP API          |    Version:  trunk
 Severity:  normal            |   Keywords:
  Focuses:                    |
------------------------------+-----------------------------
 in wp-config.php

 {{{
 define('WP_PROXY_HOST',     '172.16.XXX.XXX');
 define('WP_PROXY_PORT',     '3128');
 define('WP_PROXY_USERNAME', 'XXX');
 define('WP_PROXY_PASSWORD', 'XXX');
 }}}

 in function.php

 {{{
 $headers['X-Forwarded-For'] = $_SERVER['REMOTE_ADDR'];
 $response = wp_remote_get('http://example.com/', array('headers' =>
 $headers));
 }}}


 the proxy server raise an exception on authentication failed.


 debugging i see in Requests_Proxy_HTTP class, $use_authentication property
 is always false and in curl_before_send() method if $use_authentication is
 false curl_setopt CURLOPT_PROXYUSERPWD is never setted. If I force
 $use_authentication to be true, everything works.


 the fix for me is edit /wp-includes/class-http.php line 354:

 {{{#!php
 $options['proxy'] = new Requests_Proxy_HTTP( $proxy->host() . ':' .
 $proxy->port() );
 if ( $proxy->use_authentication() ) {
     $options['proxy']->user = $proxy->username();
     $options['proxy']->pass = $proxy->password();
 }
 }}}


 change to

 {{{#!php
 if ( $proxy->use_authentication() ) {
     $options['proxy']->user = $proxy->username();
     $options['proxy']->pass = $proxy->password();

     $options['proxy'] = new Requests_Proxy_HTTP( array($proxy->host() .
 ':' . $proxy->port(), $proxy->username(), $proxy->password()) );
 } else {
     $options['proxy'] = new Requests_Proxy_HTTP( $proxy->host() . ':' .
 $proxy->port() );
 }
 }}}


 This because Requests_Proxy_HTTP set $use_authentication property to true,
 only if Requests_Proxy_HTTP::__construct() has 3 parameters

 {{{#!php
 public function __construct($args = null) {
     if (is_string($args)) {
         $this->proxy = $args;
     }
     elseif (is_array($args)) {
         if (count($args) == 1) {
             list($this->proxy) = $args;
         }
         elseif (count($args) == 3) {
             list($this->proxy, $this->user, $this->pass) = $args;
             $this->use_authentication = true;
         }
         else {
             throw new Requests_Exception('Invalid number of arguments',
 'proxyhttpbadargs');
         }
     }
 }
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/37494>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list