Un nouveau logi­ciel libre : Lufi

Genèse

Après Lutim, qui permet d’hé­ber­ger des images, je me suis dit « Pourquoi me limi­ter aux images ? ». Et puis, ça m’em­bê­tait de chif­frer les images côté serveur. Bien sûr, pour pouvoir utili­ser les images dans des balises <img>, il fallait que le chif­fre­ment et le déchif­fre­ment se fasse côté serveur. Mais pour des fichiers, ça ne sert à rien.

J’ai donc pris exemple sur Zero­bin, qui chiffre le texte côté client, en utili­sant la biblio­thèque Stan­ford Javas­cript Crypto et qui met la clé dans une ancre dans l’URL.

Avec ça, j’ai repris le mode de fonc­tion­ne­ment de Lutim (qui lui-même est forte­ment pompé sur mon logi­ciel Lstu), j’ai saupou­dré de Boots­trap et de WebSo­cket et ça a donné Lufi !

Le logo de Lufi

Let’s Upload that FIle

Du temps, de la sueur, des larmes, un bon éditeur de texte, le meilleur frame­work web du monde et voilà Lufi !

Le prin­cipe est simple :

  • on dépose des fichiers dans la zone dédiée à cet effet ;
  • le javas­cript génère une clé de chif­fre­ment (diffé­rente pour chaque fichier) ;
  • le fichier est découpé en morceaux ;
  • chaque morceau est chif­fré et envoyé via WebSo­cket au serveur ;
  • vous récu­pé­rez deux liens : un lien de télé­char­ge­ment et un lien de suppres­sion.

Les bonus :

  • les infor­ma­tions sur les fichiers envoyés sont stockées en localS­to­rage sur le navi­ga­teur et une inter­face permet de visua­li­ser ces infor­ma­tions ;
  • on peut deman­der à ce que le fichier soit supprimé dès le premier télé­char­ge­ment ;
  • on peut défi­nir un délai d’ex­pi­ra­tion après lequel le fichier est supprimé.

Pour les admins/déve­lop­peurs :

  • les instruc­tions d’ins­tal­la­tion sont sur le wiki ;
  • on peut défi­nir des paliers de tailles, forçant le délai de suppres­sion. Exemple : les fichiers de moins de 10Mio pour­ront rester 60 jours, ceux entre 10Mio et 50Mio, 30 jours et au-delà de 50Mio, 2 jours. Cela permet de limi­ter l’uti­li­sa­tion de l’es­pace disque ;
  • le code est sous licence AGPL v3 et le code est sur le Gitlab de Frama­soft avec un miroir sur Github ;
  • c’est codé en Perl avec le frame­work Mojo­li­cious, la biblio­thèque Stan­ford Javas­cript Crypto, du Twit­ter boots­trap pour le CSS, des icônes piochées sur Fontello et la biblio­thèque Moment.js. Tout le javas­cript est écrit en Vanilla Javas­cript.

Pour le logo :

  • phoné­tique­ment parlant, en français, Lufi sonne comme Luffy, le person­nage prin­ci­pal du manga One Piece. Luffy est surnommé « Chapeau de paille », et comme Lutim avait déjà un chapeau pour logo… Un coup d’inks­cape, et hop ! (Lstu a d’ailleurs récem­ment gagné un chapeau comme logo)

Frama­drop

Lufi sera le logi­ciel utilisé par Frama­soft pour propo­ser le service Frama­drop1 dans le cadre de l’opé­ra­tion Dégoo­gli­sons Inter­net.

Par ailleurs, la saison 2 de la campagne de Dégoo­gli­sa­tion a commencé aujourd’­hui : n’hé­si­tez pas à soute­nir Frama­soft pour qu’on puisse conti­nuer !

Bon alors, c’est où qu’on clique ?

Contrai­re­ment à Lutim, je ne propo­se­rais pas d’ins­tance offi­cielle, juste une instance de test : https://demo.lufi.io (héber­gée par Frama­soft, comme Erco, merci à eux :D).

En effet, il risque d’y avoir besoin de pas mal d’es­pace disque pour opérer un service comme celui-ci. Je ne peux pas me permettre finan­ciè­re­ment de prendre un serveur pour ça, ni deman­der à Frama­soft de me prêter une VM pour ça, alors qu’on propo­sera Frama­drop à la fin de la semaine.

Nota Bene

Alors, non, c’est pas parce que Frama­soft voulait sortir un tel service que j’ai codé Lufi, c’est plutôt parce que je voulais coder Lufi que Frama­soft propose Frama­drop. Frama­soft ne fait toujours pas de code (excepté Frama­date). J’ai codé Lufi en dehors de Frama­soft bien que j’en sois membre.

Lufi est encore jeune, donc si vous repé­rez des problèmes, n’hé­si­tez pas à ouvrir un ticket !

3 réflexions au sujet de “Un nouveau logi­ciel libre : Lufi”

    • > Du coup, j’arrête le développement de Coquelicot ?

      C’est toi qui vois 😀 Tu peux plutôt prendre des trucs de chez moi (genre chiffrement côté client) pour les intégrer à Coquelicot : c’est toujours bon d’avoir le choix entre les logiciels. Par exemple, j’aime beaucoup le « zero’ed files before removal », je vais te piquer l’idée => hop : https://git.framasoft.org/luc/lufi/issues/29

      Merci pour les tests d’intégration, faudra que je m’y penche un jour :p

      • Un des trucs que j’avais en tête pour « un jour », c’était de voir si c’était possible d’utiliser la même crypto côté client et côté serveur de façon à laisser le choix aux users d’utiliser JavaScript ou non.

        Dans les deux cas, je pense qu’on est sur un niveau de sécurité équivalent. Vu que c’est le serveur web qui fournit le JavaScript — à moins de partir sur un modèle avec des extensions façon CryptoCat — si le serveur est compromis, c’est cuit, quelque soit l’endroit où se fait le chiffrement.

Les commentaires sont fermés.