]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Network.php
Merge pull request #5833 from MrPetovan/develop
[friendica.git] / src / Util / Network.php
index 49c137e6cbf261eaa9e8dc7d9bf01b639ff8dc20..0de96618597cae89b0408677329d18c8720729b1 100644 (file)
@@ -18,12 +18,13 @@ use DomXPath;
 class Network
 {
        /**
-        * @brief Curl wrapper
+        * Curl wrapper
         *
         * If binary flag is true, return binary results.
         * Set the cookiejar argument to a string (e.g. "/tmp/friendica-cookies.txt")
         * to preserve cookies from one request to the next.
         *
+        * @brief Curl wrapper
         * @param string  $url            URL to fetch
         * @param boolean $binary         default false
         *                                TRUE if asked to return binary results (file download)
@@ -42,11 +43,12 @@ class Network
        }
 
        /**
-        * @brief Curl wrapper with array of return values.
+        * Curl wrapper with array of return values.
         *
         * Inner workings and parameters are the same as @ref fetchUrl but returns an array with
         * all the information collected during the fetch.
         *
+        * @brief Curl wrapper with array of return values.
         * @param string  $url            URL to fetch
         * @param boolean $binary         default false
         *                                TRUE if asked to return binary results (file download)
@@ -218,7 +220,7 @@ class Network
                }
 
                if (curl_errno($ch) !== CURLE_OK) {
-                       logger('error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL);
+                       logger('error fetching ' . $url . ': ' . curl_error($ch), LOGGER_INFO);
                }
 
                $ret['errno'] = curl_errno($ch);
@@ -492,10 +494,11 @@ class Network
 
                $h = substr($addr, strpos($addr, '@') + 1);
 
-               if (($h) && (dns_get_record($h, DNS_A + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
+               // Concerning the @ see here: https://stackoverflow.com/questions/36280957/dns-get-record-a-temporary-server-error-occurred
+               if ($h && (@dns_get_record($h, DNS_A + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
                        return true;
                }
-               if (($h) && dns_get_record($h, DNS_CNAME + DNS_MX)) {
+               if ($h && @dns_get_record($h, DNS_CNAME + DNS_MX)) {
                        return true;
                }
                return false;
@@ -557,21 +560,18 @@ class Network
         */
        public static function isUrlBlocked($url)
        {
-               $h = @parse_url($url);
-
-               if (! $h) {
-                       return true;
+               $host = @parse_url($url, PHP_URL_HOST);
+               if (!$host) {
+                       return false;
                }
 
                $domain_blocklist = Config::get('system', 'blocklist', []);
-               if (! $domain_blocklist) {
+               if (!$domain_blocklist) {
                        return false;
                }
 
-               $host = strtolower($h['host']);
-
                foreach ($domain_blocklist as $domain_block) {
-                       if (strtolower($domain_block['domain']) == $host) {
+                       if (strcasecmp($domain_block['domain'], $host) === 0) {
                                return true;
                        }
                }
@@ -716,7 +716,7 @@ class Network
                $url = self::stripTrackingQueryParams($url);
 
                if ($depth > 10) {
-                       return($url);
+                       return $url;
                }
 
                $url = trim($url, "'");
@@ -739,16 +739,14 @@ class Network
                $a->save_timestamp($stamp1, "network");
 
                if ($http_code == 0) {
-                       return($url);
+                       return $url;
                }
 
-               if ((($curl_info['http_code'] == "301") || ($curl_info['http_code'] == "302"))
-                       && (($curl_info['redirect_url'] != "") || ($curl_info['location'] != ""))
-               ) {
-                       if ($curl_info['redirect_url'] != "") {
-                               return(self::finalUrl($curl_info['redirect_url'], ++$depth, $fetchbody));
-                       } else {
-                               return(self::finalUrl($curl_info['location'], ++$depth, $fetchbody));
+               if (in_array($http_code, ['301', '302'])) {
+                       if (!empty($curl_info['redirect_url'])) {
+                               return self::finalUrl($curl_info['redirect_url'], ++$depth, $fetchbody);
+                       } elseif (!empty($curl_info['location'])) {
+                               return self::finalUrl($curl_info['location'], ++$depth, $fetchbody);
                        }
                }
 
@@ -759,12 +757,12 @@ class Network
 
                // if the file is too large then exit
                if ($curl_info["download_content_length"] > 1000000) {
-                       return($url);
+                       return $url;
                }
 
                // if it isn't a HTML file then exit
-               if (($curl_info["content_type"] != "") && !strstr(strtolower($curl_info["content_type"]), "html")) {
-                       return($url);
+               if (!empty($curl_info["content_type"]) && !strstr(strtolower($curl_info["content_type"]), "html")) {
+                       return $url;
                }
 
                $stamp1 = microtime(true);
@@ -783,7 +781,7 @@ class Network
                $a->save_timestamp($stamp1, "network");
 
                if (trim($body) == "") {
-                       return($url);
+                       return $url;
                }
 
                // Check for redirect in meta elements
@@ -806,7 +804,7 @@ class Network
                                $pathinfo = explode(";", $path);
                                foreach ($pathinfo as $value) {
                                        if (substr(strtolower($value), 0, 4) == "url=") {
-                                               return(self::finalUrl(substr($value, 4), ++$depth));
+                                               return self::finalUrl(substr($value, 4), ++$depth);
                                        }
                                }
                        }