From a512ae98fd33d7f0156e05af9c0b4d03c0b5c014 Mon Sep 17 00:00:00 2001
From: Dominik Pfennig <dominik@suma-ev.de>
Date: Mon, 20 Mar 2017 09:23:37 +0100
Subject: [PATCH] =?UTF-8?q?HTML5=20Picture=20Tags=20werden=20nun=20unterst?=
 =?UTF-8?q?=C3=BCtzt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/HtmlDocument.php                     | 29 ++++++++++++++++++++++++
 app/Http/Controllers/ProxyController.php |  1 +
 2 files changed, 30 insertions(+)

diff --git a/app/HtmlDocument.php b/app/HtmlDocument.php
index 0318431..065913b 100644
--- a/app/HtmlDocument.php
+++ b/app/HtmlDocument.php
@@ -165,6 +165,35 @@ class HtmlDocument extends Document
                 $img->setAttribute("srcset", $srcset);
             }
         }
+        # All Source Tags
+        foreach ($dom->getElementsByTagName('source') as $img) {
+            if ($img->hasAttribute("src")) {
+                # Convert all Image src's to Absolute Links
+                $img->setAttribute("src", $this->convertRelativeToAbsoluteLink($img->getAttribute("src")));
+                # Convert all Image Sources to proxified Versions
+                $img->setAttribute("src", $this->proxifyUrl($img->getAttribute("src"), false));
+
+            }
+            # Some Images might contain a srcset (Different Images for different resolutions)
+            # Syntax would be i.e. srcset="medium.jpg 1000w, large.jpg 2000w"
+            $srcset = $img->getAttribute("srcset");
+            if ($srcset !== "") {
+                $images = explode(",", $srcset);
+                foreach ($images as $index => $set) {
+                    $set   = trim($set);
+                    $parts = preg_split("/\s+/si", $set);
+                    # $parts[0] is the Image Path
+                    # It could be relative so convert that one:
+                    $parts[0] = $this->convertRelativeToAbsoluteLink($parts[0]);
+
+                    # And now Proxify it:
+                    $parts[0]       = $this->proxifyUrl($parts[0], false);
+                    $images[$index] = implode(" ", $parts);
+                }
+                $srcset = implode(",", $images);
+                $img->setAttribute("srcset", $srcset);
+            }
+        }
 
         # Alle Meta Tags
         foreach ($dom->getElementsByTagName('meta') as $meta) {
diff --git a/app/Http/Controllers/ProxyController.php b/app/Http/Controllers/ProxyController.php
index fb4ea04..3bb75c4 100644
--- a/app/Http/Controllers/ProxyController.php
+++ b/app/Http/Controllers/ProxyController.php
@@ -177,6 +177,7 @@ class ProxyController extends Controller
                     case 'image/x-icon':
                     case 'font/eot':
                     case 'image/vnd.microsoft.icon':
+                    case 'application/vnd.ms-fontobject':
                         # Nothing to do with Images: Just return them
                         break;
                     case 'text/css':
-- 
GitLab