From: Andrew Dolgov Date: Thu, 29 Mar 2012 08:18:50 +0000 (+0400) Subject: add patch by gmargo to improve favicon detection by content X-Git-Tag: 1.5.11~21 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=0bf3e81dafb3880bbe5c012b31de138b8da12632;p=tt-rss.git add patch by gmargo to improve favicon detection by content --- diff --git a/include/functions.php b/include/functions.php index c19915bb..6bc3ca4f 100644 --- a/include/functions.php +++ b/include/functions.php @@ -374,7 +374,33 @@ $favicon_url = get_favicon_url($site_url); if ($favicon_url) { - $contents = fetch_file_contents($favicon_url, "image"); + // Limiting to "image" type misses those served with text/plain + $contents = fetch_file_contents($favicon_url); // , "image"); + + if ($contents) { + // Crude image type matching. + // Patterns gleaned from the file(1) source code. + if (preg_match('/^\x00\x00\x01\x00/', $contents)) { + // 0 string \000\000\001\000 MS Windows icon resource + //error_log("check_feed_favicon: favicon_url=$favicon_url isa MS Windows icon resource"); + } + elseif (preg_match('/^GIF8/', $contents)) { + // 0 string GIF8 GIF image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa GIF image"); + } + elseif (preg_match('/^\x89PNG\x0d\x0a\x1a\x0a/', $contents)) { + // 0 string \x89PNG\x0d\x0a\x1a\x0a PNG image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa PNG image"); + } + elseif (preg_match('/^\xff\xd8/', $contents)) { + // 0 beshort 0xffd8 JPEG image data + //error_log("check_feed_favicon: favicon_url=$favicon_url isa JPG image"); + } + else { + //error_log("check_feed_favicon: favicon_url=$favicon_url isa UNKNOWN type"); + $contents = ""; + } + } if ($contents) { $fp = @fopen($icon_file, "w");