// 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'];
+ $valid_platforms = ['friendica', 'friendika', 'diaspora', 'mastodon', 'hubzilla', 'misskey', 'peertube', 'wordpress', 'write.as'];
$doc = new DOMDocument();
@$doc->loadHTML($curlResult->getBody());
}
}
- $platform = explode(' ', strtolower($attr['content']));
- if (!in_array($platform[0], $valid_platforms)) {
- continue;
- }
-
if ($attr['name'] == 'description') {
$serverdata['info'] = $attr['content'];
}
}
}
- $platform = explode(' ', strtolower($attr['content']));
- if (!in_array($platform[0], $valid_platforms)) {
- continue;
- }
-
if ($attr['property'] == 'og:site_name') {
$serverdata['site_name'] = $attr['content'];
}
}
}
- if (!empty($serverdata['network']) && ($serverdata['detection-method'] == self::DETECT_MANUAL)) {
+ if (!empty($serverdata['platform']) && in_array($serverdata['detection-method'], [self::DETECT_MANUAL, self::DETECT_BODY]) && !in_array($serverdata['platform'], $valid_platforms)) {
+ $serverdata['network'] = Protocol::PHANTOM;
+ $serverdata['version'] = '';
+ $serverdata['detection-method'] = self::DETECT_MANUAL;
+ } elseif (!empty($serverdata['network']) && ($serverdata['detection-method'] == self::DETECT_MANUAL)) {
$serverdata['detection-method'] = self::DETECT_BODY;
}