Je vous ai parlé de mon installation anti-spam chez Free qui me permet — en tout cas j'ose l'espérer — de passer à travers les mesures de rétorsions qu'ils appliquent dès qu'ils constatent la présence de spam dans la base de données. Je vais vous indiquer ici les modifications que j'ai apportées à deux plugins, Gallery et Spamplemousse, pour éviter le stockage des spams comme je l'expliquais dans ce billet.
Le plugin Gallery
Si vous n'utilisez pas ce plugin, vous pouvez sauter directement au chapitre suivant qui concerne le plugin Spamplemousse (voir ici).
Tout d'abord, commençons par le plugin Gallery pour lequel les modifications consistent à faire passer les commentaires déposés sur les images par le filtre des plugins anti-spam, Spamplemousse et SpamClear.
Dans le fichier class.gallery.php
, au début, vous trouvez ceci :
… require_once dirname(__FILE__).'/class.galleryimage.php'; require_once dirname(__FILE__).'/class.galleryexif.php';
Insérez juste après ceci :
/* Spamplemousse */ if (@file_exists(dirname(__FILE__).'/../spamplemousse/lib/class.moderation.php')) { $spamplemousse_ready=true; require_once dirname(__FILE__).'/../spamplemousse/lib/class.moderation.php'; require_once dirname(__FILE__).'/../spamplemousse/lib/class.spamfilter.php'; } else { $spamplemousse_ready=false; } /* SpamClear */ if (@file_exists(dirname(__FILE__).'/../spamclear/functions.php')) { $spamclear_ready=true; } else { $spamclear_ready=false; }
Cela permet d'inclure le code des fonctions de filtrage nécessaires. Au passage on positionne des flags indiquant la présence ou l'absence des plugins en question.
Ensuite, toujours dans le même fichier, direction la fonction addComment()
qui est utilisée pour enregistrer un commentaire déposé via le formulaire. Dans cette fonction, au tout début, j'ai rajouté cette ligne :
if (!dc_allow_comments) return false;
Ce qui permet d'ouvrir ou de fermer les commentaires des galeries en même temps que ceux des billets. Ce n'est pas indispensable mais très pratique lorsque vous vous éloignez pour un certain temps loin de votre blog. Dans ce cas je n'ai qu'à fermer les commentaires et les rétroliens via la configuration du blog pour être tranquille jusqu'à mon retour.
Ensuite, juste après cette ligne :
$site = preg_replace('|^http://|','',$site);
Il faut rajouter ceci :
if ($this->__isSpam($auteur,$email,$site,$content)) return false; global $spamclear_ready; if ($spamclear_ready) { $filter = new SpamClear($this->con); if($filter->isSpam($content)) return false; }
La première ligne utilise une fonction qui va filtrer via Spamplemousse. Les lignes suivantes permettent de passer par le filtrage de SpamClear.
Dernière modification, à la fin du fichier, juste avant le } ?>
final, rajoutez ceci :
function __isSpam($nom,$mail,$site,$content) { global $spamplemousse_ready; if (!$spamplemousse_ready) { return false; } else { # adresse ip reelle (gestion du cas du reverse proxy) $ip = spamfilter::realip(@$_SERVER['REMOTE_ADDR'], @$_SERVER['HTTP_X_FORWARDED_FOR']); return spamfilter::is_spam($nom,$mail,$site, $ip, trim($content)); } }
Enregistrez le fichier. C'est terminé pour ce plugin. Il est maintenant pourvu d'un filtrage anti-spam identique aux commentaires et rétroliens des billets.
Le plugin Spamplemousse
Edit du 23 mai 2008 : Si vous utilisez la version 0.1.8 (sortie récemment) de ce plugin alors les modifications que je précise ensuite ne sont plus nécessaires. D'une part cette version n'enregistre plus son activité dans la table journal de Dotclear, et d'autre part, elle permet en modifiant deux valeurs du fichier config.php
du plugin d'empêcher l'enregistrement en file d'attente :
# suppression automatique des commentaires # sans passer par la file de modération define('spam_comment_suppr', false);
# suppression automatique des trackbacks # sans passer par la file de modération define('spam_trackback_suppr', false);
Remplacez simplement la valeur false
par true
, enregistrez et c'est terminé.
Pour les versions antérieures (< 0.1.8), suivez les instructions suivantes :
Maintenant voyons les modifications apportées au plugin Spamplemousse pour éviter le stockage des commentaires et rétroliens considérés par lui comme du spam — j'en ai profité pour supprimer également l'enregistrement de ses actions dans la table journal de Dotclear, trouvant que ça surcharge inutilement la base de données.
Première modification, suppression de l'enregistrement des actions dans la table journal. Pour cela, ouvrez le fichier /lib/class.moderation.php
. Allez jusqu'à la fonction addComment()
. Et mettez en commentaire les lignes suivantes :
/* Pas d'enregistrement dans la table journal */ /* if ( is_callable(array('blog','triggerLog')) ) { $this->triggerLog('spamplemousse',$id,'comment marked as spam'); } else { $this->tiggerLog('spamplemousse',$id,'comment marked as spam'); } */
C'est tout pour ce fichier. Ensuite, pour éviter l'enregistrement de rétroliens considérés comme spam par Spamplemousse, ouvrez le fichier /inc/tb.php
. Mettez en commentaire ces deux lignes :
/* Pas d'enregistrement des retroliens consideres comme spam */ /* $moderation = new moderation($blog); $id = $moderation->addComment($id, $blog_name, '', $url, $comment, true, dc_time_delta, dc_comments_pub, $spam, $ip); */
Et rajoutez cette ligne juste après :
$id = true;
Cela permet de ne pas enregistrer mais de conserver les autres traitements comme la notification par mail.
Enfin, pour éviter l'enregistrement de commentaires considérés comme spam par Spamplemousse, ouvrez le fichier postcon.php
. Mettez en commentaire ces lignes :
/* Pas d'enregistrement des commentaires consideres comme spam */ /* $moderation = new moderation($blog); # ajout du commentaire dans la file de modération $id = $moderation->addComment($post_id, $nom, $mail, $site, $content, 0, dc_time_delta, dc_comments_pub, $spam, $ip); */
Et rajoutez cette ligne juste après :
$id = true;
Cela permet, comme pour les rétroliens, de ne pas enregistrer mais de conserver les autres traitements comme la notification par mail.
Conclusion
Ces modifications sont en œuvre sur mon blog depuis quelques mois et ne m'ont, pour l'instant, pas posé de problème particulier et me permettent d'avoir l'esprit à peu près tranquille, pour un temps — on n'est pas à l'abri d'un changement de politique de Free en ce qui concerne le traitement des spams.
Dernière recommendation avant de finir : prenez soin de faire une copie de sauvegarde des fichiers avant de les modifier, on n'est jamais trop prudent.
1 De LoloWood -
Merci beaucoup pour ces compléments d'information. Ils m'ont été très utiles et les ai appliqués de suite.
merci encore
2 De Franck -
De rien, c'est fait pour ça. Et si ça permet de sauver au moins un blog alors ça n'aura pas été fait en vain ! \o/
3 De Dominique -
Merci Franck. Mais si j'avais su cela avant cela m'aurait évité de perdre un de mes blogs ce week-end. Enfin cela va me permettre d'en sauver deux autres. Petite question : ces manips sont spécifiques à Free ou peux-t-on les appliquer chez d'autres hebergeurs?
4 De Franck -
C'est applicable quelque soit l'hébergeur, il n'y a rien de spécifique à Free.
5 De Dominique -
Merci beaucoup Franck. Je vais mettre tout de suite en application.
6 De Nan'Art -
Bonjour, Concernant les tracbacks, j'ai trouvé un billet intéressant Spamtimeout, adieu au spam des trackbacks Dotclear
7 De Franck -
Merci Nan'Art (au fait c'est le même que sur les newsgroup Free ?) pour l'info. Je n'en ai effectivement pas parlé car son usage est parfois hasardeux, ayant souvent eu des difficultés à mettre un rétrolien sur des blogs qui en étaient équipés.
Ceci dit, dans l'absolu, c'est une excellente protection pour les rétroliens.
8 De BiereNard -
Merci Franck pour ton tuto qui me permets d'espérer échapper à la deuxième coupure de mon blog chez Free. J'avais déjà un SpamClear en fonctionnement, mais les quelques spams gardés pour l'apprentissage m'ont valu une coupure sauvage de 24h00 !
Bravo aussi pour la modif sur Gallery, là effectivement, je n'avais aucune parade !
Merci aussi au passage à Nan'Art pour l'aide qu'il apporte sur le groupe de News des pages persos Free, c'est lui qui m'a donné le lien vers ton site.
Chapeau bas les gars !
9 De Franck -
De rien BiereNard ;-)
Ne pas hésiter à installer aussi Spamtimeout, il a l'air d'être particulièrement efficace pour les trackbacks (rétroliens).
10 De My -
Bonjour,
Je cherche à télécharger Spamclear, petit problème, le site a été sanctionné par free, donc on a plus accès au fichier. Saurais tu où je pourrais le trouver?
Merci d'avance
11 De Franck -
Bonjour My,
Il est disponible sur le nouveau dépôt des plugins, à cette adresse.
12 De My -
Merci beaucoup : )
13 De rené -
dotclear 1.2
La notification par email ne fonctionne pas chez FREE est-ce normal? merci
14 De Franck -
Bonne question, je n'ai jamais essayé cette fonction chez eux. Il faudrait poser la question sur le forum, quelqu'un l'utilise peut-être ?
15 De biou -
à noter qu'avec la dernière version de spamplemousse, certaines modifications ne sont plus nécessaires...
16 De Franck -
Tu as raison biou ! C'est documenté quelque part chez toi ? Si oui je mettrais un lien direct et une petite explication pour désactiver l'enregistrement.
17 De Yugo -
Bonjour,
ça ne fonctionne pas chez moi avec SpamClear.
Quand je valide le commentaire il ne fait que recharger la page.
Des propositions pour y remédier ?
Merci.
18 De Franck -
Yugo tu pourrais me décrire un peu plus le problème ? J’ai du mal à comprendre si c’est du côté admin ou plutôt lorsqu’un commenaire est envoyé côté public.
19 De Yugo -
Hello,
Du côté public.
Maintenant, il ajoute directement le commentaire sans aucune vérification.
Voici mon fichier class.gallery.php : http://alturl.com/zdts
Merci de ton aide.