/********************************************************************************

   -= Loaded Q3A =-
   Advanced Filtering System

   Kevin "Wolverine[CotC]" Fell
   Wolverine@planetquake.com
   http://www.planetquake.com/loaded/

   INTRODUCTION
   ------------
   This file contains all the information you'll ever need to know surrounding
   the Loaded Q3A filtering system. Remember this filtering system is as complex
   as you want to make it, the more filters you add, the more complex it becomes
   so please take a few minutes to read through the entire contents of this file
   to ensure you understand exactly how it works.
   Its also worth noting that the majority of this file is contained within a
   large multi-line comment, the actual filters can be found at the end of the file.

-> FILE NOTES
   ----------
   * Standard C/C++ style comments are supported.
     -> Single line comments begin with "//" and end at the end of the line.
     -> Multi-line comments begin with "/*" and ends with the same combination
        of characters in reverse.
     ...Anything between these comment symbols will be ignored by the system.
   * Each filter occupies one line only.
   * Data containing spaces should be enclosed in quotation marks ("").
   * Tabs and spaces are used to separate individual data items.
   * Empty quotation marks can be used to specify an empty field.
     ...empty quotes are however skipped until the first parameter is found!

-> FILTER FLAGS
   ------------
   These flags can be used in addition with each individual filter, and inform the
   system how to process a specific filter, add these values together to define more
   than one option.

   Internal Name	Description					Value
   --------------------------------------------------------------------------
   FF_CMP_CASE		Performs a case comparison.			1
   FF_CMP_FULLSTR	Performs a full string comparison instead of	2
			the drawn string comparison.
			(ie. Compare "^1Qu^7ak^1e" instead of "Quake")
   FF_SILENT		Positive comparison results are only sent to	4
			the client who failed the filter test.
   FF_FAIL_LOG		Append results to the servers log file.		8
   FF_FAIL_KICK		Removes clients who fail this filter.		16
   FF_FAIL_BAN		Creates a new player ban for clients who fail	32
			this filter. (Not Implemented)

-> WILDCARDS
   ---------
   Wildcards are special characters that allow greater flexibility in the filter
   system, using these pre-defined characters it is not necessary to enter the
   same command to ban an entire clan, instead, you can use wildcards to identify
   entire groups of players. Essentially, these wildcards act as a substitute for
   an unknown string of zero or more characters.

   The following wildcard characters are supported...
   '*' - Specifies a variable length string of zero or more characters.
   '?' - Specifies any one single character.
   '\' - Informs the system that the following character is to be used literally
         instead of its normal interpretation. This character can be followed by
         either one of the above wildcard characters or itself.

-> PLAYER FILTERS
   --------------
   The Loaded Q3A player filter system provides server administrators with an
   invaluable level of administration control by specifying exactly the players
   that can and cannot connect to your server.

   Using these player filters, administrators can...
   1. Ban players either by their name, clan tag, and/or IP address.
   2. Make player name and/or clan tag reservations using specific IP addresses and/or
      passwords so that only authorised players can connect using a specific name
      and/or clan tag.
   3. Create multiple server passwords.
   4. Ban all clients with abusive terminology or specific colours in their name.

   FORMAT
   ------
   The format for specifying a player filter is...
   filter_player <name> <ip> <password> <flags>

   Parameter	  Description
   --------------------------
   filter_player  Player filter command.
   <name>	  Clients player name (Supports Wildcards).
   <ip>		  Clients IP address (Supports Wildcards).
   <password>     Password exception for filter (Case Sensitive).
   <flags>	  Additional comparison options. This can be a combination of the
		  filter flags listed at the top of this document, add the values
		  to define more than one option.

   IMPROTANT NOTE
   --------------
   Please bear in mind that all player filters are processed serially one-by-one
   in the order they are specified, filtering will cease on the first positive
   match so please check your ordering by testing each filter before you presume
   it works. In general, its best to specify all permanent bans first and the
   filters containing only a single field last.

   EXAMPLES
   --------
   Here are a few examples to demonstrate the player filtering system...

   filter_player *[ABC]
   ...This will ban all players with [ABC] trailing their name period.

   filter_player Wolverine "" pAsSwOrD
   ...This will create a name reservation for the client "Wolverine" by banning all
   clients with the name "Wolverine" unless their password is set to "pAsSwOrD".

   filter_player "" 127.0.*
   ...This will ban all clients connecting from an IP address beginning with "127.0.".

   filter_player "" "" pAsSwOrD
   ...This will allow any client to connect to the server using the password "pAsSwOrD".

-> CHAT FILTERS
   ------------
   The Loaded Q3A chat filter system allows server administrators to ensure all
   chat messages are suitable for the servers target audience and that they are
   free from abusive terminology, it also provides administrators with the ability
   to abbreviate common words or phrases and clean up or remove all text colouring.

   Using these chat filters, administrators can...
   1. Remove or censor specific words or phrases.
   2. Automatic text abbreviations to reduce net traffic.
   3. Automatic word or phrase highlighting.
   4. Remove specific text colours from chat messages.
   5. Log, Kick and/or Ban clients failing individual filter tests.

   FORMAT
   ------
   The format for specifying a chat filter is...
   filter_chat <string> <replace> <flags>

   Parameter	Description
   ------------------------
   filter_chat	Chat filter command.
   <string>	String of characters to search for.
   <replace>	String of characters to copy in place of <string>.
		When <replace> begins with a single '&' character the entire
		message is substituted with this string.
   <flags>	Additional comparison options. This can be a combination of the
		filter flags listed at the top of this document, add the values
		to define more than one option.
   EXAMPLES
   --------
   Here are a few examples to demonstrate the chat filtering system...

   filter_chat "fuck" "f**k"
   ...This will replace all occurrences of "fuck" with "f**k"

   filter_chat "good game" "gg"
   ...This will abbreviate all occurrences of "good game" to "gg"

   filter_chat "prick" "&No abusive word or phrases please" 4
   ...This will send the user who wrote the chat message a private message
   informing them that abusive terminology is not permitted on your server,
   this is done using the '&' character in the replacement string and adding
   FF_SILENT to the filter flags.

********************************************************************************/

// Chat Filters
filter_chat "fuck"	"f**k"
filter_chat "shit"	"s**t"
filter_chat "cunt"	"c**t"
filter_chat "nigger"	"&No abusive words or phrases please!"	12 // Silent + Log

// Automatic Text Abbreviations
filter_chat "ate"	"8"
filter_chat "good game"	"gg"
filter_chat "you"	"u"

// Clean-up Filters
filter_chat "^0"	""	// Removes black coloured text