diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 2e2d18b39..3778a0aa8 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -192,8 +192,8 @@ class Processor /** * Update an existing event * - * @param int $event_id - * @param array $activity + * @param int $event_id + * @param array $activity */ private static function updateEvent(int $event_id, array $activity) { @@ -593,7 +593,7 @@ class Processor Logger::debug('Message is private - accepted', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]); return true; } - + if (!empty($activity['from-relay'])) { // We check relay posts at another place. When it arrived here, the message is already checked. Logger::debug('Message is a relay post that is already checked - accepted', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]); @@ -616,7 +616,12 @@ class Processor } $tags = array_column(Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]), 'name'); - return Relay::isSolicitedPost($tags, $item['body'], $item['author-id'], $item['uri'], Protocol::ACTIVITYPUB); + if (Relay::isSolicitedPost($tags, $item['body'], $item['author-id'], $item['uri'], Protocol::ACTIVITYPUB)) { + Logger::debug('Post is accepted because of the relay settings', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]); + return true; + } else { + return false; + } } /** diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index a20d54fb6..db7eadac9 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1769,9 +1769,10 @@ class DFRN * Checks if an incoming message is wanted * * @param array $item + * @param array $imporer * @return boolean Is the message wanted? */ - private static function isSolicitedMessage(array $item) + private static function isSolicitedMessage(array $item, array $importer) { if (DBA::exists('contact', ["`nurl` = ? AND `uid` != ? AND `rel` IN (?, ?)", Strings::normaliseLink($item["author-link"]), 0, Contact::FRIEND, Contact::SHARING])) { @@ -1779,8 +1780,23 @@ class DFRN return true; } + if ($importer['importer_uid'] != 0) { + Logger::debug('Message is directed to a user - accepted', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri'], 'importer' => $importer['importer_uid']]); + return true; + } + + if ($item['uri'] != $item['thr-parent']) { + Logger::debug('Message is no parent - accepted', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]); + return true; + } + $tags = array_column(Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]), 'name'); - return Relay::isSolicitedPost($tags, $item['body'], $item['author-id'], $item['uri'], Protocol::DFRN); + if (Relay::isSolicitedPost($tags, $item['body'], $item['author-id'], $item['uri'], Protocol::DFRN)) { + Logger::debug('Post is accepted because of the relay settings', ['uri' => $item['uri'], 'author' => $item["author-link"]]); + return true; + } else { + return false; + } } /** @@ -1981,11 +1997,9 @@ class DFRN } // Check if the message is wanted - if (($importer['importer_uid'] == 0) && ($item['uri'] == $item['thr-parent'])) { - if (!self::isSolicitedMessage($item)) { - DBA::delete('item-uri', ['uri' => $item['uri']]); - return 403; - } + if (!self::isSolicitedMessage($item, $importer)) { + DBA::delete('item-uri', ['uri' => $item['uri']]); + return 403; } // Get the type of the item (Top level post, reply or remote reply) diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 7b2b03f55..7ca01f996 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -2639,7 +2639,12 @@ class Diaspora } $tags = array_column(Tag::getByURIId($uriid, [Tag::HASHTAG]), 'name'); - return Relay::isSolicitedPost($tags, $body, $contact['id'], $url, Protocol::DIASPORA); + if (Relay::isSolicitedPost($tags, $body, $contact['id'], $url, Protocol::DIASPORA)) { + Logger::debug('Post is accepted because of the relay settings', ['url' => $url, 'author' => $author]); + return true; + } else { + return false; + } } /** @@ -2669,7 +2674,7 @@ class Diaspora * @param SimpleXMLElement $data The message object * @param string $xml The original XML of the message * @param int $direction Indicates if the message had been fetched or pushed - * + * * @return int The message id of the newly created item * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException