mirror of
https://github.com/friendica/friendica
synced 2025-04-22 18:30:13 +00:00
Issue 9305: Relay deny tags are added
This commit is contained in:
parent
e55696c716
commit
15e61e78ac
4 changed files with 40 additions and 19 deletions
|
@ -810,11 +810,6 @@ class Processor
|
|||
$scope = SR_SCOPE_NONE;
|
||||
}
|
||||
|
||||
if ($scope == SR_SCOPE_ALL) {
|
||||
Logger::info('Server accept all posts - accepted', ['id' => $id]);
|
||||
return true;
|
||||
}
|
||||
|
||||
$replyto = JsonLD::fetchElement($activity['as:object'], 'as:inReplyTo', '@id');
|
||||
if (Item::exists(['uri' => $replyto])) {
|
||||
Logger::info('Post is a reply to an existing post - accepted', ['id' => $id, 'replyto' => $replyto]);
|
||||
|
@ -839,11 +834,11 @@ class Processor
|
|||
|
||||
$systemTags = [];
|
||||
$userTags = [];
|
||||
$denyTags = [];
|
||||
|
||||
if ($scope == SR_SCOPE_TAGS) {
|
||||
$server_tags = $config->get('system', 'relay_server_tags', []);
|
||||
$server_tags = $config->get('system', 'relay_server_tags');
|
||||
$tagitems = explode(',', mb_strtolower($server_tags));
|
||||
|
||||
foreach ($tagitems AS $tag) {
|
||||
$systemTags[] = trim($tag, '# ');
|
||||
}
|
||||
|
@ -853,22 +848,43 @@ class Processor
|
|||
}
|
||||
}
|
||||
|
||||
$content = mb_strtolower(BBCode::toPlaintext(HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value')), false));
|
||||
|
||||
$tagList = array_unique(array_merge($systemTags, $userTags));
|
||||
foreach ($messageTags as $tag) {
|
||||
if (in_array($tag, $tagList)) {
|
||||
Logger::info('Subscribed hashtag found - accepted', ['id' => $id, 'hashtag' => $tag]);
|
||||
return true;
|
||||
}
|
||||
// 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
|
||||
if ((strpos($content, $tag) !== false) && preg_match('/(?<=[\s,.:;"\']|^)' . preg_quote($tag, '/') . '(?=[\s,.:;"\']|$)/', $content)) {
|
||||
Logger::info('Subscribed hashtag found in content - accepted', ['id' => $id, 'hashtag' => $tag]);
|
||||
return true;
|
||||
|
||||
$deny_tags = $config->get('system', 'relay_deny_tags');
|
||||
$tagitems = explode(',', mb_strtolower($deny_tags));
|
||||
foreach ($tagitems AS $tag) {
|
||||
$tag = trim($tag, '# ');
|
||||
$denyTags[] = $tag;
|
||||
}
|
||||
|
||||
if (!empty($tagList) || !empty($denyTags)) {
|
||||
$content = mb_strtolower(BBCode::toPlaintext(HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value')), false));
|
||||
|
||||
foreach ($messageTags as $tag) {
|
||||
if (in_array($tag, $denyTags)) {
|
||||
Logger::info('Unwanted hashtag found - rejected', ['id' => $id, 'hashtag' => $tag]);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (in_array($tag, $tagList)) {
|
||||
Logger::info('Subscribed hashtag found - accepted', ['id' => $id, 'hashtag' => $tag]);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 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
|
||||
if ((strpos($content, $tag) !== false) && preg_match('/(?<=[\s,.:;"\']|^)' . preg_quote($tag, '/') . '(?=[\s,.:;"\']|$)/', $content)) {
|
||||
Logger::info('Subscribed hashtag found in content - accepted', ['id' => $id, 'hashtag' => $tag]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($scope == SR_SCOPE_ALL) {
|
||||
Logger::info('Server accept all posts - accepted', ['id' => $id]);
|
||||
return true;
|
||||
}
|
||||
|
||||
Logger::info('No matching hashtags found - rejected', ['id' => $id]);
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue