Skip to content

Commit

Permalink
Update autospam config, use config_cache
Browse files Browse the repository at this point in the history
  • Loading branch information
dansup committed Mar 12, 2024
1 parent da0e0ff commit a76cb5f
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 70 deletions.
2 changes: 1 addition & 1 deletion app/Jobs/StatusPipeline/StatusEntityLexer.php
Expand Up @@ -183,7 +183,7 @@ public function deliver()
'photo:video:album',
];

if (config_cache('pixelfed.bouncer.enabled')) {
if ((bool) config_cache('pixelfed.bouncer.enabled')) {
Bouncer::get($status);
}

Expand Down
141 changes: 73 additions & 68 deletions app/Services/AutospamService.php
Expand Up @@ -2,77 +2,82 @@

namespace App\Services;

use App\Util\Lexer\Classifier;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Storage;
use App\Util\Lexer\Classifier;

class AutospamService
{
const CHCKD_CACHE_KEY = 'pf:services:autospam:nlp:checked';
const MODEL_CACHE_KEY = 'pf:services:autospam:nlp:model-cache';
const MODEL_FILE_PATH = 'nlp/active-training-data.json';
const MODEL_SPAM_PATH = 'nlp/spam.json';
const MODEL_HAM_PATH = 'nlp/ham.json';

public static function check($text)
{
if(!$text || strlen($text) == 0) {
false;
}
if(!self::active()) {
return null;
}
$model = self::getCachedModel();
$classifier = new Classifier;
$classifier->import($model['documents'], $model['words']);
return $classifier->most($text) === 'spam';
}

public static function eligible()
{
return Cache::remember(self::CHCKD_CACHE_KEY, 86400, function() {
if(!config_cache('pixelfed.bouncer.enabled') || !config('autospam.enabled')) {
return false;
}

if(!Storage::exists(self::MODEL_SPAM_PATH)) {
return false;
}

if(!Storage::exists(self::MODEL_HAM_PATH)) {
return false;
}

if(!Storage::exists(self::MODEL_FILE_PATH)) {
return false;
} else {
if(Storage::size(self::MODEL_FILE_PATH) < 1000) {
return false;
}
}

return true;
});
}

public static function active()
{
return config_cache('autospam.nlp.enabled') && self::eligible();
}

public static function getCachedModel()
{
if(!self::active()) {
return null;
}

return Cache::remember(self::MODEL_CACHE_KEY, 86400, function() {
$res = Storage::get(self::MODEL_FILE_PATH);
if(!$res || empty($res)) {
return null;
}

return json_decode($res, true);
});
}
const CHCKD_CACHE_KEY = 'pf:services:autospam:nlp:checked';

const MODEL_CACHE_KEY = 'pf:services:autospam:nlp:model-cache';

const MODEL_FILE_PATH = 'nlp/active-training-data.json';

const MODEL_SPAM_PATH = 'nlp/spam.json';

const MODEL_HAM_PATH = 'nlp/ham.json';

public static function check($text)
{
if (! $text || strlen($text) == 0) {

}
if (! self::active()) {
return null;
}
$model = self::getCachedModel();
$classifier = new Classifier;
$classifier->import($model['documents'], $model['words']);

return $classifier->most($text) === 'spam';
}

public static function eligible()
{
return Cache::remember(self::CHCKD_CACHE_KEY, 86400, function () {
if (! (bool) config_cache('pixelfed.bouncer.enabled') || ! (bool) config_cache('autospam.enabled')) {
return false;
}

if (! Storage::exists(self::MODEL_SPAM_PATH)) {
return false;
}

if (! Storage::exists(self::MODEL_HAM_PATH)) {
return false;
}

if (! Storage::exists(self::MODEL_FILE_PATH)) {
return false;
} else {
if (Storage::size(self::MODEL_FILE_PATH) < 1000) {
return false;
}
}

return true;
});
}

public static function active()
{
return config_cache('autospam.nlp.enabled') && self::eligible();
}

public static function getCachedModel()
{
if (! self::active()) {
return null;
}

return Cache::remember(self::MODEL_CACHE_KEY, 86400, function () {
$res = Storage::get(self::MODEL_FILE_PATH);
if (! $res || empty($res)) {
return null;
}

return json_decode($res, true);
});
}
}
2 changes: 1 addition & 1 deletion resources/views/admin/diagnostics/home.blade.php
Expand Up @@ -815,7 +815,7 @@
<tr>
<td><span class="badge badge-primary">PIXELFED</span></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>
<td><span class="badge badge-primary">PIXELFED</span></td>
Expand Down

0 comments on commit a76cb5f

Please sign in to comment.