đź’¬ Plugin de commentaires pour Bludit : parce que les existants me saoulaient
Ce blog tourne sous Bludit. Un CMS flat-file, sobre, sans base de données. Il fait exactement ce qu'on lui demande, et c'est pour ça que je l'ai choisi il y a un moment déjà . Mais Bludit a une lacune assez vite visible : le système de commentaires natif est anémique. Les plugins tiers ? Soit abandonnés depuis des années, soit dépendants de services annexes (Vanilla forum, Utterances, Disqus , etc). Donc j'ai bricolé une connerie.
Le besoin de départ était clair : modération, anti-spam sans captcha dégueulasse, protection CSRF, pagination, et la possibilité d'activer ou non les commentaires page par page. Parce que plusieurs articles ne justifient pas des commentaires. Bref. Rien d'exotique sur le papier, mais rien de vraiment disponible non plus.
Pour l'anti-spam, j'ai opté pour ALTCHA. Une alternative open source aux reCAPTCHA de Google et autres trucs merdiques, basée sur une preuve de travail résolue côté client, en tâche de fond. Pas de cookie tiers, pas de données envoyées ailleurs, et surtout aucune friction visible pour l'utilisateur. C'est exactement le genre de choix qui s'aligne avec ma philosophie : limiter les dépendances à la con et ne pas se faire chier.
Côté stockage, pas de base de données : les commentaires atterrissent en JSON dans bl-content/databases/bl-plugin-comments/, cohérent avec l'approche flat-file de Bludit. La modération se gère depuis l'admin avec un workflow minimaliste - en attente, publié, supprimé. La limitation de fréquence est configurable en secondes (0 pour désactiver, sinon c'est un blocage par IP sur la durée définie). Et un token CSRF est généré à chaque chargement du formulaire. Rien de sorcier, mais ça manquait.
Ce n'est pas un réseau social. Pas de réponses imbriquées, pas de likes, pas de notifications. C'est un système de commentaires, point.
![]() |
![]() |
![]() |
![]() |
Pour les curieux, voilĂ ce qu'il y a sous le capot.
Le plugin est en PHP (v1.2.1, compatible Bludit 3.x), avec un peu de CSS et de JavaScript pour la partie front. Aucune dépendance Composer, aucune librairie externe à installer — tout est embarqué directement dans le plugin.
ALTCHA est implémenté sans passer par un serveur tiers. Le challenge est généré en interne (SHA-256 + HMAC-SHA-256 avec une clé secrète auto-générée au premier lancement et stockée localement dans altcha-secret.txt), servi par le plugin lui-même via un endpoint dédié (?blc_altcha=challenge), et vérifié côté serveur à la soumission. Zéro appel externe.
CSRF : token généré avec bin2hex(random_bytes(32)), stocké en session, comparé avec hash_equals pour éviter les timing attacks. Classique mais solide.
Rate limiting : géré en JSON, par IP hachée (md5 — l'IP brute n'est pas stockée). Le délai est configurable en secondes depuis l'admin, avec purge automatique des entrées expirées à chaque passage. Mettre 0 désactive le mécanisme.
Stockage : tout passe par des fichiers JSON organisés par clé de page dans bl-content/databases/bl-plugin-comments/. Cohérent avec l'approche flat-file de Bludit, pas besoin de migrer quoi que ce soit. Les commentaires en attente et publiés sont dans deux fichiers distincts (pending.json / approved.json) par répertoire de page.
Le plugin embarque aussi un parser Markdown léger maison (gras, italique, code inline, liens, sauts de ligne) et supporte deux langues (FR / EN) via un système de traductions JSON avec chaîne de fallback.
Installation : copier le dossier dans bl-plugins/bl-plugin-comments/, activer depuis l'admin, ajuster les réglages. Si vous utilisez Bludit et cherchez quelque chose de propre et maintenu dans le genre, c'est fait pour vous. Et si vous avez de l'inspiration : licence CC BY-SA 4.0, PR bienvenues !
👉 GreenEffect/bludit-plugin-comments sur GitHub
👉 GreenEffect/bludit-plugin-comments sur la bibliothèque de Bludit




0 commentaire(s)
Aucun commentaire pour l'instant. Soyez le premier a commenter.
Laisser un commentaire