Merge pull request #9631 from annando/issue-9630

Issue 9630: Prevent negative values for registered users
This commit is contained in:
Hypolite Petovan 2020-12-06 18:38:03 -05:00 committed by GitHub
commit 2821691c38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -448,7 +448,7 @@ class GServer
} }
if ($serverdata['network'] == Protocol::PHANTOM) { if ($serverdata['network'] == Protocol::PHANTOM) {
$serverdata['registered-users'] = $registeredUsers; $serverdata['registered-users'] = max($registeredUsers, 1);
$serverdata = self::detectNetworkViaContacts($url, $serverdata); $serverdata = self::detectNetworkViaContacts($url, $serverdata);
} }
@ -478,7 +478,7 @@ class GServer
if (!empty($serverdata['network']) && !empty($id) && ($serverdata['network'] != Protocol::PHANTOM)) { if (!empty($serverdata['network']) && !empty($id) && ($serverdata['network'] != Protocol::PHANTOM)) {
$apcontacts = DBA::count('apcontact', ['gsid' => $id]); $apcontacts = DBA::count('apcontact', ['gsid' => $id]);
$contacts = DBA::count('contact', ['uid' => 0, 'gsid' => $id]); $contacts = DBA::count('contact', ['uid' => 0, 'gsid' => $id]);
$max_users = max($apcontacts, $contacts, $registeredUsers); $max_users = max($apcontacts, $contacts, $registeredUsers, 1);
if ($max_users > $registeredUsers) { if ($max_users > $registeredUsers) {
Logger::info('Update registered users', ['id' => $id, 'url' => $serverdata['nurl'], 'registered-users' => $max_users]); Logger::info('Update registered users', ['id' => $id, 'url' => $serverdata['nurl'], 'registered-users' => $max_users]);
DBA::update('gserver', ['registered-users' => $max_users], ['id' => $id]); DBA::update('gserver', ['registered-users' => $max_users], ['id' => $id]);
@ -744,7 +744,7 @@ class GServer
} }
if (!empty($nodeinfo['usage']['users']['total'])) { if (!empty($nodeinfo['usage']['users']['total'])) {
$server['registered-users'] = $nodeinfo['usage']['users']['total']; $server['registered-users'] = max($nodeinfo['usage']['users']['total'], 1);
} }
if (!empty($nodeinfo['protocols']['inbound']) && is_array($nodeinfo['protocols']['inbound'])) { if (!empty($nodeinfo['protocols']['inbound']) && is_array($nodeinfo['protocols']['inbound'])) {
@ -820,7 +820,7 @@ class GServer
} }
if (!empty($nodeinfo['usage']['users']['total'])) { if (!empty($nodeinfo['usage']['users']['total'])) {
$server['registered-users'] = $nodeinfo['usage']['users']['total']; $server['registered-users'] = max($nodeinfo['usage']['users']['total'], 1);
} }
if (!empty($nodeinfo['protocols'])) { if (!empty($nodeinfo['protocols'])) {
@ -897,7 +897,7 @@ class GServer
} }
if (!empty($data['channels_total'])) { if (!empty($data['channels_total'])) {
$serverdata['registered-users'] = $data['channels_total']; $serverdata['registered-users'] = max($data['channels_total'], 1);
} }
if (!empty($data['register_policy'])) { if (!empty($data['register_policy'])) {
@ -1001,7 +1001,7 @@ class GServer
} }
} }
$serverdata['registered-users'] = max($serverdata['registered-users'], count($contacts)); $serverdata['registered-users'] = max($serverdata['registered-users'], count($contacts), 1);
return $serverdata; return $serverdata;
} }
@ -1032,7 +1032,7 @@ class GServer
if (!empty($data['totalResults'])) { if (!empty($data['totalResults'])) {
$registeredUsers = $serverdata['registered-users'] ?? 0; $registeredUsers = $serverdata['registered-users'] ?? 0;
$serverdata['registered-users'] = max($data['totalResults'], $registeredUsers); $serverdata['registered-users'] = max($data['totalResults'], $registeredUsers, 1);
$serverdata['directory-type'] = self::DT_POCO; $serverdata['directory-type'] = self::DT_POCO;
$serverdata['poco'] = $url . '/poco'; $serverdata['poco'] = $url . '/poco';
} }
@ -1146,7 +1146,7 @@ class GServer
} }
if (!empty($data['stats']['user_count'])) { if (!empty($data['stats']['user_count'])) {
$serverdata['registered-users'] = $data['stats']['user_count']; $serverdata['registered-users'] = max($data['stats']['user_count'], 1);
} }
if (!empty($serverdata['version']) && preg_match('/.*?\(compatible;\s(.*)\s(.*)\)/ism', $serverdata['version'], $matches)) { if (!empty($serverdata['version']) && preg_match('/.*?\(compatible;\s(.*)\s(.*)\)/ism', $serverdata['version'], $matches)) {