]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Relay.php
Merge pull request #11947 from annando/ap-quote
[friendica.git] / src / Protocol / Relay.php
index 7414c29315e5981c479804708fa5065a7158c0fd..ff827625073b831f64df2635d1c114b037889595 100644 (file)
@@ -29,6 +29,7 @@ use Friendica\DI;
 use Friendica\Model\APContact;
 use Friendica\Model\Contact;
 use Friendica\Model\GServer;
+use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\Search;
 use Friendica\Model\Tag;
@@ -76,6 +77,8 @@ class Relay
                        return false;
                }
 
+               $body = ActivityPub\Processor::normalizeMentionLinks($body);
+
                $systemTags = [];
                $userTags = [];
                $denyTags = [];
@@ -125,6 +128,25 @@ class Relay
                        }
                }
 
+               $languages = [];
+               foreach (Item::getLanguageArray($body, 10) as $language => $reliability) {
+                       if ($reliability > 0) {
+                               $languages[] = $language;
+                       }
+               }
+
+               Logger::debug('Got languages', ['languages' => $languages, 'body' => $body]);
+
+               if (!empty($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]);
+                               return false;
+                       }
+               } elseif ($config->get('system', 'relay_deny_undetected_language')) {
+                       Logger::info('Undetected language found - rejected', ['body' => $body, 'network' => $network, 'url' => $url]);
+                       return false;
+               }
+
                if ($scope == self::SCOPE_ALL) {
                        Logger::info('Server accept all posts - accepted', ['network' => $network, 'url' => $url]);
                        return true;