Commit Graph

8 Commits (c31c95ffe4fbf80981a0ee03484d72ee6d75d2ee)

Author SHA1 Message Date
luigi 7ea9588520
Use Enumerable#filter_map in more places ()
luigi 087ed84367
Optimize map { ... }.compact calls ()
* Optimize map { ... }.compact

using Enumerable#filter_map, supported since Ruby 2.7

* Add poyfill for Enumerable#filter_map
ThibG 345bba4812 Exempt staff members from spam check ()
Consider admins and moderators as trusted, for the purpose of the
spam checker.

Fixes 
Eugen Rochko aa509a3d8a
Fix auto-report string saying the account has been auto-silenced ()
Eugen Rochko b5f7e12817
Remove auto-silence behaviour from spam check ()
Fix 
Eugen Rochko 4f6af87906
Change spam check to apply to local accounts and add a threshold ()
Instead of detecting spam on first duplicate message, add a
threshold of 5 such messages to reduce false positives
ThibG 7e2b6da57f Add setting to disable the anti-spam ()
* Add environment variable to disable the anti-spam

* Move antispam setting to admin settings

* Fix typo

* antispam → spam_check
Eugen Rochko 6ff67be0f6
Add a spam check ()
* Add a spam check

* Use Nilsimsa to generate locality-sensitive hashes and compare using Levenshtein distance

* Add more tests

* Add exemption when the message is a reply to something that mentions the sender

* Use Nilsimsa Compare Value instead of Levenshtein distance

* Use MD5 for messages shorter than 10 characters

* Add message to automated report, do not add non-public statuses to
automated report, add trust level to accounts and make unsilencing
raise the trust level to prevent repeated spam checks on that account

* Expire spam check data after 3 months

* Add support for local statuses, reduce expiration to 1 week, always create a report

* Add content warnings to the spam check and exempt empty statuses

* Change Nilsimsa threshold to 95 and make sure removed statuses are removed from the spam check

* Add all matched statuses into automatic report