Merge pull request #10395 from annando/statistics
Server statistics: New section for relays and nomads
This commit is contained in:
commit
cd8ce7eada
2 changed files with 83 additions and 1 deletions
|
@ -21,6 +21,7 @@ Authentication is the same as described in [Using the APIs](help/api#Authenticat
|
||||||
- [Husky](https://husky.fwgs.ru)
|
- [Husky](https://husky.fwgs.ru)
|
||||||
- [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
|
- [Roma](https://play.google.com/store/apps/details?id=tech.bigfig.roma)
|
||||||
- [Subway Tooter](https://github.com/tateisu/SubwayTooter)
|
- [Subway Tooter](https://github.com/tateisu/SubwayTooter)
|
||||||
|
- [Tooot](https://tooot.app/)
|
||||||
- [Tusky](https://tusky.app)
|
- [Tusky](https://tusky.app)
|
||||||
- [Twidere](https://github.com/TwidereProject/)
|
- [Twidere](https://github.com/TwidereProject/)
|
||||||
- [twitlatte](https://github.com/moko256/twitlatte)
|
- [twitlatte](https://github.com/moko256/twitlatte)
|
||||||
|
@ -33,6 +34,7 @@ Authentication is the same as described in [Using the APIs](help/api#Authenticat
|
||||||
- [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
|
- [Roma](https://apps.apple.com/de/app/roma-for-pleroma-and-mastodon/id1445328699)
|
||||||
- [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796) Uses an OAuth method where you have to manually copy and paste the provided code.
|
- [StarPterano](https://apps.apple.com/de/app/starpterano/id1436972796) Uses an OAuth method where you have to manually copy and paste the provided code.
|
||||||
- [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
|
- [Stella](https://apps.apple.com/us/app/stella-for-mastodon-twitter/id921372048?l=ms)
|
||||||
|
- [Tooot](https://tooot.app/)
|
||||||
- [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) entered hostname must match in upper/lower case. Currently crashes on "Status" type notifications.
|
- [Tootle](https://apps.apple.com/de/app/tootle-for-mastodon/id1236013466) entered hostname must match in upper/lower case. Currently crashes on "Status" type notifications.
|
||||||
|
|
||||||
#### Desktop
|
#### Desktop
|
||||||
|
|
|
@ -51,6 +51,8 @@ class Federation extends BaseAdmin
|
||||||
'socialhome' => ['name' => 'SocialHome', 'color' => '#52056b'], // lilac from the Django Image used at the Socialhome homepage
|
'socialhome' => ['name' => 'SocialHome', 'color' => '#52056b'], // lilac from the Django Image used at the Socialhome homepage
|
||||||
'wordpress' => ['name' => 'WordPress', 'color' => '#016087'], // Background color of the homepage
|
'wordpress' => ['name' => 'WordPress', 'color' => '#016087'], // Background color of the homepage
|
||||||
'writefreely' => ['name' => 'WriteFreely', 'color' => '#292929'], // Font color of the homepage
|
'writefreely' => ['name' => 'WriteFreely', 'color' => '#292929'], // Font color of the homepage
|
||||||
|
'mistpark' => ['name' => 'Nomad projects (Mistpark, Osada, Roadhouse, Zap)', 'color' => '#348a4a'], // Green like the Mistpark green
|
||||||
|
'relay' => ['name' => 'ActivityPub Relay', 'color' => '#888888'], // Grey like the second color of the ActivityPub logo
|
||||||
'other' => ['name' => DI::l10n()->t('Other'), 'color' => '#F1007E'], // ActivityPub main color
|
'other' => ['name' => DI::l10n()->t('Other'), 'color' => '#F1007E'], // ActivityPub main color
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -80,6 +82,10 @@ class Federation extends BaseAdmin
|
||||||
|
|
||||||
if (in_array($gserver['platform'], ['Red Matrix', 'redmatrix', 'red'])) {
|
if (in_array($gserver['platform'], ['Red Matrix', 'redmatrix', 'red'])) {
|
||||||
$version['version'] = 'Red ' . $version['version'];
|
$version['version'] = 'Red ' . $version['version'];
|
||||||
|
} elseif (in_array($gserver['platform'], ['osada', 'mistpark', 'roadhouse', 'zap'])) {
|
||||||
|
$version['version'] = $gserver['platform'] . ' ' . $version['version'];
|
||||||
|
} elseif (in_array($gserver['platform'], ['activityrelay', 'pub-relay', 'selective-relay', 'aoderelay'])) {
|
||||||
|
$version['version'] = $gserver['platform'] . '-' . $version['version'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$versionCounts[] = $version;
|
$versionCounts[] = $version;
|
||||||
|
@ -92,12 +98,16 @@ class Federation extends BaseAdmin
|
||||||
$platform = 'friendica';
|
$platform = 'friendica';
|
||||||
} elseif (in_array($platform, ['red matrix', 'redmatrix', 'red'])) {
|
} elseif (in_array($platform, ['red matrix', 'redmatrix', 'red'])) {
|
||||||
$platform = 'hubzilla';
|
$platform = 'hubzilla';
|
||||||
|
} elseif (in_array($platform, ['mistpark', 'osada', 'roadhouse', 'zap'])) {
|
||||||
|
$platform = 'mistpark';
|
||||||
} elseif(stristr($platform, 'pleroma')) {
|
} elseif(stristr($platform, 'pleroma')) {
|
||||||
$platform = 'pleroma';
|
$platform = 'pleroma';
|
||||||
} elseif(stristr($platform, 'statusnet')) {
|
} elseif(stristr($platform, 'statusnet')) {
|
||||||
$platform = 'gnusocial';
|
$platform = 'gnusocial';
|
||||||
} elseif(stristr($platform, 'wordpress')) {
|
} elseif(stristr($platform, 'wordpress')) {
|
||||||
$platform = 'wordpress';
|
$platform = 'wordpress';
|
||||||
|
} elseif (in_array($platform, ['activityrelay', 'pub-relay', 'selective-relay', 'aoderelay'])) {
|
||||||
|
$platform = 'relay';
|
||||||
} elseif (!in_array($platform, $platforms)) {
|
} elseif (!in_array($platform, $platforms)) {
|
||||||
$platform = 'other';
|
$platform = 'other';
|
||||||
}
|
}
|
||||||
|
@ -122,9 +132,17 @@ class Federation extends BaseAdmin
|
||||||
$versionCounts = self::reformaPleromaVersions($versionCounts);
|
$versionCounts = self::reformaPleromaVersions($versionCounts);
|
||||||
} elseif ($platform == 'diaspora') {
|
} elseif ($platform == 'diaspora') {
|
||||||
$versionCounts = self::reformaDiasporaVersions($versionCounts);
|
$versionCounts = self::reformaDiasporaVersions($versionCounts);
|
||||||
|
} elseif ($platform == 'relay') {
|
||||||
|
$versionCounts = self::reformatRelayVersions($versionCounts);
|
||||||
|
} elseif (in_array($platform, ['funkwhale', 'mastodon', 'mobilizon', 'misskey'])) {
|
||||||
|
$versionCounts = self::removeVersionSuffixes($versionCounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
$versionCounts = self::sortVersion($versionCounts);
|
if (!in_array($platform, ['other', 'relay', 'mistpark'])) {
|
||||||
|
$versionCounts = self::sortVersion($versionCounts);
|
||||||
|
} else {
|
||||||
|
ksort($versionCounts);
|
||||||
|
}
|
||||||
|
|
||||||
$gserver['platform'] = $systems[$platform]['name'];
|
$gserver['platform'] = $systems[$platform]['name'];
|
||||||
|
|
||||||
|
@ -250,6 +268,68 @@ class Federation extends BaseAdmin
|
||||||
return $versionCounts;
|
return $versionCounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up version numbers
|
||||||
|
*
|
||||||
|
* @param array $versionCounts list of version numbers
|
||||||
|
* @return array with cleaned version numbers
|
||||||
|
*/
|
||||||
|
private static function removeVersionSuffixes(array $versionCounts)
|
||||||
|
{
|
||||||
|
$compacted = [];
|
||||||
|
foreach ($versionCounts as $key => $value) {
|
||||||
|
$version = $versionCounts[$key]['version'];
|
||||||
|
|
||||||
|
foreach ([' ', '+', '-', '#', '_', '~'] as $delimiter) {
|
||||||
|
$parts = explode($delimiter, trim($version));
|
||||||
|
$version = array_shift($parts);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($compacted[$version])) {
|
||||||
|
$compacted[$version] = $versionCounts[$key]['total'];
|
||||||
|
} else {
|
||||||
|
$compacted[$version] += $versionCounts[$key]['total'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$versionCounts = [];
|
||||||
|
foreach ($compacted as $version => $pl_total) {
|
||||||
|
$versionCounts[] = ['version' => $version, 'total' => $pl_total];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $versionCounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up relay version numbers
|
||||||
|
*
|
||||||
|
* @param array $versionCounts list of version numbers
|
||||||
|
* @return array with cleaned version numbers
|
||||||
|
*/
|
||||||
|
private static function reformatRelayVersions(array $versionCounts)
|
||||||
|
{
|
||||||
|
$compacted = [];
|
||||||
|
foreach ($versionCounts as $key => $value) {
|
||||||
|
$version = $versionCounts[$key]['version'];
|
||||||
|
|
||||||
|
$parts = explode(' ', trim($version));
|
||||||
|
$version = array_shift($parts);
|
||||||
|
|
||||||
|
if (empty($compacted[$version])) {
|
||||||
|
$compacted[$version] = $versionCounts[$key]['total'];
|
||||||
|
} else {
|
||||||
|
$compacted[$version] += $versionCounts[$key]['total'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$versionCounts = [];
|
||||||
|
foreach ($compacted as $version => $pl_total) {
|
||||||
|
$versionCounts[] = ['version' => $version, 'total' => $pl_total];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $versionCounts;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reformat, sort and compact version numbers
|
* Reformat, sort and compact version numbers
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue