mirror of
https://github.com/friendica/friendica
synced 2025-04-28 01:10:12 +00:00
New "relay" class / check of incoming popsts from DFRN and Diaspora
This commit is contained in:
parent
0b37f1d56c
commit
e26d73393e
4 changed files with 195 additions and 82 deletions
|
@ -2261,6 +2261,25 @@ class DFRN
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an incoming message is wanted
|
||||
*
|
||||
* @param array $item
|
||||
* @return boolean Is the message wanted?
|
||||
*/
|
||||
private static function isSolicitedMessage(array $item)
|
||||
{
|
||||
if (DBA::exists('contact', ["`nurl` = ? AND `uid` != ? AND `rel` IN (?, ?)",
|
||||
Strings::normaliseLink($item["author-link"]), 0, Contact::FRIEND, Contact::SHARING])) {
|
||||
Logger::info('Author has got followers - accepted', ['uri' => $item['uri'], 'author' => $item["author-link"]]);
|
||||
return true;
|
||||
}
|
||||
|
||||
$taglist = Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]);
|
||||
$tags = array_column($taglist, 'name');
|
||||
return Relay::isSolicitedPost($tags, $item['body'], $item['uri'], Protocol::DFRN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the entry elements which contain the items and comments
|
||||
*
|
||||
|
@ -2450,6 +2469,14 @@ class DFRN
|
|||
}
|
||||
}
|
||||
|
||||
// Check if the message is wanted
|
||||
if (($importer["importer_uid"] == 0) && ($item['uri'] == $item['parent-uri'])) {
|
||||
if (!self::isSolicitedMessage($item)) {
|
||||
DBA::delete('uri-id', ['uri' => $item['uri']]);
|
||||
return 403;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the type of the item (Top level post, reply or remote reply)
|
||||
$entrytype = self::getEntryType($importer, $item);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue