I develop stuff and have opinions on things -
About me/Contact

Articles:

PleaseShare 0.5

Après une grosse période d’inactivité sur PleaseShare, j’ai enfin pris mon courage à deux mains pour le réécrire depuis Django 1.6 vers Flask (et python 3.4 au passage). La raison principale est que Django m’apparaissait comme très lourd pour le peu que je lui demandais, ainsi que le côté désagréable de devoir me plonger dans l’API à chaque nouvelle version pour voir ce qui a cassé.

Introduction à PleaseShare

J’ai déjà détaillé PleaseShare dans 1, 2, 3 et 4, mais pour la peine, je vais remettre une petite couche.

L’idée principale est d’utiliser la fonctionnalité des webseeds de bittorent afin d’avoir un service d’hébergement de fichiers qui est :

  1. Auto-hébergé
  2. Rapide même si auto-hébergé (exemple : ADSL)
  3. Résistant aux attaques (DDoS du serveur, par exemple)
  4. Facile à utiliser

L’utilisation des webseeds permet à PleaseShare de fournir des téléchargements qui sont au moins aussi rapides que des téléchargements HTTP classiques, mais qui deviennent plus rapides avec un plus grand nombre de téléchargeurs.

Réécriture

Même si j’écris « réécriture », en réalité j’ai pu conserver le style, la plupart des templates, ainsi que le code de gestion des torrents. J’ai donc du seulement me débrouiller avec flask, avec les choses comme les traductions, les formulaires, et les embrouilles de csrf et compagnie.

J’en ai également profité pour réécrire tout le code de gestion des archives, qui était cassé et trouvé, et pour utiliser le module singledispatch de python 3.4 avec les annotations de python 3, pour avoir un code plus présentable.

Ajouts

  • Traductions qui dépendent de l’ Accept-language du navigateur. Seuls l’anglais et le français sont actuellement disponibles.
  • Accès via le sous-dossier d’un virtualhost ; auparavant on pouvait seulement le configurer sur un sous-domaine.
  • Ajout d’une page « Vos fichiers » qui ne dure que le temps de la session.
  • Un soupçon de javascript non-obligatoire pour rendre l’interface plus agréable
  • Un nouveau design plus moderne et épuré (merci cynddl)

Ce qui fonctionne encore

Tout, ce qui implique entre autres:

  • Upload d’archives (compressées ou pas) qui seront extraites pour créer des torrents à plusieurs fichiers
  • Liste d’autres trackers à utiliser dans le torrent, choisis par l’utilisateur
  • Liste d’autres webseeds à utiliser dans le torrent, choisis par l’utilisateur
  • Choix possible de créer un torrent privé (sans DHT) ou non
  • Ajout forcé de trackers lors de la création du torrent
  • Ajout d’autres webseeds connues du serveur (par exemple en synchronisant le dossier d’upload avec un autre serveur)
  • Tout ça est bien évidemment configurable

Liens

Si vous avez des remarques ou commentaires à propos de cet article, n’hésitez pas à me contacter.