]> git.mxchange.org Git - friendica.git/commitdiff
Check for filesize before trying to fetch site infos.
authorMichael Vogel <icarus@dabo.de>
Sun, 4 Jan 2015 19:04:59 +0000 (20:04 +0100)
committerMichael Vogel <icarus@dabo.de>
Sun, 4 Jan 2015 19:04:59 +0000 (20:04 +0100)
mod/parse_url.php

index 06e59b869157d2188413a088c63a6baea117add4..9df35c76125c652e8bfa9f34b6ca8f85da93a590 100644 (file)
@@ -73,7 +73,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
-       curl_setopt($ch, CURLOPT_NOBODY, 0);
+       curl_setopt($ch, CURLOPT_NOBODY, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
@@ -93,6 +93,28 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
                return($siteinfo);
        }
 
+       // if the file is too large then exit
+       if ($curl_info["download_content_length"] > 1000000)
+               return($siteinfo);
+
+       // if it isn't a HTML file then exit
+       if (($curl_info["content_type"] != "") AND !strstr(strtolower($curl_info["content_type"]),"html"))
+               return($siteinfo);
+
+       // Now fetch the body as well
+       $ch = curl_init();
+       curl_setopt($ch, CURLOPT_URL, $url);
+       curl_setopt($ch, CURLOPT_HEADER, 1);
+       curl_setopt($ch, CURLOPT_NOBODY, 0);
+       curl_setopt($ch, CURLOPT_TIMEOUT, 10);
+       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+       curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
+
+       $header = curl_exec($ch);
+       $curl_info = @curl_getinfo($ch);
+        $http_code = $curl_info['http_code'];
+       curl_close($ch);
+
        if ($do_oembed) {
                require_once("include/oembed.php");