]> git.mxchange.org Git - friendica.git/commitdiff
Platforms: only use and show trusted detections
authorMichael <heluecht@pirati.ca>
Sat, 5 Feb 2022 22:14:19 +0000 (22:14 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 5 Feb 2022 22:14:19 +0000 (22:14 +0000)
src/Model/GServer.php
src/Module/Admin/Federation.php

index 8cc1b5d016bfc8783e1601dac4926cdfe4155195..26c36d6a996db35d99e63d0fbec073314d5c16b7 100644 (file)
@@ -1566,6 +1566,10 @@ class GServer
                        return $serverdata;
                }
 
+               // Using only body information we cannot safely detect a lot of systems.
+               // So we define a list of platforms that we can detect safely.
+               $valid_platforms = ['friendica', 'friendika', 'hubzilla', 'misskey', 'peertube', 'wordpress', 'write.as'];
+
                $doc = new DOMDocument();
                @$doc->loadHTML($curlResult->getBody());
                $xpath = new DOMXPath($doc);
@@ -1594,6 +1598,10 @@ class GServer
                                }
                        }
 
+                       if (!in_array(strtolower($attr['content']), $valid_platforms)) {
+                               continue;
+                       }
+
                        if ($attr['name'] == 'description') {
                                $serverdata['info'] = $attr['content'];
                        }
@@ -1653,6 +1661,10 @@ class GServer
                                }
                        }
 
+                       if (!in_array(strtolower($attr['content']), $valid_platforms)) {
+                               continue;
+                       }
+
                        if ($attr['property'] == 'og:site_name') {
                                $serverdata['site_name'] = $attr['content'];
                        }
index 8f9f69de43bb9de2fd2aa96fbbd7e7124f43e0c5..0e315c37cdb9a9484dfa668b85b5295805e2a7f4 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Module\Admin;
 use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Model\GServer;
 use Friendica\Module\BaseAdmin;
 
 class Federation extends BaseAdmin
@@ -71,15 +72,15 @@ class Federation extends BaseAdmin
 
                $gservers = DBA::p("SELECT COUNT(*) AS `total`, SUM(`registered-users`) AS `users`, `platform`,
                        ANY_VALUE(`network`) AS `network`, MAX(`version`) AS `version`
-                       FROM `gserver` WHERE NOT `failed` GROUP BY `platform`");
+                       FROM `gserver` WHERE NOT `failed` AND `detection-method` != ? GROUP BY `platform`", GServer::DETECT_MANUAL);
                while ($gserver = DBA::fetch($gservers)) {
                        $total += $gserver['total'];
                        $users += $gserver['users'];
 
                        $versionCounts = [];
                        $versions = DBA::p("SELECT COUNT(*) AS `total`, `version` FROM `gserver`
-                               WHERE NOT `failed` AND `platform` = ?
-                               GROUP BY `version` ORDER BY `version`", $gserver['platform']);
+                               WHERE NOT `failed` AND `platform` = ? AND `detection-method` != ?
+                               GROUP BY `version` ORDER BY `version`", $gserver['platform'], GServer::DETECT_MANUAL);
                        while ($version = DBA::fetch($versions)) {
                                $version['version'] = str_replace(["\n", "\r", "\t"], " ", $version['version']);