Dual Blog : DeFr's Weblog

Dual Blog libéré | jeudi 20 mars 2008, 15h07

Mood: Goggle

Utilisateur de logiciels libres depuis de longues années déja, programmeur, je n'avais pourtant, jusqu'à présent, rien réellement sorti sous une license libre qui puisse être particulièrement utile à d'autres... Probablement pour plusieurs raisons, notamment un certain perfectionnisme (vouloir publier du beau code, essayer d'optimiser un certains nombres de choses, ...) et un relatif manque de confiance dans l'utilité que mes divers utilitaires pourraient avoir pour d'autres. Cela a, d'un point de vue technique, changer lorsque j'ai commencé à mettre en ligne, par exemple, les codes pour les différents projets que j'ai effectué à l'ECN, une instance de Trac ayant même été crée pour le projet de groupe, mais cela est resté relativement marginal, d'une part due à l'absence de publicité faites à ces divers référentiels, et d'autres part à la spécificité de ces projets, qui présentent relativement peu d'interet pour les personnes étrangères à Centrale Nantes.

Cela a commencé à changer lorsque j'ai commencé, l'année passé, à travailler sur une classe en PHP de templates, basé sur XML, XPath et DOM, librement inspiré des principes de XML::Template. Je cherchais une solution de ce genre depuis un certain temps, et j'avais envie d'un projet pour tester Mercurial, le petit système distribué de controle de version (DVCS pour les intimes) qui a mes faveurs depuis plus d'un an déja. J'ai donc profité de l'occasion pour combiné les deux, et de publier le référentiel. Je me suis assez rapidement convaincu du potentiel de cette solution pour avoir une séparation propre des couches de présentations et de logique du code, en envoyant l'ensemble du XHTML dans les divers fichiers XML de templates, mais j'avoue qu'il devait être relativement difficile de juger du potentiel réel de la solution en se basant uniquement sur les quelques exemples que j'avais inclu dans le référentiel afin de servir de tests unitaires me permettant d'éviter les régressions.

En conséquence, j'ai décidé de l'appliquer sur quelques choses de plus gros. La cible évidente aurait été Méga-Poudlard, mais deux facteurs importants m'ont fait lui préférer Dual Blog, du moins dans un premier temps:

  1. Je pensais qu'il s'agissait de la bonne solution, mais j'avoue que je conservais quelques doutes sur la flexibilité du système, et notamment sur la possibilité de s'adapter à plus ou moins n'importe quelle structure XHTML. J'ai donc préféré commencer par un projet de nettement moins grande envergure:-)
  2. Je souhaitais l'utiliser dans un projet qu'il me serait possible de libérer ensuite. En l'état, c'était parfaitement envisageable pour Dual Blog, nettement moins pour Méga-Poudlard.

J'ai donc commencé à ré-écrire Dual Blog, en utilisant au maximum ces templates: cet effort s'est conclu en novembre dernier, moment où j'ai mis en ligne la nouvelle version, présentant une caractéristique fort plaisante: la possibilité d'utiliser exactement le même code pour la génération de la page en xhtml ou du flux de syndication Atom, au moyen d'un simple chargement de modèles différents. J'aurais probablement pu rendre public le code à ce moment là, toutefois, l'utilité en aurait été réduite: le code comportait en effet un certain nombre de présupposé sur l'adresse ou il résidait (sous-répertoire /blog par endroit, adresse complète dans d'autres, comme il est possible de le voir ), présupposait que les tables correctes soient crée en base de données... Quelques problèmes somme toutes embettant pour qui aurait voulu tester le tout ^^... La bonne nouvelle, c'est que je les ai récement régler, notamment en ajoutant un installeur.

Je voulais aussi faire un petit audit de sécurité du code avant de le publier, puisque ce dernier fonctionne en direct sur ce serveur, et qu'il m'aurait ennuyer de me retrouver avec une faille exploitée. L'interface d'administration repose entièrement sur l'authenfication de l'utilisateur via le serveur web, donc si le serveur web possède lui même une faille a ce niveau, le code est vulnérable... Mais il est probable que de plus grosses proies tombent avant ce weblog :-) D'autre part, le code valide les données qu'il recoit (notamment via l'utilisation d'une classe Requete fort pratique crée lors de mon premier stage chez OWS), donc ça devrait aller. Si toutefois vous trouver un problème manifeste, un petit mail à webmaster AT defr DOT org serait fortement apprécié ^^;

Shadow à 18h48, le jeudi 20 mars 2008
Petite question concernant Dual-Blog : il n'y a apparemment aucun test anti robot spammeur, est-ce que ce n'est pas un souci potentiel ?

DeFr à 20h11, le jeudi 20 mars 2008

Jusqu'à il y a en gros un an, il n'y avait littérallement aucune protection contre le spam, et ce n'était pas un problème parce que je n'étais pas réellement une cible, j'avais réussi à échapper aux mailles du filet pour une raison mystérieuse mais dont je ne me plaignais pas ;-) Malheureusement depuis, j'ai été repéré, et j'ai par conséquent testé plusieurs dispositifs possibles, sans vouloir utiliser de captcha pour deux raisons: ils ont des problèmes non négligeables en terme d'accessibilité d'une part, et ils sont cassables informatiquement d'autre part. La solution sur laquelle je suis arrivé en ce moment, c'est l'utilisation d'Akismet, un service visant à lutter contre le spam au niveau mondial, et assez spécialisé dans la lutte du spam provenant des commentaires sur les blogs.


Très concrètement, pour chacun des commentaires qui sont postés, on vérifie (ligne 25) auprès du serveur d'Akismet la probabilité que le message soit ou non du spam, en fonction du contenu du message, de l'auteur, de l'ip, ... Si Akismet pense que ce n'est pas du spam, je l'affiche directement (et m'envoie un mail m'informant de la publication du commentaire), sinon, ca passe en modération, et je recois quotidiennement un mail me lisant les commentaires qui ont été placés dans cette file de modération.


Je n'ai pour le moment pas eu un seul faux positif, et les commentaires qui passent au travers des mailles d'Akismet sont relativement rares, donc je reste là dessus pour le moment. En toute objectivité, il y a quand même deux problèmes avec Akismet: d'une part, il s'agit d'une boite noire sur laquelle on n'a pas réellement de controle, et d'autre part il est necessaire de créer un compte WordPress (gratuitement) pour pouvoir accéder au service. Le deuxième problème part toutefois d'un bon sentiment: en obligeant les gens à avoir un compte, on évite qu'un grand nombre de spammeurs utilise le service en prétendant que leur spam a été considéré comme tel par erreur, faussant l'algorithme bayesien qui se trouve probablement derrière.


Revenir au blog
Vous souhaitez ajouter un nouveau commentaire ? Faites donc, il vous suffit de remplir le petit formulaire ci-dessous.
Sites visités