|
|
| /* This filter was significantly based off of https://consumerrights.wiki/w/Special:AbuseFilter/2. See there for attribution. */ | | /* This filter was significantly based off of https://consumerrights.wiki/w/Special:AbuseFilter/2. See there for attribution. */ |
| /* List of words we want to check for. The (?i) makes it case-insensitive, | | /* List of words we want to check for. The (?i) makes it case-insensitive, |
| and \b ensures we match whole words only. Each word is separated by | */ | | and \b ensures we match whole words only. Each word is separated by | */ |
| words := "(archive.today)\\b"; | | words := "(http://archive.today|https://archive.today)\\b"; |
|
| |
|
| /* The main filter has two parts connected by an & (AND) operator. | | /* The main filter has two parts connected by an & (AND) operator. |
| Both parts must be true for the filter to trigger */ | | Both parts must be true for the filter to trigger */ |
| ( | | ( |
| /* PART 1: Check if any spam words appear in these places */ | | /* PART 1: Check if any spam words appear in these places */ |
| contains_any(lcase(added_lines),"<br><br>","<br/><br/>","<br>","<br>")| | | contains_any(lcase(added_lines),"<br><br>","<br/><br/>","<br>","<br>")| |
| added_lines rlike words | /* Look for words in the new text being added */ | | added_lines rlike words | /* Look for words in the new text being added */ |
| /* PART 2: Check if user is NOT in any of our trusted groups */ | | /* PART 2: Check if user is NOT in any of our trusted groups */ |
| !( | | !( |
| /* The ! at the start means "NOT" - so this checks if the user | | /* The ! at the start means "NOT" - so this checks if the user |
| is NOT a member of any of these groups */ | | is NOT a member of any of these groups */ |
| "bot" in user_groups | /* Check if user is a bot */ | | "bot" in user_groups | /* Check if user is a bot */ |
| "sysop" in user_groups /* Check if user is a sysop */ | | "sysop" in user_groups /* Check if user is a sysop */ |
| )) | | )) |