The SpamFilter is a JSPWiki filter that can be used to block questionable edits.

!Parameters

;__wordlist__: The name of the WikiPage on which the word list resides.  Default is "SpamFilterWordList".
;__errorpage__: The name of the page to which the user is redirected, if the edit contains a matched word.  On that page, the variable [[{$msg}] is available, telling the reason.
;__pagechangesinminute__: How many page changes are allowed per minute before the IP address is put on a temporary ban list.  Default is 5 changes/minute.
;__bantime__: The length of the ban time.  Default is "60" for 60 minutes.

!The word list

The SpamFilter looks at the [WikiVariable] called 'spamwords' on the ''wordlist'' page.  This must contain a space-separated list of words not allowed in a page.  In fact, each word is a full Perl5 regular expression, so you can do pretty complex matches as well.

Of course, it is a good idea to allow only trusted users to edit the ''wordlist'' page.  Otherwise a spammer can remove the list...

!Example

Put the following in your filters.xml file (See [PageFilter Configuration] for more information):
{{{
    <filter>
      <class>com.ecyrd.jspwiki.filters.SpamFilter</class>
    </filter>
}}}

to start the filter.  Create a page called "SpamFilterWordList" and put the following on it:
{{{
[{SET spamwords='viagra money'}]
}}}
to prevent anyone from saving a page that contains either the word "viagra" or "money".  In a bit more complicated example:
{{{
[{SET spamwords='[vV][iI][aA][gG][rR][aA]'}]
}}}
would block the words "viagra", "Viagra", "viAGra" and so on.