NoSpam Alpha!
Summary
NoSpam is an attempt at eliminating spam by using statistical methods to detect and punish spam. Spammers will be muted if they choose to spam and are caught.
NoSpam is still in Alpha. There are bound to be bugs. Please tell me! I can't stress this enough. Please tell me if it works or if it doesn't, if you hate it or you love it. I need feedback to make improvements.
A word of caution
NoSpam is in testing. Please report bugs. NoSpam has never been tested with a preloaded dictionary.
Commands
- /nospam mute <player> - Mutes a player
- /nospam forgive <player> - Unmutes a player
- /nospam observe <player> - Begins to observe a player if you have chosen to observe based on a whitelist. Stops observing a player if you are observing based on a blacklist.
- /nospam unobserve <player> - Undoes observe
- /nospam reload - Reload the plugin, but not the server
- /nospam release - Disable the plugin for easy removal or updating. I hope it's the latter ;)
Permissions nodes
There's only one permissions node, and that's:
vacuum.nospam
Configuration
Here are the configuration nodes:
- tests.dictionary.use Should we use a dictionary?
- tests.dictionary.points How should we weight the dictionary?
- tests.dictionary.preload Should we load the dictionary and store it in memory, or should we load it on the fly?
- tests.wordsize.use Should we check word sizes?
- tests.wordsize.points How should we weight word sizes?
- tests.characterfrequency.use Should we check character frequencies?
- tests.characterfrequency.points How should we weight character frequencies?
- tests.lastTime.use Should we examine time between packets?
- tests.lastTime.points How should we weight time? (remember that time is in milliseconds!)
- tests.distance.use Should we compare similarity between messages?
- tests.distance.points How should we weight similarity?
- tests.maxPoints How many points is a ban?
- tests.messagePersistTime How long till we delete messages?
- tests.observation.aswhitelist Should we observe players we choose to or players we choose not to? Using a whitelist means that this plugin will only observe players you have selected. Not using a whitelist means that this plugin will observe all players but those who were not selected.
- tests.observation.verbose Should we run debugging during observation?
Download
http://dev.bukkit.org/server-mods/nospam/files/9-nospam-1-5-0/
Note: you must have an active internet connection the first time you run NoSpam. NoSpam will download the config, character frequency, and dictionary files, unless you already have copies of these. NoSpam will also make blank observe and muted lists. If you wish to avoid large downloads, use a blank file and call it "dictionary.txt". Place it in your plugins/NoSpam folder.
Getting technical
The plugin uses various indicators to differentiate spam from real messages
These are the indicators:
- Check against a dictionary
- Average word size check, gives a value of p(x) = (x-5)^2/x where x is the average word size and p is the unweighted points.
- Character frequency check
- Elapsed time check
- Levenshtein distance check (not my algorithm, grabbed it from wikibooks)