mirror of
https://github.com/friendica/friendica
synced 2024-12-23 17:20:16 +00:00
commit
215c332a94
2 changed files with 19 additions and 12 deletions
|
@ -957,7 +957,7 @@ class Processor
|
||||||
}
|
}
|
||||||
|
|
||||||
$tags = array_column(Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]), 'name');
|
$tags = array_column(Tag::getByURIId($item['uri-id'], [Tag::HASHTAG]), 'name');
|
||||||
if (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, $activity['thread-completion'] ?? 0)) {
|
||||||
Logger::debug('Post is accepted because of the relay settings', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]);
|
Logger::debug('Post is accepted because of the relay settings', ['uri-id' => $item['uri-id'], 'guid' => $item['guid'], 'url' => $item['uri']]);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1185,7 +1185,7 @@ class Processor
|
||||||
if (!empty($item['parent-uri-id'])) {
|
if (!empty($item['parent-uri-id'])) {
|
||||||
if (Post::exists(['uri-id' => $item['parent-uri-id'], 'uid' => $receiver])) {
|
if (Post::exists(['uri-id' => $item['parent-uri-id'], 'uid' => $receiver])) {
|
||||||
$has_parents = true;
|
$has_parents = true;
|
||||||
} elseif ($add_parent && Post::exists(['uri-id' => $item['parent-uri'], 'uid' => 0])) {
|
} elseif ($add_parent && Post::exists(['uri-id' => $item['parent-uri-id'], 'uid' => 0])) {
|
||||||
$stored = Item::storeForUserByUriId($item['parent-uri-id'], $receiver, $fields);
|
$stored = Item::storeForUserByUriId($item['parent-uri-id'], $receiver, $fields);
|
||||||
$has_parents = (bool)$stored;
|
$has_parents = (bool)$stored;
|
||||||
if ($stored) {
|
if ($stored) {
|
||||||
|
@ -1598,7 +1598,7 @@ class Processor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Relay::isSolicitedPost($messageTags, $body, $authorid, $id, Protocol::ACTIVITYPUB);
|
return Relay::isSolicitedPost($messageTags, $body, $authorid, $id, Protocol::ACTIVITYPUB, $activity['thread-completion'] ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -56,7 +56,7 @@ class Relay
|
||||||
* @param string $url
|
* @param string $url
|
||||||
* @return boolean "true" is the post is wanted by the system
|
* @return boolean "true" is the post is wanted by the system
|
||||||
*/
|
*/
|
||||||
public static function isSolicitedPost(array $tags, string $body, int $authorid, string $url, string $network = ''): bool
|
public static function isSolicitedPost(array $tags, string $body, int $authorid, string $url, string $network = '', int $causerid = 0): bool
|
||||||
{
|
{
|
||||||
$config = DI::config();
|
$config = DI::config();
|
||||||
|
|
||||||
|
@ -77,6 +77,13 @@ class Relay
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($causerid)) {
|
||||||
|
$contact = Contact::getById($causerid, ['url']);
|
||||||
|
$causer = $contact['url'] ?? '';
|
||||||
|
} else {
|
||||||
|
$causer = '';
|
||||||
|
}
|
||||||
|
|
||||||
$body = ActivityPub\Processor::normalizeMentionLinks($body);
|
$body = ActivityPub\Processor::normalizeMentionLinks($body);
|
||||||
|
|
||||||
$systemTags = [];
|
$systemTags = [];
|
||||||
|
@ -110,19 +117,19 @@ class Relay
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
$tag = mb_strtolower($tag);
|
$tag = mb_strtolower($tag);
|
||||||
if (in_array($tag, $denyTags)) {
|
if (in_array($tag, $denyTags)) {
|
||||||
Logger::info('Unwanted hashtag found - rejected', ['hashtag' => $tag, 'network' => $network, 'url' => $url]);
|
Logger::info('Unwanted hashtag found - rejected', ['hashtag' => $tag, 'network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($tag, $tagList)) {
|
if (in_array($tag, $tagList)) {
|
||||||
Logger::info('Subscribed hashtag found - accepted', ['hashtag' => $tag, 'network' => $network, 'url' => $url]);
|
Logger::info('Subscribed hashtag found - accepted', ['hashtag' => $tag, 'network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We check with "strpos" for performance issues. Only when this is true, the regular expression check is used
|
// We check with "strpos" for performance issues. Only when this is true, the regular expression check is used
|
||||||
// RegExp is taken from here: https://medium.com/@shiba1014/regex-word-boundaries-with-unicode-207794f6e7ed
|
// RegExp is taken from here: https://medium.com/@shiba1014/regex-word-boundaries-with-unicode-207794f6e7ed
|
||||||
if ((strpos($content, $tag) !== false) && preg_match('/(?<=[\s,.:;"\']|^)' . preg_quote($tag, '/') . '(?=[\s,.:;"\']|$)/', $content)) {
|
if ((strpos($content, $tag) !== false) && preg_match('/(?<=[\s,.:;"\']|^)' . preg_quote($tag, '/') . '(?=[\s,.:;"\']|$)/', $content)) {
|
||||||
Logger::info('Subscribed hashtag found in content - accepted', ['hashtag' => $tag, 'network' => $network, 'url' => $url]);
|
Logger::info('Subscribed hashtag found in content - accepted', ['hashtag' => $tag, 'network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,24 +142,24 @@ class Relay
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::debug('Got languages', ['languages' => $languages, 'body' => $body]);
|
Logger::debug('Got languages', ['languages' => $languages, 'body' => $body, 'causer' => $causer]);
|
||||||
|
|
||||||
if (!empty($languages)) {
|
if (!empty($languages)) {
|
||||||
if (in_array($languages[0], $config->get('system', 'relay_deny_languages'))) {
|
if (in_array($languages[0], $config->get('system', 'relay_deny_languages'))) {
|
||||||
Logger::info('Unwanted language found - rejected', ['language' => $languages[0], 'network' => $network, 'url' => $url]);
|
Logger::info('Unwanted language found - rejected', ['language' => $languages[0], 'network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} elseif ($config->get('system', 'relay_deny_undetected_language')) {
|
} elseif ($config->get('system', 'relay_deny_undetected_language')) {
|
||||||
Logger::info('Undetected language found - rejected', ['body' => $body, 'network' => $network, 'url' => $url]);
|
Logger::info('Undetected language found - rejected', ['body' => $body, 'network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($scope == self::SCOPE_ALL) {
|
if ($scope == self::SCOPE_ALL) {
|
||||||
Logger::info('Server accept all posts - accepted', ['network' => $network, 'url' => $url]);
|
Logger::info('Server accept all posts - accepted', ['network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::info('No matching hashtags found - rejected', ['network' => $network, 'url' => $url]);
|
Logger::info('No matching hashtags found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue