diff --git a/public/proxy.php b/public/proxy.php deleted file mode 100644 index 0594aff..0000000 --- a/public/proxy.php +++ /dev/null @@ -1,96 +0,0 @@ -deserialise($proxyUrl, true); -$parsedUrl = parse_url($proxyUrlDecoded); - -if(empty($parsedUrl['scheme']) - || empty($parsedUrl['host']) - || !in_array($parsedUrl['scheme'], $acceptedProtocols, true)) { - http_response_code(400); - echo '400.2'; - return; -} - -if(!$cfg->getValue('media_proxy.enable', CfgType::T_BOOL)) { - redirect($proxyUrlDecoded); - return; -} - -$proxySecret = $cfg->getValue('media_proxy.secret', CfgType::T_STR, 'insecure'); -$expectedHash = hash_hmac('sha256', $proxyUrl, $proxySecret); - -if(!hash_equals($expectedHash, $proxyHash)) { - http_response_code(400); - echo '400.3'; - return; -} - -$curl = curl_init($proxyUrlDecoded); -curl_setopt_array($curl, [ - CURLOPT_CERTINFO => false, - CURLOPT_FAILONERROR => false, - CURLOPT_FOLLOWLOCATION => true, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TCP_FASTOPEN => true, - CURLOPT_CONNECTTIMEOUT => 2, - CURLOPT_MAXREDIRS => 4, - CURLOPT_PROTOCOLS => CURLPROTO_HTTP | CURLPROTO_HTTPS, - CURLOPT_TIMEOUT => 10, - CURLOPT_USERAGENT => 'Mozilla/5.0 (compatible) Misuzu/' . GitInfo::tag(), -]); -$curlBody = curl_exec($curl); -curl_close($curl); - -$entityTag = 'W/"' . hash('sha256', $curlBody) . '"'; - -if(!empty($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] === $entityTag) { - http_response_code(304); - return; -} - -$finfo = finfo_open(FILEINFO_MIME_TYPE); -$fileMime = strtolower(finfo_buffer($finfo, $curlBody)); -finfo_close($finfo); - -if(!in_array($fileMime, $acceptedMimeTypes, true)) { - http_response_code(404); - echo '404.1'; - return; -} - -$fileSize = strlen($curlBody); -$fileName = basename($parsedUrl['path'] ?? "proxied-image-{$expectedHash}"); - -header("Content-Type: {$fileMime}"); -header("Content-Length: {$fileSize}"); -header("Content-Disposition: inline; filename=\"{$fileName}\""); -header("ETag: {$entityTag}"); - -echo $curlBody; diff --git a/src/Parsers/BBCode/Tags/AudioTag.php b/src/Parsers/BBCode/Tags/AudioTag.php index 771509f..d586e34 100644 --- a/src/Parsers/BBCode/Tags/AudioTag.php +++ b/src/Parsers/BBCode/Tags/AudioTag.php @@ -16,7 +16,7 @@ final class AudioTag extends BBCodeTag { //$url['host'] = mb_strtolower($url['host']); - $mediaUrl = url_proxy_media($matches[1]); + //$mediaUrl = url_proxy_media($matches[1]); return ""; }, $text diff --git a/src/Parsers/BBCode/Tags/ImageTag.php b/src/Parsers/BBCode/Tags/ImageTag.php index f164053..c4b5cb8 100644 --- a/src/Parsers/BBCode/Tags/ImageTag.php +++ b/src/Parsers/BBCode/Tags/ImageTag.php @@ -6,7 +6,7 @@ use Misuzu\Parsers\BBCode\BBCodeTag; final class ImageTag extends BBCodeTag { public function parseText(string $text): string { return preg_replace_callback("/\[img\]((?:https?:\/\/).+?)\[\/img\]/", function ($matches) { - $mediaUrl = url_proxy_media($matches[1]); + //$mediaUrl = url_proxy_media($matches[1]); return sprintf('%s', $mediaUrl, $matches[1]); }, $text); } diff --git a/src/Parsers/BBCode/Tags/VideoTag.php b/src/Parsers/BBCode/Tags/VideoTag.php index 93ce891..0e4cdc8 100644 --- a/src/Parsers/BBCode/Tags/VideoTag.php +++ b/src/Parsers/BBCode/Tags/VideoTag.php @@ -43,7 +43,7 @@ final class VideoTag extends BBCodeTag { } } - $mediaUrl = url_proxy_media($matches[1]); + //$mediaUrl = url_proxy_media($matches[1]); return sprintf('', $mediaUrl); }, $text diff --git a/src/Parsers/MarkdownParser.php b/src/Parsers/MarkdownParser.php index 27b8bfc..9180644 100644 --- a/src/Parsers/MarkdownParser.php +++ b/src/Parsers/MarkdownParser.php @@ -15,9 +15,9 @@ class MarkdownParser extends Parsedown implements ParserInterface { protected function inlineImage($excerpt) { $object = parent::inlineImage($excerpt); - if(!empty($object['element']['attributes']['src']) && !is_local_url($object['element']['attributes']['src'])) { - $object['element']['attributes']['src'] = url_proxy_media($object['element']['attributes']['src']); - } + //if(!empty($object['element']['attributes']['src']) && !is_local_url($object['element']['attributes']['src'])) { + // $object['element']['attributes']['src'] = url_proxy_media($object['element']['attributes']['src']); + //} return $object; } diff --git a/src/url.php b/src/url.php index 6e39314..8804db7 100644 --- a/src/url.php +++ b/src/url.php @@ -10,7 +10,6 @@ define('MSZ_URLS', [ 'index' => ['/'], 'info' => ['/info/'], - 'media-proxy' => ['/proxy.php/<hash>/<url>'], 'search-index' => ['/search.php'], 'search-query' => ['/search.php', ['q' => '<query>']], @@ -248,18 +247,6 @@ function url_construct(string $url, array $query = [], ?string $fragment = null) return $url; } -function url_proxy_media(?string $url): ?string { - if(empty($url) || !\Misuzu\Config::get('media_proxy.enable', \Misuzu\Config\CfgType::T_BOOL) || is_local_url($url)) { - return $url; - } - - $secret = \Misuzu\Config::get('media_proxy.secret', \Misuzu\Config\CfgType::T_STR, 'insecure'); - $url = \Index\Serialisation\Serialiser::uriBase64()->serialise($url); - $hash = hash_hmac('sha256', $url, $secret); - - return url('media-proxy', compact('hash', 'url')); -} - function url_prefix(bool $trailingSlash = true): string { return 'http' . (empty($_SERVER['HTTPS']) ? '' : 's') . '://' . $_SERVER['HTTP_HOST'] . ($trailingSlash ? '/' : ''); }