X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FGServer.php;h=c0e4899923d86cb375109e9b2240675d166cc5eb;hb=624e4c192c7f837ac0587a50da6e1409081eb519;hp=dd38367c67f5a9d4e27ce930b54d131c28519785;hpb=e299fc67c8809ecf1018e6680a3a5284bcf7d8d9;p=friendica.git diff --git a/src/Model/GServer.php b/src/Model/GServer.php index dd38367c67..c0e4899923 100644 --- a/src/Model/GServer.php +++ b/src/Model/GServer.php @@ -438,7 +438,7 @@ class GServer } } - if (empty($serverdata['network']) || ($serverdata['network'] == Protocol::ACTIVITYPUB)) { + if (empty($nodeinfo['network']) && (empty($serverdata['network']) || ($serverdata['network'] == Protocol::ACTIVITYPUB))) { $serverdata = self::detectMastodonAlikes($url, $serverdata); } @@ -478,7 +478,7 @@ class GServer $serverdata = self::detectNextcloud($url, $serverdata); } - if (empty($serverdata['network'])) { + if (empty($nodeinfo['network']) && empty($serverdata['network'])) { $serverdata = self::detectGNUSocial($url, $serverdata); } @@ -493,9 +493,13 @@ class GServer // Detect the directory type $serverdata['directory-type'] = self::DT_NONE; - $serverdata = self::checkPoCo($url, $serverdata); + $serverdata = self::checkMastodonDirectory($url, $serverdata); + if ($serverdata['directory-type'] == self::DT_NONE) { + $serverdata = self::checkPoCo($url, $serverdata); + } + // We can't detect the network type. Possibly it is some system that we don't know yet if (empty($serverdata['network'])) { $serverdata['network'] = Protocol::PHANTOM; @@ -930,6 +934,11 @@ class GServer // Version numbers on Nodeinfo are presented with additional info, e.g.: // 0.6.3.0-p1702cc1c, 0.6.99.0-p1b9ab160 or 3.4.3-2-1191. $server['version'] = preg_replace('=(.+)-(.{4,})=ism', '$1', $server['version']); + + // qoto advertises itself as Mastodon + if (($server['platform'] == 'mastodon') && substr($nodeinfo['software']['version'], -5) == '-qoto') { + $server['platform'] = 'qoto'; + } } } @@ -1350,7 +1359,7 @@ class GServer $contact = Contact::selectFirst(['id'], ['uid' => 0, 'failed' => false, 'gsid' => $gserver['id']]); // Via probing we can be sure that the server is responding - if (Contact::updateFromProbe($contact['id'])) { + if (!empty($contact['id']) && Contact::updateFromProbe($contact['id'])) { $contact = Contact::selectFirst(['network', 'failed'], ['id' => $contact['id']]); if (!$contact['failed'] && in_array($contact['network'], Protocol::FEDERATED)) { $serverdata['network'] = $contact['network'];