Bidouillage/Modération: commentaires hors-ligne si envoyé depuis certaines IPs

Bonsoir,

Ca faisait une semaine que je recevais des menaces de mort en commentaire, et bon, PluXML qui montre l'IP de l'auteurice: ça me faisait une belle jambe car quoi faire quand c'est comme ça?

Avec un blog tout publique dont pas mal d'abonnée RSS au fil de commentaires... Bref, au bout d'une semaine ça faisait bien tâche d'avoir des DIE/DIE/DIE à répétition (je ne suis pas en danger, ça vient à priori d'un⋅e gosse d'Inde au vue de la façon avec l'IP est même pas masqué/dérrière Tor/VPN).

Alors avec mes capacités limités en code (dessinateur de BD); j'ai du bidouiller un truc qui m'a pris la journée. Je suis venue le copier ici, car mon premier réflexe ce matin était de venir voir si quelqu'un⋅e avait déjà eu le cas.

La modification est dans core/lib/class.plx.motor.php , et détruit un peu ceux qui ont l'option "mettre tous les commentaires en modération avant publication"; j'ai réutilisé. Tout se passe dans la fonction public function newCommentaire($artId,$content) { autour de la ligne 920; après tous les $comment['site'] = ...., $comment['ip'] = ... J'ai mis se petit paragraphe:

$ip_to_moderate = array(
                    '116.*.*.*',
                    '125.*.*.*',
                    '157.*.*.*',
                    '117.*.*.*',
                    '223.*.*.*'
                );
                $blocked = false;
                $client_ip = $comment['ip'];
                foreach($ip_to_moderate as $ip) {
                    $digits = explode(".", $ip);
                    $client_ip_digits = explode(".", $client_ip);
                    if($digits[1] == '*' && $digits[0] == $client_ip_digits[0]) {
                      $blocked = true;
                      break;
                    } else if($digits[2] == '*' && $digits[0] == $client_ip_digits[0] && $digits[1] == $client_ip_digits[1]) {
                      $blocked = true;
                      break;
                    } else if($digits[3] == '*' && $digits[0] == $client_ip_digits[0] && $digits[1] == $client_ip_digits[1] && $digits[2] == $client_ip_digits[2]) {
                      $blocked = true;
                      break;
                    }
                }

C'est repris en partie de ce site web pour la méthode: https://www.phpjabbers.com/how-to-block-an-ip-address-from-visiting-a-website-php75.html ; et cette partie là va définir les plages d'adresses IP et aussi changer un marqueur $blocked = true; si l'auteurice du commentaire à une IP dans ces plages.

Ensuite, pour marquer le commentaire comme offline , c'est en faisant ça:

if($blocked == true) # On modère le commentaire => underscore
                    $comment['filename'] = '_'.$artId.'.'.$time.'-'.$idx.'.xml';
                else # On publie le commentaire directement
                    $comment['filename'] = $artId.'.'.$time.'-'.$idx.'.xml';
                # On peut créer le commentaire
                if($this->addCommentaire($comment)) { # Commentaire OK
                    # if($this->aConf['mod_com']) # En cours de modération
                    if($blocked == true) # En cours de modération
                        return 'mod';
                    else # Commentaire publie directement, on retourne son identifiant
                        return 'c'.$artId.'-'.$idx;
                } else { # Erreur lors de la création du commentaire
                    return L_NEWCOMMENT_ERR;
                }

Voilà; j'éspère que ça sera utile à certain⋅e⋅s, pour en finir avec cette plaie des menaces et humains ne respectant pas les codes de conduites élémentaires dans les espaces de discussions auto-hébergés.

Réponses

  • Salut Deevad

    "quoi faire quand c'est comme ça?" -> Porter plainte ?

    Sinon, n'aurait-il pas été plus pérenne de faire les modifications via un plugin ? Car à la prochaine MAJ du fichier, tu risques de tout perdre si tu as oublié avoir fait cette modif, et d'autre part cela éviterai d'avoir à saisir les IP en dur.

  • DeevadDeevad Member

    Porter plainte ?

    Sérieusement? =) C'est un peu sur-estimer notre police et système judiciaire de penser ça. Porter plainte contre X avec comme seul preuve une collection d'IP venant d'Inde, c'est inutile.

    Je le sais car ici, j'ai déjà porté plainte au comissariat locale. Ca prend une blinde de temps entre la salle d'attente, la déposition, le formulaire et les divers suivis. C'est très long et décevant (alors qu'il s'agissait dans mon cas de problèmes locaux, avec preuves vidéos, etc...). Alors, bon, j'imagine qu'au comissariat de ma petite ville; déposé ces IP, c'est un aller simple pour perdre une matinée et voir un policier pouffer de rire pendant ma déposition. J'ai déjà perdu un dimanche, merci, je vais éviter de vivre ça...

    Non, mon soucis, là: c'est PluXML qui donne l'adresse IP et dit à l'utilisateurice: "débrouille toi avec ça pour ta modération". Je trouve ça assez léger.

    Sinon, n'aurait-il pas été plus pérenne de faire les modifications via un plugin ?

    Oui, mais je n'ai pas le niveau pour ça, désolé. Je ne suis qu'un dessinateur de BD un peu débrouillard; pas un professionel du code. Donc je bidouille comme je peux, et les bribes ci-dessus m'ont pris déjà tout un Dimanche. C'est dire le temps que ça me prendrai la conception d'un plugin dédié!

    Aussi, petit rappel d'idée reçu sur les plugins: c'est pas la panacée pour être protégé des MAJ. J'en ai déjà eu une paire dans mon parcours qui ont cassé après des MAJ. Du coups, j'ai pas mal de bidouille manuel à faire pour mes MAJ, toujours. Donc une de plus, une de moins... ;)

  • P3terP3ter PluXml Project Manager

    Bonjour, c'est effectivement une fonctionnalité qui, je pense, manque à PluXml en natif. Elle fait partie des choses que je voudrais ajouter à la prochaine version majeur.

Connectez-vous ou Inscrivez-vous pour répondre.