Very nice, it picks up just about everything ? Everything I could think of at least.
I should maybe look into the scum issue you encountered with the filter, but it would probably be a lot of work for little payoff. I prefer to tell the user what is filtered so they can fix it. Bot scripts don't care, and people-spammers will give up because they can't post links.
I have made ten posts though, and it is still restricting me.
Yup, it is posts and time. Usually we just get single ego spams (great site, thanks for posting!), but often we also get spray spam in a bunch of threads (to go through the notification system I'd guess). This prevents one lame post followed by tons of spam. The forum is user support for a business, so someone usually checks it at least every 3 hours (usually constantly), giving us enough time to catch anything before they come back in X days and spam.
It appears that it is applying the filters to all users, or is it just newbies?
It is the same as your mod, just teased into a class and applied in more places. It chooses who to filter by posts AND time, no matter the rank (unless admin). There is a commented out line in the class that *should* limit this to the new users group. I have not tested though.
I also noticed that the whitelist didn't seem to work?
It should work with own-site, but I forgot to add back in my external whitelist after the last update.
If we can get the array of link nono's (.com, .org, .ru, http, www, etc) configurable in the admin panel, along with an array of bad words, also configurable in the admin panel, this could be a very powerful anti spam mod.
Can I suggest a wish list?
In admin panel:
....
This could be done, as far as I can tell, exactly the same way you added the other stuff to teh ACP. Add a database entry, and add a place to enter the value in the ACP. I only know what I read in the install.xml for this mod though, I might way underestimate the work involved
The class is already configured to accept the existing posts and days values from your mod:
Code: Select all
if($this->load_values_from_db){ //use MOD setting from database
$this->minimum_days=$config['links_after_num_days'];
$this->minimum_posts=$config['links_after_num_posts'];
and will take a string of domains, whitelists, and words from fields called:
Code: Select all
//use MOD setting from database
$this->whitelist_urls=explode(",", $config['links_allow_always']);
$this->no_link_strings=explode(",", $config['links_link_strings']);
$this->no_word_strings=explode(",", $config['links_word_strings']);
It should work right off the bat. Just set $f->load_values_from_db=true; after the $f= new link_filter (or edit to be the default before uploading).
Perhaps dangerousprototypes should start his own mod in development?
I'd really prefer to contribute to this one. The code is 99% from this mod. Can we work together? I'm having fun working on the back end, but I probably won't package it up and add admin panel stuff myself. I'll even commit to maintaining it through future versions (since it is work related).
-----
Another option available is to show the filter word to the user or not, this can eliminate frustration.
I'm going to add a few other features:
*PMs? never had a problem with PM spam, but it is only a matter of time
*auto-ban/delete sleepers. If lots of forums use this approach spammers will create an account, age it until they can post links, then blast a ton through at once. At least that is what I would do, and it is totally scriptable. To prevent this, I already delete new users who are inactive 24 hours after registering. I do this with some ugly sql on a cron job or the prune users menu. I'd like to add this type of function to the mod in three ways:
1- The mod can easily deny access to any user with 0 posts who is outside the age window. It will give a message like "Anitspam: Posting from this account have been disabled, please contact an admin" instead of the other messages. Will do this ASAP.
2 - A little more aggressive - if a new user (0 posts) comes back AFTER the age period and tries to post they will be banned or outright deleted and told to re-register. This is a little more difficult because I have to dig in the api and figure out the right way to do this.
3 - Zombie cleanup - an api-appropriate way to mass delete users older than the minimum post time who have never posted. This cleans up the robot registrations who never post, and prevents "aging" an account to use it for spam later.
*Selectable character set detection, to mass filter unicode characters.
Please do not PM or mail with questions. Ask in the forum where everyone can share the answer.