Edit File by line
/home/zeestwma/redstone.../wp-inclu...
File: class-wp-http-proxy.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* HTTP API: WP_HTTP_Proxy class
[2] Fix | Delete
*
[3] Fix | Delete
* @package WordPress
[4] Fix | Delete
* @subpackage HTTP
[5] Fix | Delete
* @since 4.4.0
[6] Fix | Delete
*/
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* Core class used to implement HTTP API proxy support.
[10] Fix | Delete
*
[11] Fix | Delete
* There are caveats to proxy support. It requires that defines be made in the wp-config.php file to
[12] Fix | Delete
* enable proxy support. There are also a few filters that plugins can hook into for some of the
[13] Fix | Delete
* constants.
[14] Fix | Delete
*
[15] Fix | Delete
* Please note that only BASIC authentication is supported by most transports.
[16] Fix | Delete
* cURL MAY support more methods (such as NTLM authentication) depending on your environment.
[17] Fix | Delete
*
[18] Fix | Delete
* The constants are as follows:
[19] Fix | Delete
* <ol>
[20] Fix | Delete
* <li>WP_PROXY_HOST - Enable proxy support and host for connecting.</li>
[21] Fix | Delete
* <li>WP_PROXY_PORT - Proxy port for connection. No default, must be defined.</li>
[22] Fix | Delete
* <li>WP_PROXY_USERNAME - Proxy username, if it requires authentication.</li>
[23] Fix | Delete
* <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li>
[24] Fix | Delete
* <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy.
[25] Fix | Delete
* You do not need to have localhost and the site host in this list, because they will not be passed
[26] Fix | Delete
* through the proxy. The list should be presented in a comma separated list, wildcards using * are supported. Example: *.wordpress.org</li>
[27] Fix | Delete
* </ol>
[28] Fix | Delete
*
[29] Fix | Delete
* An example can be as seen below.
[30] Fix | Delete
*
[31] Fix | Delete
* define('WP_PROXY_HOST', '192.168.84.101');
[32] Fix | Delete
* define('WP_PROXY_PORT', '8080');
[33] Fix | Delete
* define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org');
[34] Fix | Delete
*
[35] Fix | Delete
* @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress.
[36] Fix | Delete
* @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_PROXY_BYPASS_HOSTS
[37] Fix | Delete
*
[38] Fix | Delete
* @since 2.8.0
[39] Fix | Delete
*/
[40] Fix | Delete
#[AllowDynamicProperties]
[41] Fix | Delete
class WP_HTTP_Proxy {
[42] Fix | Delete
[43] Fix | Delete
/**
[44] Fix | Delete
* Whether proxy connection should be used.
[45] Fix | Delete
*
[46] Fix | Delete
* Constants which control this behavior:
[47] Fix | Delete
*
[48] Fix | Delete
* - `WP_PROXY_HOST`
[49] Fix | Delete
* - `WP_PROXY_PORT`
[50] Fix | Delete
*
[51] Fix | Delete
* @since 2.8.0
[52] Fix | Delete
*
[53] Fix | Delete
* @return bool
[54] Fix | Delete
*/
[55] Fix | Delete
public function is_enabled() {
[56] Fix | Delete
return defined( 'WP_PROXY_HOST' ) && defined( 'WP_PROXY_PORT' );
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
/**
[60] Fix | Delete
* Whether authentication should be used.
[61] Fix | Delete
*
[62] Fix | Delete
* Constants which control this behavior:
[63] Fix | Delete
*
[64] Fix | Delete
* - `WP_PROXY_USERNAME`
[65] Fix | Delete
* - `WP_PROXY_PASSWORD`
[66] Fix | Delete
*
[67] Fix | Delete
* @since 2.8.0
[68] Fix | Delete
*
[69] Fix | Delete
* @return bool
[70] Fix | Delete
*/
[71] Fix | Delete
public function use_authentication() {
[72] Fix | Delete
return defined( 'WP_PROXY_USERNAME' ) && defined( 'WP_PROXY_PASSWORD' );
[73] Fix | Delete
}
[74] Fix | Delete
[75] Fix | Delete
/**
[76] Fix | Delete
* Retrieve the host for the proxy server.
[77] Fix | Delete
*
[78] Fix | Delete
* @since 2.8.0
[79] Fix | Delete
*
[80] Fix | Delete
* @return string
[81] Fix | Delete
*/
[82] Fix | Delete
public function host() {
[83] Fix | Delete
if ( defined( 'WP_PROXY_HOST' ) ) {
[84] Fix | Delete
return WP_PROXY_HOST;
[85] Fix | Delete
}
[86] Fix | Delete
[87] Fix | Delete
return '';
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
/**
[91] Fix | Delete
* Retrieve the port for the proxy server.
[92] Fix | Delete
*
[93] Fix | Delete
* @since 2.8.0
[94] Fix | Delete
*
[95] Fix | Delete
* @return string
[96] Fix | Delete
*/
[97] Fix | Delete
public function port() {
[98] Fix | Delete
if ( defined( 'WP_PROXY_PORT' ) ) {
[99] Fix | Delete
return WP_PROXY_PORT;
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
return '';
[103] Fix | Delete
}
[104] Fix | Delete
[105] Fix | Delete
/**
[106] Fix | Delete
* Retrieve the username for proxy authentication.
[107] Fix | Delete
*
[108] Fix | Delete
* @since 2.8.0
[109] Fix | Delete
*
[110] Fix | Delete
* @return string
[111] Fix | Delete
*/
[112] Fix | Delete
public function username() {
[113] Fix | Delete
if ( defined( 'WP_PROXY_USERNAME' ) ) {
[114] Fix | Delete
return WP_PROXY_USERNAME;
[115] Fix | Delete
}
[116] Fix | Delete
[117] Fix | Delete
return '';
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
/**
[121] Fix | Delete
* Retrieve the password for proxy authentication.
[122] Fix | Delete
*
[123] Fix | Delete
* @since 2.8.0
[124] Fix | Delete
*
[125] Fix | Delete
* @return string
[126] Fix | Delete
*/
[127] Fix | Delete
public function password() {
[128] Fix | Delete
if ( defined( 'WP_PROXY_PASSWORD' ) ) {
[129] Fix | Delete
return WP_PROXY_PASSWORD;
[130] Fix | Delete
}
[131] Fix | Delete
[132] Fix | Delete
return '';
[133] Fix | Delete
}
[134] Fix | Delete
[135] Fix | Delete
/**
[136] Fix | Delete
* Retrieve authentication string for proxy authentication.
[137] Fix | Delete
*
[138] Fix | Delete
* @since 2.8.0
[139] Fix | Delete
*
[140] Fix | Delete
* @return string
[141] Fix | Delete
*/
[142] Fix | Delete
public function authentication() {
[143] Fix | Delete
return $this->username() . ':' . $this->password();
[144] Fix | Delete
}
[145] Fix | Delete
[146] Fix | Delete
/**
[147] Fix | Delete
* Retrieve header string for proxy authentication.
[148] Fix | Delete
*
[149] Fix | Delete
* @since 2.8.0
[150] Fix | Delete
*
[151] Fix | Delete
* @return string
[152] Fix | Delete
*/
[153] Fix | Delete
public function authentication_header() {
[154] Fix | Delete
return 'Proxy-Authorization: Basic ' . base64_encode( $this->authentication() );
[155] Fix | Delete
}
[156] Fix | Delete
[157] Fix | Delete
/**
[158] Fix | Delete
* Determines whether the request should be sent through a proxy.
[159] Fix | Delete
*
[160] Fix | Delete
* We want to keep localhost and the site URL from being sent through the proxy, because
[161] Fix | Delete
* some proxies can not handle this. We also have the constant available for defining other
[162] Fix | Delete
* hosts that won't be sent through the proxy.
[163] Fix | Delete
*
[164] Fix | Delete
* @since 2.8.0
[165] Fix | Delete
*
[166] Fix | Delete
* @param string $uri URL of the request.
[167] Fix | Delete
* @return bool Whether to send the request through the proxy.
[168] Fix | Delete
*/
[169] Fix | Delete
public function send_through_proxy( $uri ) {
[170] Fix | Delete
$check = parse_url( $uri );
[171] Fix | Delete
[172] Fix | Delete
// Malformed URL, can not process, but this could mean ssl, so let through anyway.
[173] Fix | Delete
if ( false === $check ) {
[174] Fix | Delete
return true;
[175] Fix | Delete
}
[176] Fix | Delete
[177] Fix | Delete
$home = parse_url( get_option( 'siteurl' ) );
[178] Fix | Delete
[179] Fix | Delete
/**
[180] Fix | Delete
* Filters whether to preempt sending the request through the proxy.
[181] Fix | Delete
*
[182] Fix | Delete
* Returning false will bypass the proxy; returning true will send
[183] Fix | Delete
* the request through the proxy. Returning null bypasses the filter.
[184] Fix | Delete
*
[185] Fix | Delete
* @since 3.5.0
[186] Fix | Delete
*
[187] Fix | Delete
* @param bool|null $override Whether to send the request through the proxy. Default null.
[188] Fix | Delete
* @param string $uri URL of the request.
[189] Fix | Delete
* @param array $check Associative array result of parsing the request URL with `parse_url()`.
[190] Fix | Delete
* @param array $home Associative array result of parsing the site URL with `parse_url()`.
[191] Fix | Delete
*/
[192] Fix | Delete
$result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home );
[193] Fix | Delete
if ( ! is_null( $result ) ) {
[194] Fix | Delete
return $result;
[195] Fix | Delete
}
[196] Fix | Delete
[197] Fix | Delete
if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] === $check['host'] ) ) {
[198] Fix | Delete
return false;
[199] Fix | Delete
}
[200] Fix | Delete
[201] Fix | Delete
if ( ! defined( 'WP_PROXY_BYPASS_HOSTS' ) ) {
[202] Fix | Delete
return true;
[203] Fix | Delete
}
[204] Fix | Delete
[205] Fix | Delete
static $bypass_hosts = null;
[206] Fix | Delete
static $wildcard_regex = array();
[207] Fix | Delete
if ( null === $bypass_hosts ) {
[208] Fix | Delete
$bypass_hosts = preg_split( '|,\s*|', WP_PROXY_BYPASS_HOSTS );
[209] Fix | Delete
[210] Fix | Delete
if ( str_contains( WP_PROXY_BYPASS_HOSTS, '*' ) ) {
[211] Fix | Delete
$wildcard_regex = array();
[212] Fix | Delete
foreach ( $bypass_hosts as $host ) {
[213] Fix | Delete
$wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
[214] Fix | Delete
}
[215] Fix | Delete
$wildcard_regex = '/^(' . implode( '|', $wildcard_regex ) . ')$/i';
[216] Fix | Delete
}
[217] Fix | Delete
}
[218] Fix | Delete
[219] Fix | Delete
if ( ! empty( $wildcard_regex ) ) {
[220] Fix | Delete
return ! preg_match( $wildcard_regex, $check['host'] );
[221] Fix | Delete
} else {
[222] Fix | Delete
return ! in_array( $check['host'], $bypass_hosts, true );
[223] Fix | Delete
}
[224] Fix | Delete
}
[225] Fix | Delete
}
[226] Fix | Delete
[227] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function