Update autospam config, use config_cache

This commit is contained in:
Daniel Supernault 2024-03-12 06:20:26 -06:00
parent da0e0ffabf
commit a76cb5f4f8
No known key found for this signature in database
GPG key ID: 23740873EE6F76A1
3 changed files with 65 additions and 60 deletions

View file

@ -183,7 +183,7 @@ class StatusEntityLexer implements ShouldQueue
'photo:video:album', 'photo:video:album',
]; ];
if (config_cache('pixelfed.bouncer.enabled')) { if ((bool) config_cache('pixelfed.bouncer.enabled')) {
Bouncer::get($status); Bouncer::get($status);
} }

View file

@ -2,51 +2,56 @@
namespace App\Services; namespace App\Services;
use App\Util\Lexer\Classifier;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use App\Util\Lexer\Classifier;
class AutospamService class AutospamService
{ {
const CHCKD_CACHE_KEY = 'pf:services:autospam:nlp:checked'; const CHCKD_CACHE_KEY = 'pf:services:autospam:nlp:checked';
const MODEL_CACHE_KEY = 'pf:services:autospam:nlp:model-cache'; const MODEL_CACHE_KEY = 'pf:services:autospam:nlp:model-cache';
const MODEL_FILE_PATH = 'nlp/active-training-data.json'; const MODEL_FILE_PATH = 'nlp/active-training-data.json';
const MODEL_SPAM_PATH = 'nlp/spam.json'; const MODEL_SPAM_PATH = 'nlp/spam.json';
const MODEL_HAM_PATH = 'nlp/ham.json'; const MODEL_HAM_PATH = 'nlp/ham.json';
public static function check($text) public static function check($text)
{ {
if(!$text || strlen($text) == 0) { if (! $text || strlen($text) == 0) {
false;
} }
if(!self::active()) { if (! self::active()) {
return null; return null;
} }
$model = self::getCachedModel(); $model = self::getCachedModel();
$classifier = new Classifier; $classifier = new Classifier;
$classifier->import($model['documents'], $model['words']); $classifier->import($model['documents'], $model['words']);
return $classifier->most($text) === 'spam'; return $classifier->most($text) === 'spam';
} }
public static function eligible() public static function eligible()
{ {
return Cache::remember(self::CHCKD_CACHE_KEY, 86400, function() { return Cache::remember(self::CHCKD_CACHE_KEY, 86400, function () {
if(!config_cache('pixelfed.bouncer.enabled') || !config('autospam.enabled')) { if (! (bool) config_cache('pixelfed.bouncer.enabled') || ! (bool) config_cache('autospam.enabled')) {
return false; return false;
} }
if(!Storage::exists(self::MODEL_SPAM_PATH)) { if (! Storage::exists(self::MODEL_SPAM_PATH)) {
return false; return false;
} }
if(!Storage::exists(self::MODEL_HAM_PATH)) { if (! Storage::exists(self::MODEL_HAM_PATH)) {
return false; return false;
} }
if(!Storage::exists(self::MODEL_FILE_PATH)) { if (! Storage::exists(self::MODEL_FILE_PATH)) {
return false; return false;
} else { } else {
if(Storage::size(self::MODEL_FILE_PATH) < 1000) { if (Storage::size(self::MODEL_FILE_PATH) < 1000) {
return false; return false;
} }
} }
@ -62,13 +67,13 @@ class AutospamService
public static function getCachedModel() public static function getCachedModel()
{ {
if(!self::active()) { if (! self::active()) {
return null; return null;
} }
return Cache::remember(self::MODEL_CACHE_KEY, 86400, function() { return Cache::remember(self::MODEL_CACHE_KEY, 86400, function () {
$res = Storage::get(self::MODEL_FILE_PATH); $res = Storage::get(self::MODEL_FILE_PATH);
if(!$res || empty($res)) { if (! $res || empty($res)) {
return null; return null;
} }

View file

@ -815,7 +815,7 @@
<tr> <tr>
<td><span class="badge badge-primary">PIXELFED</span></td> <td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_BOUNCER_ENABLED</strong></td> <td><strong>PF_BOUNCER_ENABLED</strong></td>
<td><span>{{config_cache('pixelfed.bouncer.enabled') ? '✅ true' : '❌ false' }}</span></td> <td><span>{{(bool) config_cache('pixelfed.bouncer.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr> </tr>
<tr> <tr>
<td><span class="badge badge-primary">PIXELFED</span></td> <td><span class="badge badge-primary">PIXELFED</span></td>