ge/apng,image/*,*/*;q=0.8', 'Connection: close' ]); // Stream directly to output $fp = fopen('php://output', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); // Execute the cURL request curl_exec($ch); curl_close($ch); fclose($fp); exit; } public static function isValidDomain($image_url) { // Allowed Amazon domains $allowed_domains = [ 'images-amazon.com', 'm.media-amazon.com', 'ssl-images-amazon.com', ]; $parsed_url = parse_url($image_url); if (!isset($parsed_url['host'])) { return false; } $host = strtolower($parsed_url['host']); if (in_array($host, $allowed_domains)) { return true; } return false; } public static function isLocalImageUrl($url) { $host = parse_url($url, PHP_URL_HOST); if (empty($host)) { return true; } $local_host = parse_url(home_url(), PHP_URL_HOST); return (strcasecmp($host, $local_host) === 0); } public static function generateProxyImageUrl($image_url) { if (!filter_var($image_url, FILTER_VALIDATE_URL)) { return $image_url; } $proxy_url = add_query_arg( [ 'action' => 'ce_proxy_image', '_nonce' => wp_create_nonce('ce_proxy_image'), 'url' => urlencode($image_url), ], admin_url('admin-ajax.php') ); return $proxy_url; } public static function maybeGenerateProxyImageUrl($image_url) { if (self::isLocalImageUrl($image_url)) { return $image_url; } if (!ImageProxy::isValidDomain($image_url)) { return $image_url; } return self::generateProxyImageUrl($image_url); } }