]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/GServer.php
Merge pull request #8210 from nupplaphil/task/mod_fsuggest
[friendica.git] / src / Model / GServer.php
index a85ab2408d230d325c96140613c92cc5ddfbd275..d113f0ace472b594ca114506bf388a809c470f03 100644 (file)
@@ -8,10 +8,10 @@ namespace Friendica\Model;
 
 use DOMDocument;
 use DOMXPath;
-use Friendica\Core\Config;
 use Friendica\Core\Protocol;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Module\Register;
 use Friendica\Network\CurlResult;
 use Friendica\Util\Network;
@@ -192,7 +192,7 @@ class GServer
                }
 
                // When a nodeinfo is present, we don't need to dig further
-               $xrd_timeout = Config::get('system', 'xrd_timeout');
+               $xrd_timeout = DI::config()->get('system', 'xrd_timeout');
                $curlResult = Network::curl($url . '/.well-known/nodeinfo', false, ['timeout' => $xrd_timeout]);
                if ($curlResult->isTimeout()) {
                        DBA::update('gserver', ['last_failure' => DateTimeFormat::utcNow()], ['nurl' => Strings::normaliseLink($url)]);
@@ -726,7 +726,7 @@ class GServer
         */
        private static function validHostMeta(string $url)
        {
-               $xrd_timeout = Config::get('system', 'xrd_timeout');
+               $xrd_timeout = DI::config()->get('system', 'xrd_timeout');
                $curlResult = Network::curl($url . '/.well-known/host-meta', false, ['timeout' => $xrd_timeout]);
                if (!$curlResult->isSuccess()) {
                        return false;
@@ -931,6 +931,11 @@ class GServer
                        $serverdata['site_name'] = $data['title'];
                }
 
+               if (!empty($data['title']) && empty($serverdata['platform']) && empty($serverdata['network'])) {
+                       $serverdata['platform'] = 'mastodon';
+                       $serverdata['network'] = Protocol::ACTIVITYPUB;
+               }
+
                if (!empty($data['description'])) {
                        $serverdata['info'] = trim($data['description']);
                }
@@ -944,9 +949,14 @@ class GServer
                        $serverdata['version'] = $matches[2];
                }
 
-               if (!empty($serverdata['version']) && strstr($serverdata['version'], 'Pleroma')) {
+               if (!empty($serverdata['version']) && strstr(strtolower($serverdata['version']), 'pleroma')) {
+                       $serverdata['platform'] = 'pleroma';
+                       $serverdata['version'] = trim(str_ireplace('pleroma', '', $serverdata['version']));
+               }
+
+               if (!empty($serverdata['platform']) && strstr($serverdata['platform'], 'pleroma')) {
+                       $serverdata['version'] = trim(str_ireplace('pleroma', '', $serverdata['platform']));
                        $serverdata['platform'] = 'pleroma';
-                       $serverdata['version'] = trim(str_replace('Pleroma', '', $serverdata['version']));
                }
 
                return $serverdata;
@@ -1203,10 +1213,8 @@ class GServer
                                        $serverdata['network'] = Protocol::ACTIVITYPUB;
                                }
                        }
-
-                       if ($attr['name'] == 'generator') {
+                       if (($attr['name'] == 'generator') && (empty($serverdata['platform']) || (substr(strtolower($attr['content']), 0, 9) == 'wordpress'))) {
                                $serverdata['platform'] = strtolower($attr['content']);
-
                                $version_part = explode(' ', $attr['content']);
 
                                if (count($version_part) == 2) {
@@ -1340,7 +1348,7 @@ class GServer
 
                $no_of_queries = 5;
 
-               $requery_days = intval(Config::get('system', 'poco_requery_days'));
+               $requery_days = intval(DI::config()->get('system', 'poco_requery_days'));
 
                if ($requery_days == 0) {
                        $requery_days = 7;
@@ -1380,7 +1388,7 @@ class GServer
         */
        private static function discoverFederation()
        {
-               $last = Config::get('poco', 'last_federation_discovery');
+               $last = DI::config()->get('poco', 'last_federation_discovery');
 
                if ($last) {
                        $next = $last + (24 * 60 * 60);
@@ -1404,7 +1412,7 @@ class GServer
                }
 
                // Disvover Mastodon servers
-               $accesstoken = Config::get('system', 'instances_social_key');
+               $accesstoken = DI::config()->get('system', 'instances_social_key');
 
                if (!empty($accesstoken)) {
                        $api = 'https://instances.social/api/1.0/instances/list?count=0';
@@ -1421,6 +1429,6 @@ class GServer
                        }
                }
 
-               Config::set('poco', 'last_federation_discovery', time());
+               DI::config()->set('poco', 'last_federation_discovery', time());
        }
 }