]> git.mxchange.org Git - friendica.git/commitdiff
Improved AP distribution / Only process trusted content
authorMichael <heluecht@pirati.ca>
Sat, 6 Oct 2018 13:16:52 +0000 (13:16 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 6 Oct 2018 13:16:52 +0000 (13:16 +0000)
src/Protocol/ActivityPub/Receiver.php
src/Worker/Notifier.php

index 9ffd9c3bc466e1fcb1c77a4df675995c3499ad58..d3b38f9ee34068652f3f24d173eef5bbd663e8b1 100644 (file)
@@ -208,6 +208,7 @@ class Receiver
 
                if (!$trust_source) {
                        logger('No trust for activity type "' . $activity['type'] . '", so we quit now.', LOGGER_DEBUG);
+                       return;
                }
 
                switch ($activity['type']) {
index d40d9068fade2c5aef46e465dd80b6363a92a06a..b57c81db7729a124072c53f9958ff8ac6490096f 100644 (file)
@@ -20,6 +20,7 @@ use Friendica\Protocol\ActivityPub;
 use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\OStatus;
 use Friendica\Protocol\Salmon;
+use Friendica\Model\Conversation;
 
 require_once 'include/dba.php';
 require_once 'include/items.php';
@@ -514,6 +515,12 @@ class Notifier
 
                if ($target_item['origin']) {
                        $inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $uid);
+                       logger('Origin item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', LOGGER_DEBUG);
+               } elseif (!DBA::exists('conversation', ['item-uri' => $target_item['uri'], 'protocol' => Conversation::PARCEL_ACTIVITYPUB])) {
+                       logger('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' is no AP post. It will not be distributed.', LOGGER_DEBUG);
+                       return;
+               } else {
+                       logger('Remote item ' . $item_id . ' with URL ' . $target_item['uri'] . ' will be distributed.', LOGGER_DEBUG);
                }
 
                if ($parent['origin']) {
@@ -521,6 +528,11 @@ class Notifier
                        $inboxes = array_merge($inboxes, $parent_inboxes);
                }
 
+               if (empty($inboxes)) {
+                       logger('No inboxes found for item ' . $item_id . ' with URL ' . $target_item['uri'] . '. It will not be distributed.', LOGGER_DEBUG);
+                       return;
+               }
+
                // Fill the item cache
                ActivityPub\Transmitter::createCachedActivityFromItem($item_id);