Abuse filter management

From Test Wiki
Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)

Differences between versions

ItemVersion from 17:14, 17 July 2024 by Codename NoresteVersion from 02:14, 29 November 2024 by Codename Noreste
Basic information
Notes:
Test filter imported from the English Wikipedia, see Filter 384 there, log only for now. -Justa
Test filter imported from the English Wikipedia, see Filter 384 there, log only for now. -Justa


Enable warn and tag, and remove page namespace condition. -Justa
Enable warn and tag, and remove page namespace condition. -Justa


Exempt sysops -Justa
Exempt sysops -Justa
Tailor to Test Wiki -Justa
Tailor to Test Wiki -Justa


Most of the conditions, excluding the string, are removed since this is not Wikipedia, and I've reduced the edit_delta to 20 (for newer users) as well as merged the condition that excludes autopatrolled users and admins into one. -- Codename Noreste, April 21 2024
Most of the conditions, excluding the string, are removed since this is not Wikipedia, and I've reduced the edit_delta to 20 (for newer users) as well as merged the condition that excludes autopatrolled users and admins into one. -- Codename Noreste, April 21 2024


Exclude userspace and user talk pages, this is already covered by another filter; no need for edit_delta. [Norte to Noreste changed in the notes too.] — Codename Noreste
Exclude userspace and user talk pages, this is already covered by another filter; no need for edit_delta. [Norte to Noreste changed in the notes too.] — Codename Noreste


Switched to equals_to_any in line 2. -- Codename Noreste, July 17 2024
Switched to equals_to_any in line 2. -- Codename Noreste, July 17 2024
Converted the main regex string to ccnorm and modified some of that as well. I also split the repeating characters part into another regex variable. --Codename Noreste 02:14 29 Nov 2024
Filter conditions
Conditions:
!contains_any(user_groups, "autopatrol", "sysop") &
!equals_to_any(page_namespace, 2, 3) &
!equals_to_any(page_namespace, 2, 3) &
!contains_any(user_groups, "autopatrol", "sysop", "bot") &
(
(
     bad_word := "\b(?:ass|arse|butt)\s?holes?\b(?!\Wsurfer)|\b(?:dumb|(?:f|ph)at+(?:est)?)\s*a(?:ss|\$\$)\b|\barse\b|bitch(?!\"? magazine|itra)|\bcock(?:s?|sucker)\b|\bdick(?:sucker|head)?s?\b|cuck(?:|s|er|ing)\b|\bcunts?\b|\bdildo|douche|f(?:u|v)ck|nigg(?:er|ah*)|p(?:a|e|ae)do(?:f|ph)il|fag(?:\b|g[aio]t)|(?<!top)penis(?!ton|i|cola)|\bcrap(?:py)?\b|\bslut\b|whore|\b(?:bull|dog|horse)?shite?(?:hole|s|ti?er|t?y|t?ing)?\b|\bblah\b|\bpuss(?!ycat|yfoot|y Riot)a?y|\bidiot\b|(?<!\bit )(?<!\bthat )\bwas here\b|\blol\b|(?:[asdfghjkl;]\s*){30}|\!{10,}";
     bad_words := "\b(?:(?:ASS|ARSE|BUTT)\s?HOLES?|(?:DUMB|(?:F|PH)AT+(?:EST)?)\s*ASS|ARSE|BITCH(?:E[SZ]{1,2})?|COCK(?:S|SUCKER)?|DICK(?:HEAD|SUCKER)?S?|CUCK(?:ER|ING|S)?|CUNTS?|DILDO|DOUCH|(?:M[OU]TH[AER]+)?F[UV]CK(?:ER[SYZ]{0,2}|HEAD|HOLE)|N[IL]G{2,}(?:A[HSZ]{0,3}|[AEIOU]{1,5}R[SZ]{0,2})|P[AE]DO(?:F|PH)ILE?|FAG(?:G[AIO]T)?|PENIS|CRAP(?:PY)?|SLUTS?|WHORES?|(?:BULL|DOG|HORSE|PIG)?SHITE?(?:HOLE|S|TI?ER|T?Y|T?ING)?|PUSS(?!YCAT|YFOOT|Y RIOT)A?Y|IDIOTS?|(?<!IT )(?<!THAT )WAS HERE|LOL)\b";
 
    characters := "(?:[asdfghjkl;]\s*){30}|[bcdfghjklmnpqrstvwxz]{8,}|\!{10,}";
     added_lines irlike bad_word &
   
    !removed_lines irlike bad_word
     (
        ccnorm(added_lines) rlike bad_words &
        !(ccnorm(removed_lines) rlike bad_words)
    ) | (
        added_lines irlike characters &
        !(removed_lines irlike characters) &
        !(added_lines contains "http")
    )
)
)