Lufi 0.03 est sorti !

Après plus d'un an, voici une nouvelle version de Lufi ! Cette nouvelle version aurait du être l'occasion d'une refonte de l'interface en utilisant VueJs mais j'ai pris énormément de retard sur mon apprentissage de celui-ci, donc ça sera pour la version suivante.

Le développement de la nouvelle version n'a pas pris un an, loin de là, mais comme ce n'est pas le seul logiciel que je maintiens (loin de là), bah voilà.

Vous pouvez tester la nouvelle version sur l'instance de démonstration : https://demo.lufi.io.

Liste non exhausive des changements

Pour les utilisateurs :

  • Amélioration de la vitesse au niveau client via l'utilisation de mes plugins Mojolicious GzipStatic et StaticCache, qui compressent les fichiers statiques et leur adjoint un en-tête de cache navigateur ;
  • Possibilité de choisir la langue de l'interface (là où le choix se faisait automatiquement via les préférences du navigateur) ;
  • Affichage de la taille du fichier lors de l'envoi ;
  • Affichage de la taille maximale acceptée des fichiers ;
  • Ajout des traductions en arabe et en allemand ;
  • Ajout d'une tâche récurrente pour provisionner en avance des adresses de fichier. Pour les utilisateurs, ça se traduit par des pages qui sont envoyées bien plus rapidement.

Pour la modération :

  • Il y a possibilité pour l'admin de modifier un champ en base de données pour bloquer le téléchargement d'un fichier, tout en affichant la raison (contenu illégal, violation des CGU, etc. Les raisons sont configurables) au téléchargeur. Cela n'est pas très pratique (bidouiller en base de données), mais c'est un pas en avant ;
  • Possibilité de signaler simplement un fichier aux admins d'une instance.

Pour la sécurité :

  • Mise à jour de la bibliothèque javascript de chiffrement SJCL ;
  • Gestion d'une éventuelle exception si l'entropie du navigateur est trop faible pour générer correctement une clé de chiffrement ;
  • Ajout de jetons CSRF à la connexion et à la déconnexion (si l'authentification est utilisée, bien sûr) ;
  • Ajout de contraintes sur l'envoi de mail pour éviter de se retrouver à envoyer des spams.

Pour les développeurs :

  • Utilisation de Mojo::SQLite à la place d'ORLite pour l'utilisation d'une base SQLite. Ce changement de module me permet de réduire énormément le code de la couche d'abstraction de la base de données : Mojo::SQLite a la même syntaxe que Mojo::Pg, du coup, c'est le même code pour les deux bases de données.
  • Création et utilisation de plugins Mojolicious personnels. Ces modules ne sont pas publiés sur le CPAN car très fortement liés à ma manière d'utiliser le framework Mojolicious. La publication de modules personnels sur le CPAN est déconseillée pour ne pas le polluer, mais Carton, le gestionnaire de dépendances que j'utilise permet de spécifier l'URL de téléchargement des modules. Je peux donc utiliser les tarballs fournis par Framagit. L'intérêt de l'utilisation de modules personnels est de mutualiser le code commun à mes différents logiciels, de ne plus me répéter et de répercuter une correction ou une amélioration d'un logiciel à un autre bien plus facilement ;
  • Ajout d'un code de conduite ;
  • Ajout d'une suite de tests, lancée automatiquement à chaque push grâce à l'intégration continue de Gitlab.

Pour les admins :

  • Support de MySQL : comme le code de la couche d'abstraction a été simplifié, il suffit d'utiliser un module possédant la même syntaxe que ceux des deux autres bases de données pour ajouter le support d'une nouvelle base. Grâce à Mojo::mysql, ça s'est fait très facilement.
  • Ajout d'une commande pour migrer simplement d'une base de données SQLite à un autre type de base.
  • Il y a maintenant une option dans la configuration pour obliger tous les fichiers à être supprimés après le premier téléchargement.
  • Il y a maintenant un en-tête Content-Security-Policy par défaut, qui devrait convenir à la plupart des installations. Cet en-tête est bien évidemment surchargeable dans la configuration.

Hackpéro

Il est à noter que cette version a été présentée au Hackpéro qui a eu lieu à Paris le 26 octobre dernier (un genre de hackathon spécialisé recherche de bugs ou de vulnérabilités). Je tiens à remercier grandement l'équipe de Bounty Factory qui m'a contacté pour me le proposer, ainsi que les bug hunters qui y ont participé.

Artwork Lufi

Je vous ai déjà présenté l'artwork pour Lutim dans mon article précédent. J'avais aussi commandé à Soniop un artwork pour Lufi !

Cliquez pour avoir l’image origi­nelle (en grande taille)

Comme pour Lutim, c'est en CC-BY-SA (fichier source Photoshop).

Installation

La meilleure façon d'installer Lufi est de suivre les instructions du wiki.