Ça faisait longtemps que je n’avais pas touché 0bin, le pastebin chiffré côté client écrit en Python.
Le support de Python 2 devait s’arrêter en mai 2015, soit ce mois-ci. Cela a été repoussé à 2020, mais pour marquer le coup symboliquement j’ai porté notre brave bestiole qui supporte maintenant la 2.7 et la 3.4.
Comme je n’ai jamais pris le temps de faire des tests unitaires sur ce projet, il est possible que j’ai cassé des trucs. J’ai testé manuellement, mais bon, on ne sait jamais, je vous avertis avant du danger :)
Le portage a pris une après-midi.
Même si ce n’est pas l’affaire de deux minutes, ce n’est pas non plus la montagne qu’on s’en fait. C’est du boulot, chiant et ingrat (surtout pour supporter 2.x ET 3.x avec une seule base de code), mais pas un travail de titan.
Et en prime, ça me permet de faire un peu reparler du projet qui n’avait plus eu de mise à jour depuis un bail.
Il mérite d’ailleurs encore pas mal d’amour :
- Y a des issues qui sont toujours en attente sur github (certaines datent d’un an). Et c’est parce que je suis une merde procrastinatrice, il faut bien l’avouer.
- Quelques features comme la suppression de l’histo ou d’un paste en particulier seraient les bienvenues.
- Ca mériterait d’être porté à Angular. La lasagna jquery, c’est pas glop.
- Un client Python serait pas de refus, et donc une API, et donc une clé API.
- Une admin pour ses propres pastes avec URL jetable serait idéale. Mais faudrait changer le format de fichier des pastes, et donc versionner le format, et prévoir la migration des anciens.
- Une admin pour les DMCA s’est faite sentir pas mal de fois.
- Un script pour delete un paste en Python aussi.
- Et pourquoi pas un packaging sous forme de .deb ou .rpm ?
- Le support des bases de données n’a jamais été implémenté, c’est triste.
- On avait parlé d’en faire une version avec auto réplication sur ses amis pour éviter la censure.
- Et de faire un chat chiffré en dessous.
- Et un éditeur de paste collaboratif. Mais faudrait porter zerobin vers crossbar.io.
Bref, ce “petit” projet a de beaux jours devant lui. Sauf que pour l’instant, y a une seule limace qui code dessus.
P.S : j’ai aussi réparé le “Mail this”, qui n’utilise plus l’URL raccourcie. En effet cette dernière n’est pas dispo dès qu’on dépasse le rate de l’API google, ce qui arrive tous les jours maintenant. La rançon du succès je suppose.
Autant pour les librairies Python, je peux comprendre l’effort de vouloir supporter le + de versions de Python, autant pour les produits finis comme 0bin, vu que maintenant toutes les distributions Linux stables ont un Python 3 décent, si j’avais été à ta place, j’aurais droppé le support Python 2.
Outre le fait que tu t’évites une complexité en + dans ton code, c’est aussi une manière d’inciter les gens à passer à Python 3.
Surtout, comme tu le dis, je peux en témoigner, c’est assez facile de passer à Python 3: nous avons passé la plupart de nos daemons de Python 2+Twisted vers Python 3+AsyncIO, et cerise sur le gâteau, ça a permit de faire du cleanup dans le code.
C’est surtout pour les hosting cheap qui sont toujours en Python 2, les cons.
Salut l’équipe !
Je profite de cette bonne nouvelle pour féliciter l’équipe Sam&Max et pour vour remercier de tout le boulot qui est fait !
J’ai débuté réellement la programmation en Python (3.4) depuis novembre dernier et votre site m’a beaucoup facilité l’apprentissage du langage.
Je le consulte quotidiennement. Au boulot, la page d’accueil est bloquée mais avec une petite ‘url trique’ (euh.. trick !), je peux toujours y accéder !
Bon, bref, on s’en fout de ma vie mais en tout cas : merci beaucoup !
:)
Si tu veux éviter d’avoir à gérer des ratelimit, tu peux utiliser le raccourcisseur huitre, c’est pareil que google, sauf que c’est libre et hébergé par framasoft.
C’est une bonne idée mais je ne trouve pas de moyen d’utiliser leur api uniquement côté client car il faut faire une requête CORS.
Je n’ai jamais essayé de le faire avec du python, mais ça fonctionne relativement simplement avec wget :
alarig@pikachu /tmp $ wget “http://huit.re/a?lsturl=http://example.com&format=json” -O exemple.com
–2015-05-11 11:24:21– http://huit.re/a?lsturl=http://example.com&format=json
Résolution de huit.re… 78.46.248.82
Connexion à huit.re|78.46.248.82|:80… connecté.
requête HTTP transmise, en attente de la réponse… 301 Moved Permanently
Emplacement : https://huit.re/a?lsturl=http://example.com&format=json [suivant]
–2015-05-11 11:24:22– https://huit.re/a?lsturl=http://example.com&format=json
Connexion à huit.re|78.46.248.82|:443… connecté.
requête HTTP transmise, en attente de la réponse… 302 Found
Emplacement : / [suivant]
–2015-05-11 11:24:22– https://huit.re/
Réutilisation de la connexion existante à huit.re:443.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 82 [application/json]
Sauvegarde en : « exemple.com »
exemple.com 100%[================================================================================>] 82 –.-KB/s ds 0s
2015-05-11 11:24:22 (31,1 MB/s) — « exemple.com » sauvegardé [82/82]
alarig@pikachu /tmp $ cat exemple.com
{“short”:”http:\/\/huit.re\/DGZ22t6j”,”success”:true,”url”:”http:\/\/example.com”}
Donc en JS, dans le navigateur, et en cross domain.
Une suggestion que j’avais faite un jour à Sebsauvage, et qui je pense pourrait encore améliorer l’effet kisscool (ignorance is bliss) : faire en sorte que la correspondance urlfichier soit stockée en RAM.
Comme ça il suffit d’éteindre le serveur pour tout péter et compliquer la tâche de l’attaquant physique ;)
Un truc à mettre en option quand même.
On pourrait aussi utiliser un montage chiffré (récupérable plus tard).
De l’attaquant ? Quel attaquant ? Le but de zerobin n’est pas de protéger des données.
Juste pour dire merci pour le job :)
“0bin, le pastebin chiffré côté client écrit en Python”
“Le but de zerobin n’est pas de protéger des données.”
oO Redis-moi ça ?
D’ailleurs, en parlant des tests unitaires, la suite du «gros guide bien gras sur les tests unitaires en Python, partie 5» est dans les tuyaux ou tu en es encore à l’étape du «ouai, mais je vais peut-être faire ça avant…» qui se renouvelle perpétuellement ?
@Abc : CF la faq (http://0bin.net/faq/):
@Ryzz: planifié pour cette semaine si Jesus et Allah le veulent.
Question à propos de 0bin. Si l’objectif est d’assurer la sécurité de l’utilisateur, pourquoi avoir ajouté des publicité provenant d’un prestataire externe (D’après uBlock il charge: https://ads.exoclick.com/ads.js )
Justement, le but n’est PAS d’assurer la sécurité de l’utilisateur. Relis la citation de la FAQ, le but est de protéger l’hôte.
Néanmoins la publicité ne va rester que quelques jours, le temps de faire une démo à une banque. Après on retire tout ça, il nous fallait un truc pour justifier des revenus qui soit pas du cul :)