From: Roland Häder <roland@mxchange.org>
Date: Fri, 20 Jan 2023 00:49:11 +0000 (+0100)
Subject: Continued:
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=a0704db43a29ca3392bfc8817d41e100994535d7;p=friendica.git

Continued:
- some trolls managed to flood gserver with useless URLs. They can be blocked
  by domain blocking them, but still it floods gserver table with dead entries
- this hack tries to change that so they won't enter gserver at all. Let's hope
  these trolls as `activitypub-trolls.cf` learn a lesson (and get adults soon)

Signed-off-by: Roland Häder <roland@mxchange.org>
---

diff --git a/src/Model/GServer.php b/src/Model/GServer.php
index 54e4d7220e..468978d10c 100644
--- a/src/Model/GServer.php
+++ b/src/Model/GServer.php
@@ -458,19 +458,30 @@ class GServer
 	 */
 	public static function setFailureByUrl(string $url)
 	{
-		$gserver = DBA::selectFirst('gserver', [], ['nurl' => Strings::normaliseLink($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;
+		}
+
+		$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),
+
+		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 +571,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);