]> git.mxchange.org Git - friendica.git/blobdiff - src/Network/Probe.php
Merge remote-tracking branch 'upstream/develop' into item-view
[friendica.git] / src / Network / Probe.php
index 6de749fa846620f9487d5bbaa512ea5fc40b1341..f4ca0398a85f2f972c231ca419137dced9b325c7 100644 (file)
@@ -93,15 +93,17 @@ class Probe
                                "following", "followers", "inbox", "outbox", "sharedinbox",
                                "priority", "network", "pubkey", "manually-approve", "baseurl", "gsid"];
 
+               $numeric_fields = ["gsid", "hide", "account-type", "manually-approve"];
+
                $newdata = [];
                foreach ($fields as $field) {
                        if (isset($data[$field])) {
-                               if (in_array($field, ["gsid", "hide", "account-type", "manually-approve"])) {
+                               if (in_array($field, $numeric_fields)) {
                                        $newdata[$field] = (int)$data[$field];
                                } else {        
                                        $newdata[$field] = $data[$field];
                                }
-                       } elseif ($field != "gsid") {
+                       } elseif (!in_array($field, $numeric_fields)) {
                                $newdata[$field] = "";
                        } else {
                                $newdata[$field] = null;
@@ -167,7 +169,7 @@ class Probe
                Logger::info('Probing', ['host' => $host, 'ssl_url' => $ssl_url, 'url' => $url, 'callstack' => System::callstack(20)]);
                $xrd = null;
 
-               $curlResult = DI::httpRequest()->get($ssl_url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
+               $curlResult = DI::httpRequest()->get($ssl_url, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
                $ssl_connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
                if ($curlResult->isSuccess()) {
                        $xml = $curlResult->getBody();
@@ -184,7 +186,7 @@ class Probe
                }
 
                if (!is_object($xrd) && !empty($url)) {
-                       $curlResult = DI::httpRequest()->get($url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
+                       $curlResult = DI::httpRequest()->get($url, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
                        $connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
                        if ($curlResult->isTimeout()) {
                                Logger::info('Probing timeout', ['url' => $url]);
@@ -256,7 +258,7 @@ class Probe
         * @return string profile link
         * @throws HTTPException\InternalServerErrorException
         */
-       public static function webfingerDfrn($webbie, &$hcard_url)
+       public static function webfingerDfrn(string $webbie, string &$hcard_url)
        {
                $profile_link = '';
 
@@ -939,7 +941,7 @@ class Probe
        {
                $xrd_timeout = DI::config()->get('system', 'xrd_timeout', 20);
 
-               $curlResult = DI::httpRequest()->get($url, false, ['timeout' => $xrd_timeout, 'accept_content' => $type]);
+               $curlResult = DI::httpRequest()->get($url, ['timeout' => $xrd_timeout, 'accept_content' => $type]);
                if ($curlResult->isTimeout()) {
                        self::$istimeout = true;
                        return [];
@@ -1799,26 +1801,28 @@ class Probe
 
                $hrefParts = parse_url($href);
 
-               // Root path case (/path) including relative scheme case (//host/path)
-               if ($hrefParts['path'] && $hrefParts['path'][0] == '/') {
-                       $path = $hrefParts['path'];
-               } else {
-                       $path = $path . '/' . $hrefParts['path'];
-
-                       // Resolve arbitrary relative path
-                       // Lifted from https://www.php.net/manual/en/function.realpath.php#84012
-                       $parts = array_filter(explode('/', $path), 'strlen');
-                       $absolutes = array();
-                       foreach ($parts as $part) {
-                               if ('.' == $part) continue;
-                               if ('..' == $part) {
-                                       array_pop($absolutes);
-                               } else {
-                                       $absolutes[] = $part;
+               if (!empty($hrefParts['path'])) {
+                       // Root path case (/path) including relative scheme case (//host/path)
+                       if ($hrefParts['path'] && $hrefParts['path'][0] == '/') {
+                               $path = $hrefParts['path'];
+                       } else {
+                               $path = $path . '/' . $hrefParts['path'];
+
+                               // Resolve arbitrary relative path
+                               // Lifted from https://www.php.net/manual/en/function.realpath.php#84012
+                               $parts = array_filter(explode('/', $path), 'strlen');
+                               $absolutes = array();
+                               foreach ($parts as $part) {
+                                       if ('.' == $part) continue;
+                                       if ('..' == $part) {
+                                               array_pop($absolutes);
+                                       } else {
+                                               $absolutes[] = $part;
+                                       }
                                }
-                       }
 
-                       $path = '/' . implode('/', $absolutes);
+                               $path = '/' . implode('/', $absolutes);
+                       }
                }
 
                // Relative scheme case (//host/path)