X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FUpdateServerPeers.php;h=ca45344459a299663cd1f0a7ed0f092af3f533ec;hb=d53f46b9583737668a3314a22d1eeacb00a47db2;hp=ff0cdfa730d7446cb8dc491908a8b033ee6e137f;hpb=76ae210527487bea129411e8ed02ac4997d0d89b;p=friendica.git diff --git a/src/Worker/UpdateServerPeers.php b/src/Worker/UpdateServerPeers.php index ff0cdfa730..ca45344459 100644 --- a/src/Worker/UpdateServerPeers.php +++ b/src/Worker/UpdateServerPeers.php @@ -63,4 +63,41 @@ class UpdateServerPeers } Logger::info('Server peer update ended', ['total' => $total, 'added' => $added, 'url' => $url]); } + + /** + * Fetch server list from remote servers and adds them when they are new. + * + * @param string $poco URL to the POCO endpoint + */ + private static function fetchServerlist($poco) + { + $curlResult = DI::httpRequest()->get($poco . '/@server'); + if (!$curlResult->isSuccess()) { + Logger::info('Server is not reachable or does not offer the "poco" endpoint', ['poco' => $poco]); + return; + } + + $serverlist = json_decode($curlResult->getBody(), true); + if (!is_array($serverlist)) { + Logger::info('Server does not have any servers listed', ['poco' => $poco]); + return; + } + + Logger::info('PoCo Server update start', ['poco' => $poco]); + + $total = 0; + $added = 0; + foreach ($serverlist as $server) { + ++$total; + if (DBA::exists('gserver', ['nurl' => Strings::normaliseLink($server['url'])])) { + // We already know this server + continue; + } + // This endpoint doesn't offer the schema. So we assume that it is HTTPS. + Worker::add(PRIORITY_LOW, 'UpdateGServer', $server['url']); + ++$added; + } + + Logger::info('PoCo Server update ended', ['total' => $total, 'added' => $added, 'poco' => $poco]); + } }