]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Network.php
Merge pull request #5386 from annando/dfrn-unknown-owner
[friendica.git] / src / Util / Network.php
index 2bc2203dd27faec8c869a0681b9d2c768dac89c8..0e65145b78340caca37bc49f583a9d62c441df0e 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)
@@ -101,7 +103,7 @@ class Network
                $a = get_app();
 
                $parts = parse_url($url);
-               $path_parts = explode('/', $parts['path']);
+               $path_parts = explode('/', defaults($parts, 'path', ''));
                foreach ($path_parts as $part) {
                        if (strlen($part) <> mb_strlen($part)) {
                                $parts2[] = rawurlencode($part);
@@ -250,7 +252,7 @@ class Network
 
                        $newurl = $curl_info['redirect_url'];
 
-                       if (($new_location_info['path'] == '') && ($new_location_info['host'] != '')) {
+                       if (empty($new_location_info['path']) && !empty($new_location_info['host'])) {
                                $newurl = $new_location_info['scheme'] . '://' . $new_location_info['host'] . $old_location_info['path'];
                        }
 
@@ -410,7 +412,7 @@ class Network
                        $matches = [];
                        $new_location_info = @parse_url($curl_info['redirect_url']);
                        $old_location_info = @parse_url($curl_info['url']);
-       
+
                        preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
                        $newurl = trim(array_pop($matches));
 
@@ -495,7 +497,7 @@ class Network
                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) || filter_var($h, FILTER_VALIDATE_IP) )) {
+               if (($h) && dns_get_record($h, DNS_CNAME + DNS_MX)) {
                        return true;
                }
                return false;
@@ -654,7 +656,7 @@ class Network
        public static function stripTrackingQueryParams($url)
        {
                $urldata = parse_url($url);
-               if (is_string($urldata["query"])) {
+               if (!empty($urldata["query"])) {
                        $query = $urldata["query"];
                        parse_str($query, $querydata);
 
@@ -838,14 +840,35 @@ class Network
                        return "";
                }
 
+               if (empty($parts1["scheme"])) {
+                       $parts1["scheme"] = '';
+               }
+               if (empty($parts2["scheme"])) {
+                       $parts2["scheme"] = '';
+               }
+
                if ($parts1["scheme"] != $parts2["scheme"]) {
                        return "";
                }
 
+               if (empty($parts1["host"])) {
+                       $parts1["host"] = '';
+               }
+               if (empty($parts2["host"])) {
+                       $parts2["host"] = '';
+               }
+
                if ($parts1["host"] != $parts2["host"]) {
                        return "";
                }
 
+               if (empty($parts1["port"])) {
+                       $parts1["port"] = '';
+               }
+               if (empty($parts2["port"])) {
+                       $parts2["port"] = '';
+               }
+
                if ($parts1["port"] != $parts2["port"]) {
                        return "";
                }
@@ -856,14 +879,21 @@ class Network
                        $match .= ":".$parts1["port"];
                }
 
+               if (empty($parts1["path"])) {
+                       $parts1["path"] = '';
+               }
+               if (empty($parts2["path"])) {
+                       $parts2["path"] = '';
+               }
+
                $pathparts1 = explode("/", $parts1["path"]);
                $pathparts2 = explode("/", $parts2["path"]);
 
                $i = 0;
                $path = "";
                do {
-                       $path1 = $pathparts1[$i];
-                       $path2 = $pathparts2[$i];
+                       $path1 = defaults($pathparts1, $i, '');
+                       $path2 = defaults($pathparts2, $i, '');
 
                        if ($path1 == $path2) {
                                $path .= $path1."/";