]> git.mxchange.org Git - friendica.git/commitdiff
Improved check for attached Fediverse posts
authorMichael <heluecht@pirati.ca>
Sat, 21 Dec 2024 15:25:24 +0000 (15:25 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 21 Dec 2024 15:25:24 +0000 (15:25 +0000)
src/Model/Post/Media.php
src/Util/Network.php

index fb363dd57a55e26fb383a7be695b730accd301ec..50710041c069f7cc824f2a13ba8f6bc18ebf4e97 100644 (file)
@@ -24,11 +24,13 @@ use Friendica\Network\HTTPClient\Client\HttpClientAccept;
 use Friendica\Network\HTTPClient\Client\HttpClientOptions;
 use Friendica\Network\HTTPClient\Client\HttpClientRequest;
 use Friendica\Protocol\ActivityPub;
+use Friendica\Protocol\ATProtocol;
 use Friendica\Util\Images;
 use Friendica\Util\Network;
 use Friendica\Util\ParseUrl;
 use Friendica\Util\Proxy;
 use Friendica\Util\Strings;
+use GuzzleHttp\Psr7\Uri;
 
 /**
  * Class Media
@@ -237,7 +239,7 @@ class Media
                        $media = self::addAccount($media);
                }
 
-               if (in_array($media['type'], [self::ACTIVITY, self::LD, self::JSON])) {
+               if (in_array($media['type'], [self::ACTIVITY, self::LD, self::JSON]) || self::isFederatedServer($media['url'])) {
                        $media = self::addActivity($media);
                }
 
@@ -248,6 +250,20 @@ class Media
                return $media;
        }
 
+       private static function isFederatedServer(string $url): bool
+       {
+               $baseurl = Network::getBaseUrl(new Uri($url));
+               if (empty($baseurl)) {
+                       return false;
+               }
+
+               if (Strings::compareLink($baseurl, ATProtocol::WEB)) {
+                       return true;
+               }
+
+               return DBA::exists('gserver', ['nurl' => Strings::normaliseLink($baseurl), 'network' => Protocol::FEDERATED]);
+       }
+
        private static function addPreviewData(array $media): array
        {
                if (!empty($media['preview-width']) && !empty($media['preview-height'])) {
index a7e2fa536a3b68eba81da920481ad9bc8f65e31a..60f4bbab238b188194e315e2923b08a5057b5242 100644 (file)
@@ -682,4 +682,19 @@ class Network
 
                return (string)Uri::fromParts($parts);
        }
+
+       /**
+        * Get base url without a path, fragment or query
+        *
+        * @param UriInterface $uri
+        * @return string baseurl
+        */
+       public static function getBaseUrl(UriInterface $uri): string
+       {
+               return $uri
+                       ->withUserInfo('')
+                       ->withQuery('')
+                       ->withFragment('')
+                       ->withPath('');
+       }
 }