Merge pull request #12700 from Quix0r/features/blocklist-gserver

Blocked domains flood gserver entries
This commit is contained in:
Hypolite Petovan 2023-01-20 22:39:12 -05:00 committed by GitHub
commit 0681f94334
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 5 deletions

View file

@ -455,22 +455,34 @@ class GServer
* Set failed server status
*
* @param string $url
* @return void
*/
public static function setFailureByUrl(string $url)
{
$gserver = DBA::selectFirst('gserver', [], ['nurl' => Strings::normaliseLink($url)]);
$nurl = Strings::normaliseLink($url);
$gserver = DBA::selectFirst('gserver', [], ['nurl' => $nurl]);
if (DBA::isResult($gserver)) {
$next_update = self::getNextUpdateDate(false, $gserver['created'], $gserver['last_contact']);
self::update(['url' => $url, 'failed' => true, 'blocked' => Network::isUrlBlocked($url), 'last_failure' => DateTimeFormat::utcNow(),
'next_contact' => $next_update, 'network' => Protocol::PHANTOM, 'detection-method' => null],
['nurl' => Strings::normaliseLink($url)]);
['nurl' => $nurl]);
Logger::info('Set failed status for existing server', ['url' => $url]);
if (self::isDefunct($gserver)) {
self::archiveContacts($gserver['id']);
}
return;
}
self::insert(['url' => $url, 'nurl' => Strings::normaliseLink($url),
if (Network::isUrlBlocked($url)) {
Logger::info('Server domain is blocked', ['url' => $url]);
return;
} elseif (Network::isUrlBlocked($nurl)) {
Logger::info('Server domain is blocked', ['nurl' => $nurl]);
return;
}
self::insert(['url' => $url, 'nurl' => $nurl,
'network' => Protocol::PHANTOM, 'created' => DateTimeFormat::utcNow(),
'failed' => true, 'last_failure' => DateTimeFormat::utcNow()]);
Logger::info('Set failed status for new server', ['url' => $url]);
@ -560,6 +572,9 @@ class GServer
self::detect($url, $network, $only_nodeinfo);
}
return false;
} elseif (Network::isUrlBlocked($url)) {
Logger::info('Server domain is blocked', ['url' => $url]);
return false;
}
$valid_url = Network::isUrlValid($url);

View file

@ -57,13 +57,13 @@ class UpdateServerPeers
$total = 0;
$added = 0;
foreach ($peers as $peer) {
if (Network::isUrlBlocked('http://' . $peer)) {
if (Network::isUrlBlocked('https://' . $peer)) {
// Ignore blocked systems as soon as possible in the loop to avoid being slowed down by tar pits
continue;
}
++$total;
if (DBA::exists('gserver', ['nurl' => Strings::normaliseLink('http://' . $peer)])) {
if (DBA::exists('gserver', ['nurl' => 'http://' . $peer])) {
// We already know this server
continue;
}