much better messaging from spamnoticer, don't just dump the log

This commit is contained in:
towards-a-new-leftypol 2023-09-21 05:42:42 +00:00
parent dc8e5c61dc
commit 7ed6bb7871
2 changed files with 79 additions and 2 deletions

View File

@ -1195,7 +1195,7 @@
$config['error']['invalidtheme'] = _('That theme doesn\'t exist!');
$config['error']['csrf'] = _('Invalid security token! Please go back and try again.');
$config['error']['badsyntax'] = _('Your code contained PHP syntax errors. Please go back and correct them. PHP says: ');
$config['error']['spam_noticer'] = _('Your post was determined to be spam. Reasoning: ');
$config['error']['spam_noticer'] = _("Not going to post this because ");
/*
* =========================

View File

@ -10,6 +10,80 @@ function _createClient($config) {
]);
}
$REASONS = [
(1 << 0) => [
'reason' => 'RECENTLY_POSTED_ATTACHMENT_ABOVE_RATE',
'explanation' => 'your file was posted too fast',
],
(1 << 1) => [
'reason' => 'LEXICAL_ANALYSIS_SHOWS_NONSENSE',
'explanation' => 'your post is nonsense',
],
(1 << 2) => [
'reason' => 'SEGMENTED_AVG_ENTROPY_TOO_HIGH',
'explanation' => 'this seems to be garbage input',
],
(1 << 3) => [
'reason' => 'TEXT_MATCHES_KNOWN_SPAM',
'explanation' => 'your text is considered spam',
],
(1 << 4) => [
'reason' => 'RECENTLY_POSTED_TEXT_ABOVE_RATE',
'explanation' => 'your text is being spammed',
],
(1 << 5) => [
'reason' => 'TEXT_IS_URL',
'explanation' => 'this is just a url',
],
(1 << 6) => [
'reason' => 'TEXT_IS_ONE_LONG_WORD',
'explanation' => "your post is illegible",
],
(1 << 7) => [
'reason' => 'TEXT_IS_RANDOM_WORDS',
'explanation' => "what you're saying is nonsense",
],
(1 << 8) => [
'reason' => 'ATTACHMENT_MATCHES_KNOWN_SPAM',
'explanation' => 'that file is considered spam',
],
(1 << 9) => [
'reason' => 'TEXT_MANUALLY_MARKED_AS_SPAM',
'explanation' => "we said you can't post that",
],
(1 << 10) => [
'reason' => 'ATTACHMENT_MANUALLY_MARKED_AS_SPAM',
'explanation' => 'that file is spam',
],
(1 << 11) => [
'reason' => 'ILLEGAL_ATTACHMENT',
'explanation' => 'of illegal content',
],
];
function reasonsFromBitmap($n) {
$reasons = [];
foreach ($GLOBALS['REASONS'] as $bit => $reason) {
if ($n & $bit) {
$reasons[] = $reason['explanation'];
}
}
return $reasons;
}
function renderReasons($reason) {
$reasons = reasonsFromBitmap($reason);
$result = '';
if (!empty($reasons)) {
$result = implode(' and ', $reasons);
}
return $result;
}
class SpamNoticerResult {
public $result_json = NULL;
public $noticed = false;
@ -206,7 +280,10 @@ function checkWithSpamNoticer($config, $post, $boardname) {
$result->noticed = $result->result_json['noticed'] == true;
if ($result->noticed) {
$result->reason = (string) $response->getBody();
$body = (string) $response->getBody();
print_err($body);
$reasons_bitmap = json_decode($body)->reason;
$result->reason = renderReasons($reasons_bitmap);
}
} else {
$result->reason = (string) $response->getBody();