Ver Fonte

Update Autospam, add live filters to block remote activities based on comma separated keywords

Daniel Supernault há 1 ano atrás
pai
commit
40b45b2a11
3 ficheiros alterados com 38 adições e 0 exclusões
  1. 17 0
      app/Util/ActivityPub/Helpers.php
  2. 16 0
      app/Util/ActivityPub/Inbox.php
  3. 5 0
      config/autospam.php

+ 17 - 0
app/Util/ActivityPub/Helpers.php

@@ -315,6 +315,23 @@ class Helpers {
             return;
         }
 
+        if(config('autospam.live_filters.enabled')) {
+            $filters = config('autospam.live_filters.filters');
+            if(!empty($filters) && isset($res['content']) && !empty($res['content']) && strlen($filters) > 3) {
+                $filters = array_map('trim', explode(',', $filters));
+                $content = $res['content'];
+                foreach($filters as $filter) {
+                    $filter = trim($filter);
+                    if(!$filter || !strlen($filter)) {
+                        continue;
+                    }
+                    if(str_contains($content, $filter)) {
+                        return;
+                    }
+                }
+            }
+        }
+
         if(isset($res['object'])) {
             $activity = $res;
         } else {

+ 16 - 0
app/Util/ActivityPub/Inbox.php

@@ -197,6 +197,22 @@ class Inbox
     public function handleCreateActivity()
     {
         $activity = $this->payload['object'];
+        if(config('autospam.live_filters.enabled')) {
+            $filters = config('autospam.live_filters.filters');
+            if(!empty($filters) && isset($activity['content']) && !empty($activity['content']) && strlen($filters) > 3) {
+                $filters = array_map('trim', explode(',', $filters));
+                $content = $activity['content'];
+                foreach($filters as $filter) {
+                    $filter = trim($filter);
+                    if(!$filter || !strlen($filter)) {
+                        continue;
+                    }
+                    if(str_contains($content, $filter)) {
+                        return;
+                    }
+                }
+            }
+        }
         $actor = $this->actorFirstOrCreate($this->payload['actor']);
         if(!$actor || $actor->domain == null) {
             return;

+ 5 - 0
config/autospam.php

@@ -33,5 +33,10 @@ return [
     'nlp' => [
     	'enabled' => false,
     	'spam_sample_limit' => env('PF_AUTOSPAM_NLP_SPAM_SAMPLE_LIMIT', 200),
+    ],
+
+    'live_filters' => [
+        'enabled' => env('PF_AUTOSPAM_LIVE_FILTERS_ENABLED', false),
+        'filters' => env('PF_AUTOSPAM_LIVE_FILTERS_CSV', ''),
     ]
 ];