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