]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/UpdateServerPeers.php
spelling: effectiveness
[friendica.git] / src / Worker / UpdateServerPeers.php
index ca45344459a299663cd1f0a7ed0f092af3f533ec..4829b538cf18fcbb11fa477d08143e2cc8086705 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,17 +25,22 @@ use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Model\GServer;
+use Friendica\Network\HTTPClient\Client\HttpClientAccept;
+use Friendica\Util\Network;
 use Friendica\Util\Strings;
 
 class UpdateServerPeers
 {
        /**
         * Query the given server for their known peers
+        *
         * @param string $gserver Server URL
+        * @return void
         */
        public static function execute(string $url)
        {
-               $ret = DI::httpRequest()->get($url . '/api/v1/instance/peers');
+               $ret = DI::httpClient()->get($url . '/api/v1/instance/peers', HttpClientAccept::JSON);
                if (!$ret->isSuccess() || empty($ret->getBody())) {
                        Logger::info('Server is not reachable or does not offer the "peers" endpoint', ['url' => $url]);
                        return;
@@ -52,52 +57,21 @@ class UpdateServerPeers
                $total = 0;
                $added = 0;
                foreach ($peers as $peer) {
-                       ++$total;
-                       if (DBA::exists('gserver', ['nurl' => Strings::normaliseLink('http://' . $peer)])) {
-                               // We already know this server
+                       if (Network::isUrlBlocked('https://' . $peer)) {
+                               // Ignore blocked systems as soon as possible in the loop to avoid being slowed down by tar pits
                                continue;
                        }
-                       // This endpoint doesn't offer the schema. So we assume that it is HTTPS.
-                       Worker::add(PRIORITY_LOW, 'UpdateGServer', 'https://' . $peer);
-                       ++$added;
-               }
-               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'])])) {
+                       if (DBA::exists('gserver', ['nurl' => Strings::normaliseLink('http://' . $peer)])) {
                                // 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']);
+                       GServer::add('https://' . $peer);
                        ++$added;
+                       Worker::coolDown();
                }
-
-               Logger::info('PoCo Server update ended', ['total' => $total, 'added' => $added, 'poco' => $poco]);
+               Logger::info('Server peer update ended', ['total' => $total, 'added' => $added, 'url' => $url]);
        }
 }