A 'pure server' is a server that forces all clients on the server to use content that matches what is on the server. This way, clients who are playing on the server cannot cheat by modifying the game content.
Without pure servers, clients could modify their materials, sounds, and models to give them advantages in the game. They might allow themselves to see through walls, make enemy models larger or brighter, or make certain sounds louder, thus giving them an advantage while playing.
To use pure server mode on a server, set the sv_pure console variable to 1. Then, the next time a map is loaded the server will begin ensuring that the content (materials, models, and sounds) on client machines matches the content on the server.
The list of content that the server enforces is specified in a file called pure_server_whitelist.txt, which is contained in the game directory. The server can edit this file to change which content clients are allowed to modify. For example, the server could specify in this file that clients are allowed to modify sounds, but not materials or models. Note: clients do not open pure_server_whitelist.txt, so they cannot hack around the server's usage of the file by editing it.
By default, the server will kick clients that are using content that is different from the content the server wants to enforce. If a server only wants to give clients a warning or see which clients are using "impure" content, it can set sv_pure_kick_clients to 0.
Whitelist File Format
The pure_server_whitelist.txt file specifies attributes for groups of files. Each line specifies one file or a group of files and the attributes for those files. Here is an example line:
The first part ('materials\...') specifies the files. In this case, it is specifying all files under the materials directory, recursively. The second part ('from_steam') specifies the attributes to apply to those files. In this case, it is saying that all of those files must come from Steam. So if clients have custom content in their materials directories, that content will not be used, and the content from their Steam caches will be used instead.
Server precaching CRCs
In most cases, even clients who have modified content sitting on their disk are still allowed to play on a pure server. The Source Engine will ensure that the content from Steam (instead of the content from their disk) is used when a client plays on a pure server. This way, clients don't have to wade through their game directories to clean out old content before they play on a pure server. Instead, they just join servers and the correct allowed content is automatically used.