Un nouveau logi­ciel libre : Lufi

Le logo de 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 !

Erco : Exabgp Routes Control­ler

Pour les besoins du réseau Lothaire (aka « mon boulot »), j’ai écrit un service web permet­tant de pilo­ter Exabgp (logi­ciel permet­tant de faire des annonces de routes en BGP. C’est du Soft­ware-Defi­ned Networ­king) afin de lui ajou­ter ou de lui reti­rer des routes de façon simple, afin de faire du RTBH (Remo­tely Trig­ge­red Black Hole).

Ce logi­ciel (libre, bien sûr, comment pour­rait-il en être autre­ment ?), s’ap­pelle Erco (Exabgp ROutes COntrol­ler). Le site de présen­ta­tion est https://erco.xyz, et une démo est dispo­nible sur https://erco.xyz/demo/.
Soyez indul­gents sur le temps de char­ge­ment du site, c’est hébergé chez moi, derrière de l’ADSL.

Le service expose une API REST, ce qui permet à Erco d’être piloté par des programmes.

Pour les besoins du service, j’ai écrit un programme pour expo­ser l’API d’Exabgp, et inci­dem­ment, j’ai écrit un client en ligne de commande pour cette API.

Les sources d’Erco sont sur https://git.frama­soft.org/luc/erco.

Pour les curieux de tech­nique, le logi­ciel est écrit en Perl avec le frame­work Mojo­li­cious (bien sûr, comment pour­rait-il en être autre­ment ? 1).

1 : c’est pas parce qu’on n’est pas vendredi qu’on n’a pas le droit de trol­ler un peu 😛