]> git.wh0rd.org - tt-rss.git/commitdiff
update af_zz_imgproxy to plug into built-in image caching
authorAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Fri, 10 Feb 2017 09:12:09 +0000 (12:12 +0300)
committerAndrew Dolgov <noreply@madoka.volgo-balt.ru>
Fri, 10 Feb 2017 09:12:09 +0000 (12:12 +0300)
plugins/af_zz_imgproxy/init.php

index b13117570b2847d19fe2401b9da6d24772a3b3c1..df8f34dbe2c8c27bf4df343671bc1b75202e24ed 100644 (file)
@@ -4,7 +4,7 @@ class Af_Zz_ImgProxy extends Plugin {
 
        function about() {
                return array(1.0,
-                       "Load insecure images via built-in proxy (no caching)",
+                       "Load insecure images via built-in proxy",
                        "fox");
        }
 
@@ -28,49 +28,34 @@ class Af_Zz_ImgProxy extends Plugin {
                return $this->hook_render_article_cdm($headline["headline"], true);
        }
 
-       /*public function vidproxy() {
-               $url = $_REQUEST["url"];
-
-               if (preg_match("/\.(mp4|webm|gifv)/", $url, $matches)) {
-                       $type = $matches[1];
-                       $embed_url = $url;
+       public function imgproxy() {
+               $url = rewrite_relative_url(SELF_URL_PATH, $_REQUEST["url"]);
+               $kind = (int) $_REQUEST["kind"]; // 1 = video
 
-                       if ($type == "gifv") {
-                               $type = "mp4";
-                               $embed_url = str_replace(".gifv", ".mp4", $embed_url);
-                       }
+               $extension = $kind == 1 ? '.mp4' : '.png';
+               $local_filename = CACHE_DIR . "/images/" . sha1($url) . $extension;
 
-                       header("Content-type: text/html");
+               if ($_REQUEST["debug"] == "1") { print $local_filename; die; }
 
-                       $embed_url = htmlspecialchars("backend.php?op=pluginhandler&plugin=af_zz_imgproxy&method=imgproxy&url=" .
-                               urlencode($embed_url));
+               header("Content-Disposition: attachment; filename=\"".basename($local_filename)."\"");
 
-                       print "<video class=\"\" autoplay=\"true\" controls=\"true\" loop=\"true\">";
-                       print "<source src=\"$embed_url\" type=\"video/$type\">";
-                       print "</video>";
+               if (file_exists($local_filename)) {
+                       readfile($local_filename);
                } else {
-                       header("Location: " . htmlspecialchars($url));
-               }
-       }*/
-
-       public function imgproxy() {
-               $url = rewrite_relative_url(SELF_URL_PATH, $_REQUEST["url"]);
-
-               if (function_exists("getimagesize")) {
-                       $is = @getimagesize($url);
-                       header("Content-type: " . $is["mime"]);
+                       $data = fetch_file_contents(array("url" => $url));
+                       if ($data) {
+                               file_put_contents($local_filename, $data);
+                               print $data;
+                       }
                }
-
-               print fetch_file_contents(array("url" => $url));
        }
 
-       function rewrite_url_if_needed($url) {
+       function rewrite_url_if_needed($url, $kind = 0) {
                $scheme = parse_url($url, PHP_URL_SCHEME);
 
-               if ($scheme != 'https' && $scheme != "") {
-                       $url = "backend.php?op=pluginhandler&plugin=af_zz_imgproxy&method=imgproxy&url=" .
+               if ($scheme != 'https' && $scheme != "" && strpos($url, "data:") !== 0) {
+                       $url = "backend.php?op=pluginhandler&plugin=af_zz_imgproxy&method=imgproxy&kind=$kind&url=" .
                                htmlspecialchars($url);
-
                }
 
                return $url;
@@ -111,7 +96,7 @@ class Af_Zz_ImgProxy extends Plugin {
                                $vsrcs = $xpath->query("source", $vid);
 
                                foreach ($vsrcs as $vsrc) {
-                                       $new_src = $this->rewrite_url_if_needed($vsrc->getAttribute("src"));
+                                       $new_src = $this->rewrite_url_if_needed($vsrc->getAttribute("src"), 1);
 
                                        if ($new_src != $vsrc->getAttribute("src")) {
                                                $vid->setAttribute("src", $new_src);