X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2FProbe.php;h=cfd03684397c9afb023dfdd55c139696c65310a9;hb=f3cd973cbe9d41be6e5bb7c36dad96c716f2f4b3;hp=943d53ff66b168f9ce532ac50d52c7ab3a83b10b;hpb=4285f4643f7da87dc25280e04b90870efbaa136e;p=friendica.git diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 943d53ff66..cfd0368439 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -91,17 +91,19 @@ class Probe "community", "keywords", "location", "about", "hide", "batch", "notify", "poll", "request", "confirm", "subscribe", "poco", "following", "followers", "inbox", "outbox", "sharedinbox", - "priority", "network", "pubkey", "baseurl", "gsid"]; + "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"])) { + 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; @@ -421,16 +423,11 @@ class Probe */ private static function getHideStatus($url) { - $curlResult = DI::httpRequest()->get($url); + $curlResult = DI::httpRequest()->get($url, false, ['content_length' => 1000000]); if (!$curlResult->isSuccess()) { return false; } - // If the file is too large then exit - if (($curlResult->getInfo()['download_content_length'] ?? 0) > 1000000) { - return false; - } - // If it isn't a HTML file then exit if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) { return false; @@ -712,7 +709,14 @@ class Probe Logger::info('Probing start', ['uri' => $uri]); - $data = self::getWebfingerArray($uri); + if (!empty($ap_profile['addr']) && ($ap_profile['addr'] != $uri)) { + $data = self::getWebfingerArray($ap_profile['addr']); + } + + if (empty($data)) { + $data = self::getWebfingerArray($uri); + } + if (empty($data)) { if (!empty($parts['scheme'])) { return self::feed($uri); @@ -1447,6 +1451,7 @@ class Probe && !empty($hcard_url) ) { $data["network"] = Protocol::DIASPORA; + $data["manually-approve"] = false; // The Diaspora handle must always be lowercase if (!empty($data["addr"])) { @@ -1537,6 +1542,7 @@ class Probe && isset($data["url"]) ) { $data["network"] = Protocol::OSTATUS; + $data["manually-approve"] = false; } else { return $short ? false : []; } @@ -2211,7 +2217,8 @@ class Probe 'following' => $approfile['following'], 'followers' => $approfile['followers'], 'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'], 'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN, - 'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid']]; + 'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid'], + 'manually-approve' => in_array($profile['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])]; return self::rearrangeData($data); } }