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);
}
}
+ if (!in_array(strtolower($attr['content']), $valid_platforms)) {
+ continue;
+ }
+
if ($attr['name'] == 'description') {
$serverdata['info'] = $attr['content'];
}
}
}
+ if (!in_array(strtolower($attr['content']), $valid_platforms)) {
+ continue;
+ }
+
if ($attr['property'] == 'og:site_name') {
$serverdata['site_name'] = $attr['content'];
}
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\DI;
+use Friendica\Model\GServer;
use Friendica\Module\BaseAdmin;
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']);