Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/litespee.../src
File: cdn.cls.php
* @param string|false $postfix File extension (with dot) when mapping by file type.
[500] Fix | Delete
* @return string|false Replaced URL on success, false when not applicable.
[501] Fix | Delete
*/
[502] Fix | Delete
public function rewrite( $url, $mapping_kind, $postfix = false ) {
[503] Fix | Delete
self::debug2( 'rewrite ' . $url );
[504] Fix | Delete
$url_parsed = wp_parse_url( $url );
[505] Fix | Delete
[506] Fix | Delete
if ( empty( $url_parsed['path'] ) ) {
[507] Fix | Delete
self::debug2( '-rewrite bypassed: no path' );
[508] Fix | Delete
return false;
[509] Fix | Delete
}
[510] Fix | Delete
[511] Fix | Delete
// Only images under wp-content/wp-includes can be replaced
[512] Fix | Delete
$is_internal_folder = Utility::str_hit_array( $url_parsed['path'], $this->_cfg_ori_dir );
[513] Fix | Delete
if ( ! $is_internal_folder ) {
[514] Fix | Delete
self::debug2( '-rewrite failed: path not match: ' . LSCWP_CONTENT_FOLDER );
[515] Fix | Delete
return false;
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
// Check if is external url
[519] Fix | Delete
if ( ! empty( $url_parsed['host'] ) ) {
[520] Fix | Delete
if ( ! Utility::internal( $url_parsed['host'] ) && ! $this->_is_ori_url( $url ) ) {
[521] Fix | Delete
self::debug2( '-rewrite failed: host not internal' );
[522] Fix | Delete
return false;
[523] Fix | Delete
}
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
$exclude = Utility::str_hit_array( $url, $this->_cfg_cdn_exclude );
[527] Fix | Delete
if ( $exclude ) {
[528] Fix | Delete
self::debug2( '-abort excludes ' . $exclude );
[529] Fix | Delete
return false;
[530] Fix | Delete
}
[531] Fix | Delete
[532] Fix | Delete
// Fill full url before replacement
[533] Fix | Delete
if ( empty( $url_parsed['host'] ) ) {
[534] Fix | Delete
$url = Utility::uri2url( $url );
[535] Fix | Delete
self::debug2( '-fill before rewritten: ' . $url );
[536] Fix | Delete
[537] Fix | Delete
$url_parsed = wp_parse_url( $url );
[538] Fix | Delete
}
[539] Fix | Delete
[540] Fix | Delete
$scheme = ! empty( $url_parsed['scheme'] ) ? $url_parsed['scheme'] . ':' : '';
[541] Fix | Delete
[542] Fix | Delete
// Find the mapping url to be replaced to
[543] Fix | Delete
if ( empty( $this->_cfg_cdn_mapping[ $mapping_kind ] ) ) {
[544] Fix | Delete
return false;
[545] Fix | Delete
}
[546] Fix | Delete
if ( Base::CDN_MAPPING_FILETYPE !== $mapping_kind ) {
[547] Fix | Delete
$final_url = $this->_cfg_cdn_mapping[ $mapping_kind ];
[548] Fix | Delete
} else {
[549] Fix | Delete
// select from file type
[550] Fix | Delete
$final_url = $this->_cfg_cdn_mapping[ $postfix ];
[551] Fix | Delete
if ( ! $final_url ) {
[552] Fix | Delete
return false;
[553] Fix | Delete
}
[554] Fix | Delete
}
[555] Fix | Delete
[556] Fix | Delete
// If filetype to url is one to many, need to random one
[557] Fix | Delete
if ( is_array( $final_url ) ) {
[558] Fix | Delete
$final_url = $final_url[ array_rand( $final_url ) ];
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
// Now lets replace CDN url
[562] Fix | Delete
foreach ( $this->_cfg_url_ori as $v ) {
[563] Fix | Delete
if ( false !== strpos( $v, '*' ) ) {
[564] Fix | Delete
$url = preg_replace( '#' . $scheme . $v . '#iU', $final_url, $url );
[565] Fix | Delete
} else {
[566] Fix | Delete
$url = str_replace( $scheme . $v, $final_url, $url );
[567] Fix | Delete
}
[568] Fix | Delete
}
[569] Fix | Delete
self::debug2( '-rewritten: ' . $url );
[570] Fix | Delete
[571] Fix | Delete
return $url;
[572] Fix | Delete
}
[573] Fix | Delete
[574] Fix | Delete
/**
[575] Fix | Delete
* Check if the given URL matches any configured "original" URLs for CDN.
[576] Fix | Delete
*
[577] Fix | Delete
* @since 2.1
[578] Fix | Delete
* @access private
[579] Fix | Delete
*
[580] Fix | Delete
* @param string $url URL to test.
[581] Fix | Delete
* @return bool True if URL is one of the originals.
[582] Fix | Delete
*/
[583] Fix | Delete
private function _is_ori_url( $url ) {
[584] Fix | Delete
$url_parsed = wp_parse_url( $url );
[585] Fix | Delete
[586] Fix | Delete
$scheme = ! empty( $url_parsed['scheme'] ) ? $url_parsed['scheme'] . ':' : '';
[587] Fix | Delete
[588] Fix | Delete
foreach ( $this->_cfg_url_ori as $v ) {
[589] Fix | Delete
$needle = $scheme . $v;
[590] Fix | Delete
if ( false !== strpos( $v, '*' ) ) {
[591] Fix | Delete
if ( preg_match( '#' . $needle . '#iU', $url ) ) {
[592] Fix | Delete
return true;
[593] Fix | Delete
}
[594] Fix | Delete
} elseif ( 0 === strpos( $url, $needle ) ) {
[595] Fix | Delete
return true;
[596] Fix | Delete
}
[597] Fix | Delete
}
[598] Fix | Delete
[599] Fix | Delete
return false;
[600] Fix | Delete
}
[601] Fix | Delete
[602] Fix | Delete
/**
[603] Fix | Delete
* Check if the host is one of the CDN mapping hosts.
[604] Fix | Delete
*
[605] Fix | Delete
* @since 1.2.3
[606] Fix | Delete
*
[607] Fix | Delete
* @param string $host Hostname to check.
[608] Fix | Delete
* @return bool False when bypassed, otherwise true if internal CDN host.
[609] Fix | Delete
*/
[610] Fix | Delete
public static function internal( $host ) {
[611] Fix | Delete
if ( defined( self::BYPASS ) ) {
[612] Fix | Delete
return false;
[613] Fix | Delete
}
[614] Fix | Delete
[615] Fix | Delete
$instance = self::cls();
[616] Fix | Delete
[617] Fix | Delete
return in_array( $host, $instance->cdn_mapping_hosts, true ); // todo: can add $this->_is_ori_url() check in future
[618] Fix | Delete
}
[619] Fix | Delete
}
[620] Fix | Delete
[621] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function