|
|
| /* This filter was significantly based off of https://consumerrights.wiki/w/Special:AbuseFilter/2. See there for attribution. */
| | words := "https?://archive\\.(today|fo|is|li|md|ph|vn)"; |
| /* 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 | */
| |
| words := "(https://archive.today|https://archive.fo|https://archive.is|https://archive.li|https://archive.md|https://archive.ph|https://archive.vn| | |
| http://archive.today|http://archive.today|http://archive.fo|http://archive.is|http://archive.li|http://archive.md|http://archive.ph|http://archive.vn)\b";
| |
|
| |
|
| /* The main filter has two parts connected by an & (AND) operator.
| | lcase(added_lines) rlike words |
| Both parts must be true for the filter to trigger */
| | & |
| (
| |
| /* PART 1: Check if any spam words appear in these places */
| |
| contains_any(lcase(added_lines),"<br><br>","<br/><br/>","<br>","<br>")|
| |
| 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 */
| |
| !( | | !( |
| /* The ! at the start means "NOT" - so this checks if the user
| | "bot" in user_groups | |
| is NOT a member of any of these groups */
| | "sysop" in user_groups |
| !"bot" in user_groups | /* Check if user is a bot */
| | ) |
| !"sysop" in user_groups /* Check if user is a sysop */
| |
| ))
| |