Vous avez un blog Dotclear 1 chez Free et malheureusement le SPAM a envahit une ou plusieurs de vos tables de votre base de données avant que vous ayez eu le temps de les supprimer. Résultat, votre blog vous inonde d'injures à chaque fois que vous affichez un billet. Si vous êtes dans ce cas voilà en quelques étapes le moyen de réparer votre installation.
Ne soyez pas effrayé par la longueur de ce qui suit. Prenez votre temps, lisez tranquillement, avancez pas à pas — posez des questions ici ou sur le forum si besoin au fur et à mesure — et vous vous rendrez compte que ce qu'il y a à faire est plus facile qu'il n'y parait.
Pourquoi les messages d'erreurs ?
Tout d'abord pourquoi avez-vous des messages d'erreurs à l'affichage ? Et bien parce que le ou les responsables des Pages Perso de chez Free ont renommé une ou plusieurs de vos tables — dans le meilleur des cas — ou bien ont supprimé une ou plusieurs de vos tables. En effet, depuis quelques mois ils scannent régulièrement le contenu des tables des bases de données à la recherche de SPAM. Leurs seules présences dans la base de données suffit à déclencher une sanction, y compris dans le cas où les SPAM en question ne seraient pas affichés publiquement sur votre blog et y compris dans le cas où il seraient en attente d'une décision de modération ou de filtrage de votre part !
Quelles sont les tables ciblées ?
Quelles sont les tables en question ? À priori toutes, mais principalement[1] la table dc_comment
qui contient les commentaires et les rétroliens publiés sur votre blog et éventuellement la table dc_spamplemousse
si le plugin Spamplemousse est installé chez vous et la table dc_galComment
si le plugin Gallery est installé[2].
Réparer son installation
Dans l'ordre, effectuez les étapes suivantes :
Fermer commentaires et rétroliens
La première chose à faire est de fermer les commentaires et les rétroliens sur votre blog. Pour cela, il suffit de sélectionner le choix non
pour les options Permettre les commentaires
et Permettre les trackbacks
, onglet Outils
, option Configuration de DotClear
, puis de valider en cliquant sur le bouton Enregistrer
(en bas de la page).
Déterminer l'étendue des dégâts
Pour cela il va falloir déterminer quelles sont les tables mises en causes et éventuellement vérifier les plugins déjà installés. Commençons par les plugins. Cliquez si nécessaire sur l'onglet Outils
et vérifiez la présence des plugins nommés Gallery, SpamClear et Spamplemousse. La réparation va dépendre de leur présence ou de leur absence.
Pour les tables, connectez-vous à l'outil de gestion de votre base de donnée en utilisant cette adresse : http://sql.free.fr/phpMyAdmin/. Vous devrez indiquer votre login et mot de passe pour y accéder.[3]
Une fois connecté vous devriez avoir à l'écran (côté gauche), la liste des tables présentes dans votre base de données. Cherchez une table commençant par dc_comment
, une autre commençant par dc_spamplemousse
si le plugin Spamplemousse est installé et enfin une commençant par dc_galComment
si le plugin Gallery est également installé. Trois cas de figure peuvent se présenter :
- Vous trouvez la table
dc_comment
telle quelle. Dans ce cas, il ne s'agit pas d'un problème causé par une intervention liée à du SPAM chez vous. Il va falloir chercher ailleurs la raison de votre soucis. - Vous trouvez une table
dc_comment_SPAM
(par exemple, le nom peut varier). Par conséquent, vous avez été victime d'une sanction douce et il va falloir la nettoyer un peu des SPAM présents puis la renommer.[4] - Vous ne trouvez aucune table commençant par
dc_comment
. Dans ce cas, vous avez eu droit à la sanction dure, c'est à dire suppression sans avertissement et il va falloir recréer cette table.[5]
Faites la même recherche pour la table dc_spamplemousse
et pour la table dc_galComment
si les plugins correspondants sont installés chez vous.
Retrouver les tables idoines
Voyons maintenant comment retrouver les tables nécessaires pour retrouver le fonctionnement normal de votre blog.[6]
Sanction douce
Vous avez été victime de la sanction douce, c'est-à-dire un simple changement de nom de table. Dans ce cas, il faut remettre le nom original des tables, soit dc_comment
, dc_spamplemousse
(si le plugin Spamplemousse est installé) et dc_galComment
(si le plugin Gallery est installé).
Pour renommer une table, toujours à l'aide de phpMyAdmin, l'outil de gestion de base fourni par Free, cliquez sur la table dans la colonne de gauche. Vous obtenez alors la structure de la table dans la partie droite, surmontée d'une série d'onglets. Cliquez sur l'onglet Opérations
. Dans le cadre intitulé Options pour cette table
, changez le nom de la table pour retrouver son nom original (voir plus haut) et cliquez sur le bouton Exécuter
.
Répétez l'opération pour toutes les tables identifiées comme ayant été objet de la sanction.
Puis, avec l'interface d'administration de Dotclear[7] prenez le temps de supprimer soigneusement tous les SPAM qui polluent vos tables.
Rendez-vous ensuite au chapitre intitulé « Se protéger et éviter la sanction » un peu plus bas.
Sanction dure
Vous avez été victime de la sanction dure, c'est-à-dire que la ou les tables ont été supprimées. Dans ce cas il va falloir les recréer. Pour cela vous allez utiliser phpMyAdmin, l'outil de gestion de base fourni par Free. Cliquez sur n'importe quelle table listée dans la colonne de gauche, puis sur l'onglet SQL
(normalement le 2ème) qui s'affiche.
Attention, dans les codes SQL qui suivent, remplacez éventuellement le dc_
dans le nom des tables (première ligne des codes) si vous utilisez un autre préfixe pour votre blog.
Si vous n'avez pas le plugin SpamClear installé chez vous, copiez le code ci-dessous et collez-le dans le champ affiché sous l'intitulé Exécuter une ou des requêtes sur la base…
de phpMyAdmin :
CREATE TABLE `dc_comment` ( `comment_id` int(11) NOT NULL auto_increment, `post_id` int(11) NOT NULL default '0', `comment_dt` datetime default NULL, `comment_upddt` datetime default NULL, `comment_auteur` varchar(255) default NULL, `comment_email` varchar(255) default NULL, `comment_site` varchar(255) default NULL, `comment_content` longtext, `comment_ip` varchar(15) default NULL, `comment_pub` int(1) default '0', `comment_trackback` int(1) NOT NULL default '0', PRIMARY KEY (`comment_id`), KEY `fk_comment_post` (`post_id`) );
Si au contraire vous avez le plugin SpamClear installé, utilisez alors le code suivant :
CREATE TABLE `dc_comment` ( `comment_id` int(11) NOT NULL auto_increment, `post_id` int(11) NOT NULL default '0', `comment_dt` datetime default NULL, `comment_upddt` datetime default NULL, `comment_auteur` varchar(255) default NULL, `comment_email` varchar(255) default NULL, `comment_site` varchar(255) default NULL, `comment_content` longtext, `comment_ip` varchar(15) default NULL, `comment_pub` int(1) default '0', `comment_trackback` int(1) NOT NULL default '0', `spam` int(1) NOT NULL default '0', `trained` int(1) NOT NULL default '0', PRIMARY KEY (`comment_id`), KEY `fk_comment_post` (`post_id`) );
Puis cliquez sur le bouton Exécuter
pour créer la table des commentaires et rétroliens des billets.
Si vous avez le plugin Spamplemousse installé chez vous, copiez et collez le code ci-dessous pour créer la table tampon du plugin :
CREATE TABLE `dc_spamplemousse` ( `comment_id` int(11) NOT NULL auto_increment, `post_id` int(11) NOT NULL default '0', `comment_dt` datetime default NULL, `comment_upddt` datetime default NULL, `comment_auteur` varchar(255) default NULL, `comment_email` varchar(255) default NULL, `comment_site` varchar(255) default NULL, `comment_content` longtext, `comment_ip` varchar(15) default NULL, `comment_pub` int(1) default '0', `comment_trackback` int(1) NOT NULL default '0', `comment_spamraison` varchar(255) default '', PRIMARY KEY (`comment_id`), KEY `fk_comment_post` (`post_id`) );
Puis cliquez sur le bouton Exécuter
pour créer la table.
Enfin, si vous avez le plugin Gallery installé chez vous, copiez et collez le code suivant pour créer la table des commentaires des galeries :
CREATE TABLE IF NOT EXISTS `dc_galComment` ( `comment_id` int(11) NOT NULL auto_increment, `img_id` int(11) NOT NULL default '0', `comment_dt` datetime default NULL, `comment_auteur` varchar(255) default NULL, `comment_email` varchar(255) default NULL, `comment_site` varchar(255) default NULL, `comment_content` longtext, `comment_ip` varchar(15) default NULL, `comment_pub` int(1) default '1', `comment_upddt` datetime default NULL, PRIMARY KEY (`comment_id`) );
Puis cliquez sur le bouton Exécuter
pour créer la table.
Vous voilà de nouveau avec les tables nécessaires au bon fonctionnement de votre blog.[8]
Se protéger et éviter la sanction
Pour éviter de se retrouver dans la même situation dans quelques temps, je vous encourage à lire et à appliquer ce que j'explique dans ces billets :
- Dotclear 1, Free et SPAM - Guide de survie
- Dotclear 1, Free et SPAM - Dans le code
- Dotclear 1, Free et SPAM - Un filtre de plus
C'est (presque) fini
Il ne vous reste plus qu'à ouvrir les commentaires et les rétroliens. Pour cela, il suffit de sélectionner le choix oui
pour les options Permettre les commentaires
et Permettre les trackbacks
, onglet Outils
, option Configuration de DotClear
, puis de valider en cliquant sur le bouton Enregistrer
(en bas de la page).
Fin
Dernier conseil : gardez un œil régulier sur ce qu'il se passe chez vous, on est jamais complètement à l'abri des voyous, ils ont beaucoup d'imagination !
Là c'est vraiment fini \o/
Notes
[1] Je n'ai pas encore eu connaissance de problèmes avec d'autres tables que celle des commentaires.
[2] Il se peut que le préfixe dc_
des tables soit différent pour votre installation. En effet c'est le préfixe par défaut proposé à l'installation mais vous pouvez très bien avoir utilisé un autre préfixe, par exemple pour stocker les tables de plusieurs blogs dans la même base de données.
[3] Il s'agit de ceux utilisés pour vous connecter à votre base de données, ceux qui sont précisés dans le fichier conf/config.php
de votre installation Dotclear. Voir les valeurs définies pour les constantes DB_USER
et DB_PASS
.
[4] Dans ce cas vous conservez la totalité des commentaires présents dans ces tables, SPAM compris, d'où le nettoyage nécessaire sinon la sanction risque d'être plus dure la prochaine fois.
[5] Dans ce cas vous avez perdu les commentaires des tables correspondantes, à moins, bien sûr, que vous possédiez une sauvegarde récente de votre base de données.
[6] Il se peut que vous soyez confronté à deux types de sanction en fonction des tables. Repérez alors les instructions correspondantes à votre cas pour chacune des tables dans les deux sections qui suivent.
[7] Vous pouvez aussi utiliser l'outil de gestion de base de données de Free, phpMyAdmin, pour le faire si vous le jugez plus aisé.
[8] Il est possible de restaurer le contenu de ces tables à partir d'une sauvegarde récente, mais j'ai choisi de ne pas en parler ici pour ne pas surcharger ce billet déjà fort long.
1 De tomlameche -
Et ben merci beaucoup pour les explications ! Incroyable qu'elles ne viennent pas de l'hébergeur lui même : je me suis retrouvé du jour au lendemain avec un site inaccessible et la suppression directe des tous les commentaires du blog... c'est assez honteux comme procédé... Je vais quitter free vite fait et ne plus y revenir à l'avenir...
A+ Tom
2 De Blair -
Les différents dieux disponibles sur le marché te bénissent un million de fois.
J'ai eu le même type de mésaventure, sauf que chez moi, la table dc_spamplemousse a disparu (détruite par free, je suppose), et ne semblait pas vouloir se récréer en réinstallant le plugin. J'ai dû la recréer avec phpMyAdmin (en recopiant une table trouvée sur Internet et sans trop comprendre ce que je faisais). Du coup ça a l'air de refonctionner.
En revanche, faut-il aussi nettoyer la table dc_log? (je n'y connais rien du tout, ma question n'a peut-être aucun sens).
Ce sont les spams qui les ennuient, uniquement? Pas les visites aléatoires de robots? Et ça ne sert à rien de changer mon répertoire dotclear de place?
Gros bisous, en tout cas. Si, j'insiste.
3 De Franck -
La table
dc_log
peut être vidée sans danger ou gardée telle quelle. Ce n'est pas elle qui est visée par Free de toute façon. Pour une utilisation personnelle (un seul auteur), je ne vois pas trop l'interêt de conserver son contenu, du coup je la vide régulièrement, surtout avant de faire une sauvegarde (c'est toujours ça de gagné).Changer le répertoire de place va provoquer un changement des URLs, mais n'empêchera pas qu'au bout d'un certain temps, les robots spammeurs reviennent s'occuper du blog, donc … voilà ;-)
4 De Blair -
Ah ok. Merci pour la réponse. Je répugne à vider dc_log par obsession morbide de la traçabilité du passé. Mais je vais faire un travail sur moi.
5 De Droop -
Sur mon vieux blog cette mésaventure m'est arrivée, j'ai pu renommer la table dc_comments et ainsi faire réapparaitre correctement la page d'accueil du blog... par contre, dès que l'on clique sur un article ou un commentaire, un message de type "HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts " apparait. Voir l'exemple ici. Quelqu'un d'où cela peut-il venir ?
6 De Franck -
Attention, cette série de billet ne concerne que Dotclear 1 et pas Doclear 2. Le problème vient peut-être de là ?
7 De Droop -
Free s'attaquant également aux blogs sous Dotclear 2, c'est pourquoi je me suis permis de poster ici. Il s'agit d'un problème liè à la base de données, je pense donc, mais peut-être à tors, que c'est indépendant de la version de Dotclear.
8 De Franck -
Justement pas, car les schémas des bases de données des deux moteurs sont différents et cela suffit à provoquer ce problème.
9 De Droop -
D'accord, je ne savais pas... je vais essayer de voir du côté du forum de Dotclear, même si je ne suis pas sûr que ce soit le lieu adéquat !