X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FNetwork.php;h=0e65145b78340caca37bc49f583a9d62c441df0e;hb=19aecb952dcd627dfee9de8fff5a7ea35339ae78;hp=c1ea6e354765c7d2da1fffbaaf38e0c0aaca34eb;hpb=02c046e630153613d8318e7f09e72fc0708dc152;p=friendica.git diff --git a/src/Util/Network.php b/src/Util/Network.php index c1ea6e3547..0e65145b78 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -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)); @@ -492,7 +494,10 @@ class Network $h = substr($addr, strpos($addr, '@') + 1); - if (($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) { + 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)) { return true; } return false; @@ -651,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); @@ -835,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 ""; } @@ -853,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."/";