Panneau d'administration des commentaires

bazooka07bazooka07 PluXml Lead Developer, Moderator
décembre 2017 modifié dans Modifications
J'ai envoyé un pull-request sur Github pour avoir le panneau d'administration des commentaires un peu plus "sexy"
Voir une copie d'écran

* Limite la hauteur d'affichage du commentaires (les spams de 12Koctets occupent beaucoup de place sur l'écran si on ne les bride pas)
* affiche l'adresse IP et le drapeau du pays
* accès direct sur le site du spammeur (rel="noreferrer ...")
* affiche l'Id de l'article

Parce que recevoir 116 spams en guise de commentaires pendant 4 jours, cela énerve un peu
Et pour cela filtrer tout ce bazar, un plugin s'impose.

Vous pouvez le récupérer sur mon dépôt Github, branche comments-1712 :
[== bash ==]
git clone https://github.com/bazooka07/PluXml.git -b comments-1712

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Apparemment peu d'hébergeurs proposent le module PHP GeoIp.

    Pour pallier à cela, vous pouvez télécharger le plugin kzIpInfo.
    Il faut recharger la branche comments-1712 aussi.
  • je suis pas sûre qu'afficher soit très utile. perso, ça ne m'aide pas beaucoup.
    de toute façon, on te spamme surtout sur le dernier article.

    limité la hauteur du commentaire, c'est bien vu ;)
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @niqnutn,

    Qui peut le plus peut le moins, comme dit le proverbe.

    Perso, je me suis pris, ces derniers jours, 116 spams en guise de commentaire sur un article paru en octobre 2016.

    * Déjà, comme tu le dis si bien, limiter la hauteur d'affichage des commentaires quand ils pèsent 12Ko, cela aide.
    * Ensuite afficher, l'identifiant des articles permet de voir les articles "agressés" et d'éventuellement de bloquer les commentaires pour ces articles en particulier
    * Parcourir les images de drapeaux va plus vite que d'essayer de regrouper des adresses IP.

    J'avais dans l'idée qu'on pouvait regrouper les adresses IP par sous-réseaux, style xxx.xxx.xxx.xxx / 24, mais ce n'est pas évident.

    Au final, j'ai commencé à développer un plugin qui permet de bloquer ou d'effacer les commentaires selon les adresses IP, les courriels et les sites web.
    Il manque les user-agents mais PluXml ne les enregistre pas.

    On pourrait très bien imaginer de ne pas afficher le formulaire de commentaire pour certaines adresses IP ou certaines régions du monde.
    Je me passerai bien de recevoir une centaine de commentaires en provenance de St-Petersbourg (Russie) .

    Je ne suis pas convaincu que les commentaires soient directement envoyés par un hacker. Mais plus par un malware installé sur le PC d'un pauvre newbie.
  • je ne sais pas si le user-agent et le referer sont utiles pour détecter les spams ? et si ça serait utile de les enregistrer ?

    pour l'id de l'article, on retrouve en partie cette info dans "Liste des articles" avec le nombre de commentaires non validés / validés
    peut être que ça pourrait être utile de pouvoir filtrer par id comme sur la page des articles ?

    pour le spam, je pense qu'il y a déjà pas mal de choses qui ont été proposées (captcha, liste blanche / noire, ...).
    par contre, je me demande s'il ne serait pas intéressant de garder ces spams dans un coin pour pouvoir en récupérer des infos utiles plutôt que de les supprimer.
    en même temps, je ne suis plus embêté depuis un moment par le spam et vu que mon site n'est plus référencé, on risque pas de s'aventurer chez moi :D
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Je reviens sur mon idée d'afficher ou non le commentaire selon la tête du visiteur ( adresse IP, zone géographique, langue, user-agent, ...)

    Dans le thême par défaut, on a ce bout de code pour autoriser les commentaires :
    [== PHP ==]
    <?php if($plxShow->plxMotor->plxRecord_arts->f('allow_com') AND $plxShow->plxMotor->aConf['allow_com']): ?>
    
    Il n'y a pas de hook ! Impossible d'autoriser les commentaires avec un plugin.

    Il faudrait une function comme ceci :
    [== PHP ==]
    plugin::enableComment() {
       if($plxShow->plxMotor->plxRecord_arts->f('allow_com') AND $plxShow->plxMotor->aConf['allow_com']) {      
         eval($this->plxMotor->plxPlugins->callHook('plxShowEnableComment'));
         return true;
       } else {
          return false;
       }
    }
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    @bazooka07: utilise le hook plxMotorConstruct pour modifier à la volée le paramètre aConf et si tu veux intervenir au niveau de l'article tu peux passer par le hook plxMotorParseArticle pour toucher à $art

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour Stéphane,

    serait-il possible avec ces informations de créer un plugin qui permette de "fermer" tous les commentaires au bout d'un nombre de jour définissable après la date de publication ? Pas forcément automatiquement, avoir à cliquer sur un bouton pour réaliser la manœuvre de temps en temps n'est pas trop contraignant.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Dans l'édition de l'article, tu peux désactiver les nouveaux commentaires. Mais c'est manuel.
  • StéphaneStéphane Member, Former PluXml Project Manager
    kowalsky a écrit:
    Bonjour Stéphane,

    serait-il possible avec ces informations de créer un plugin qui permette de "fermer" tous les commentaires au bout d'un nombre de jour définissable après la date de publication ? Pas forcément automatiquement, avoir à cliquer sur un bouton pour réaliser la manœuvre de temps en temps n'est pas trop contraignant.

    c'est noté
    https://github.com/pluxml/PluXml/issues/276

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • @kowalsky: je crois que ça a déjà été discuté et il y a peut être un plugin qui existe déjà.
  • bazooka07 a écrit:
    Dans l'édition de l'article, tu peux désactiver les nouveaux commentaires. Mais c'est manuel.

    Tout à fait. Mais ce serait pour éviter de se taper tous les messages un par un :) Le faire manuellement prend du temps si le suivi n'est pas régulier ou si l'on écrit beaucoup d'articles par semaine ou mois.

    @niqnutn : je n'ai rien trouvé sur le sujet avant de poster le message. Aurais-tu un lien ?

    @Stéphane : oh super. En complément, serait-il possible d'avoir une sélection "par défaut" du nombre de jour avant fermeture des commentaires depuis le panneau d'administration "Configuration de base" (comme pour "Autoriser les commentaires", quelque chose comme "Fermer les commentaires au bout de X jour ? Oui/Non" et "valeur de x par défaut : 30") ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    J'aurais rajouter un nombre limité de commentaires à modérer.

    Cela peut aider au retour de vacances.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    J'ai publié une nouvellle version du plugin kzIpInfo.

    Je rappelle que ce plugin permet d'afficher le drapeau du pays depuis lequel a été ebvoyé le commentaire. Il affiche également la ville quand c'est possible.
    il récupère l'attribut data-ip du le container qui recevra les infos de géo-localisation. Il est essentiellement réalisé en Javascript. Donc pas de contrainte particulière pour le serveur de votre hébergeur.

    Le site http://ipinfo.io est un peu lent à répondre. Cette version 1.0 apporte plusieurs améliorations :
    * les requêtes vers le site se font de manière asynchrone. On n'attend pas la réponse du site pour afficher la page
    * Il y a un système de cache basé sur sessionStorage qui conserve les infos de géolocation quand on passe d'une page HTML à l'autre. On est limité à 256 adresses IP par programmation (constante maxIPs)
    * l'affichage des drapeaux se fait avec un "gros" sprite qui regroupe les drapeaux de 235 pays. En clair, il n'y a qu'un seul fichier image à télécharger pour tous les drapeaux à afficher.
    On peut revenir à un affichage drapeau par drapeau en modifiant la constante de class kzIpInfo::SPRITES. Le sprite est généré par un script python assez simple à partir des images des 235 drapeaux.

    Même adresse de téléchargement que précédemment.

    D'autres plugins pour faire cette même tâche, mais utilisant des sources d'informations différentes (Maxmind, Ip2location, ...) seront publiés prochaienement .
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Le plugin kzIpInfo passe en version 1.1.0 Télécharger.

    Le plugin embarque les images des drapeaux de chaque pays en une seule image.

    Il y a quelques explications sur le blog https://kazimentou.fr.

    La branche comments-1712 a été mise à jour sur mon dépôt.
    [== bash ==]
    git clone https://github.com/bazooka07/PluXml.git -b comments-1712
    
    [list=*]
    [*]J'ai abandonné l'idée d'utliser la librairie Geo-iP prise en charge par PHP car apparemment aucun hébergeur ne la propose[/*]
    [*]L'affichage a été optimisé quand la liste des commentaires ne concerne qu'un seul article[/*]
    [*]les informations de géo-localisation s'affichent maintenant dans l'édition du commentaire[/*]
    [*]Dans l'édition d'un article, on n'affiche plus de lien vers zéro commentaire[/*]
    [/list]

    Prochaine étape Recenser les adresses IP qui vous envoient des commentaires pourris et les mettre en liste noire pour les priver de commentaire, voire leur interdire l'accès au site ( les erreurs 500 ou 300 vont pleuvoir )
Connectez-vous ou Inscrivez-vous pour répondre.