NoSpam
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)
try and make it all automatic for lazy people like me :).
Could you add a silent mute feature, where it will automatically silently mute players for a custom amount of time if they send a custom amount of messages within a custom amount of time? So that if a player bypasses the anti-spam, sends 10 messages within 10 seconds, they get muted for 30 seconds as an example.
@geekplaya
Done! Also, /nospam reload will reload the SETTINGS, not the PLUGIN. So your config, etc. will be re-read, but NoSpam.jar will not be reread. For that, a /reload will be required.
@geekplaya
Ah, yes. And a release command.
I'd recommend a reload command. Doing /reload on my server crashes some plugins, so I have to restart my server to update your plugin.
@CoolOppo
What did you change that made it work better?
I had to tweak my stuff because everybody was getting muted. Please change the default settings.
@HOUSEMASTERR
I updated it. Hopefully Bukkit will approve it soon!
@HOUSEMASTERR
I will update it to meet the new bukkit API right now :D
Is this still supported or being developed?
@deleted_7554077
http://dev.bukkit.org/server-mods/nospam/files/8-nospam-1-4-0/
I fixed it up. Delete your NoSpam folder, because the old formats conflict with the new one. This will auto-redownload everything.
If you want to do it manually to avoid the dictionary download time, you can download the config.yml from here: resources
Then delete your muted.txt and observe.txt files.
@deleted_7554077
Thanks for giving me feedback :D
So with the debug test, you can turn that off by setting verbose to false in the config file. I'll make that by default false when I put up my next release.
As for better name recognition, I can do that. Shouldn't be too hard.
With in-game warning messages, I'll give users a warning when they reach a certain threshold, and mute if they surpass it. Also, as suggested, I'll let you customize the warning and mute messages.
Thanks again!
@falsevacuum
OK i tried it. Its quite rough but it somewhat works.
First can you do something about the console spam?
2012-01-19 16:40:53 [INFO] [16:40] KJanar: test
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Giving test 0 0.0 points
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Giving test 1 0.25 points
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Giving test 2 0.71963125 points
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Testing message "hi talljake :D" at time 1326984027226
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Testing message "test" at time 1326984053417
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]Testing message "caps" at time 1326984057462
2012-01-19 16:40:57 [INFO] [NoSpam]->[SpamDetector]KJanar earned 13.594126
That's way too much text add a debug mode or detailed info mode into the config or something :D.
Also it mutes me way too often when I repeat the same word after /nospam forgive
For example when I type "test" multiple times I get auto muted right. Then I do /nospam forgive KJanar but when I type "test" again only once I get muted immediately like there is no cooldown.
Also add some username regognition.
My ingame name is KJanar but when I do /nospam forgive kjanar it does nothing so I have to type /nospam forgive KJanar.
Maybe add some ingame warning messages that are configurable in the config wit 0-f color support.
Thanks
I can't make it better if people don't post comments :/ Please tell me what you think.