Un pastebin pour l'AFPy

Ça faisait longtemps que ce jeu de mot me trottait en tête, aujourd’hui j’ai commit ma bêtise :

=> https://p.afpy.org/

Le code est là pour ceux qui veulent bidouiller :

Oui ça manque d’un logo typiquement.

4 « J'aime »

C’est cool.
C’est quoi le délai de conservation ?

Pour le moment, infini, mais j’implémenterai évidement un garbage collector, avec une règle du genre “si le paste n’a pas été vu ces 365 derniers jours, le supprimer”.

Je compte aussi implémenter un moyen, pour l’auteur d’un paste, de le modifier ou de le supprimer.

1 « J'aime »

Je viens de déployer une petite mise à jour pour permettre d’envoyer plusieurs fichiers en même temps, cf. https://p.afpy.org/

Et j’ai mis à jour la fonction bash pour le faire :

$ paf *.py
| URL                     |   size | filename              |
|-------------------------|--------|-----------------------|
| https://p.afpy.org/7rFj |    188 | admin.py              |
| https://p.afpy.org/DLfp |    296 | context_processors.py |
| https://p.afpy.org/9o33 |      0 | __init__.py           |
| https://p.afpy.org/YdvG |   1419 | models.py             |
| https://p.afpy.org/97fG |    309 | urls.py               |
| https://p.afpy.org/oPRr |   2974 | views.py              |

Pendant que j’y suis j’ai fait en sorte de la fonction bash puisse lire sur stdin.

Finalement ça s’emboîte très naturellement, ça permet d’envoyer la liste des envois :

$ paf *.py | paf
| URL                     |   size | filename    |
|-------------------------|--------|-------------|
| https://p.afpy.org/L5pc |    488 | request.txt |

$ curl https://p.afpy.org/L5pc
| URL                     |   size | filename              |
|-------------------------|--------|-----------------------|
| https://p.afpy.org/7rFj |    188 | admin.py              |
| https://p.afpy.org/DLfp |    296 | context_processors.py |
| https://p.afpy.org/9o33 |      0 | __init__.py           |
| https://p.afpy.org/YdvG |   1419 | models.py             |
| https://p.afpy.org/97fG |    309 | urls.py               |
| https://p.afpy.org/oPRr |   2974 | views.py              |
1 « J'aime »

Prochaine étape : implémenter le PUT pour permettre de choisir l’URL…

Et penser si on veut fournir un .py, puis son résultat (donc plutôt en coloration bash ?)

Tu veux dire :

$ paf script.py
| URL                     |   size | filename   |
|-------------------------|--------|------------|
| https://p.afpy.org/aJAn |     10 | script.py  |

$ python script.py | paf
| URL                     |   size | filename    |
|-------------------------|--------|----===------|
| https://p.afpy.org/98VK |      3 | request.txt |

Sinon :

$ paf script.py <(python script.py) | paf
| URL                     |   size | filename    |
|-------------------------|--------|-------------|
| https://p.afpy.org/7bhp |    200 | request.txt |

Mais c’est un peu overkill ? :smiley:

Non, sur pasteque, tu peux sélectionner le type de coloration syntaxique ua moment où tu valides ton paste. Là ça semble impossible ?

Exact. La coloration syntaxique est choisie en fonction de l’extension du fichier :

$ paf script.py  # ça sera colorié en Python
$ paf main.c  # ça sera colorié en C
2 « J'aime »

Les mises à jour du jour :

  • Le Markdown est rendu en HTML.
  • Il est possible de choisir l’URL de son envoi : il suffit de faire un PUT sur l’URL plutôt qu’un POST a la racine.
  • Il est possible de modifier un envoi, via un PUT et un secret prouvant que vous en êtes l’auteur.
  • La page d’accueil est maintenant un simple paste, en Markdown, que je maintiens a coup de curl, la boucle est bouclée et je ne rédige plus de HTML.
  • Il est possible de lister tous les pastes qui partagent un même secret.
  • J’ai mis en bas de la home une fonction paf un peu plus complexe utilisant un secret et permettant de lister les pastes. Mais elle n’est pas encore capable de choisir l’URL et donc pas encore capable de mettre à jour un envoi.

Tout est documenté : https://p.afpy.org

Oui vous pouvez donc carrément héberger votre blog sur ce pastebin, il suffit de le rédiger dans un dossier, et d’y aller a grand coup de paf monblog/*.md.

Aller un exemple avant d’aller manger :

$ paf --list
| filename              |   size | URL                                           | paste_time                | access_time               |   viewcount |
|-----------------------|--------|-----------------------------------------------|---------------------------|---------------------------|-------------|
|                       |   4911 | https://p.afpy.org/                           | 2023-04-25T16:03:59+00:00 | 2023-04-25T16:43:33+00:00 |           6 |
|                       |    184 | https://p.afpy.org/aAkF                       | 2023-04-25T16:38:00+00:00 | 2023-04-25T16:38:03+00:00 |           1 |
| admin.py              |    568 | https://p.afpy.org/fAqR/admin.py              | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:39:36+00:00 |           0 |
| context_processors.py |    296 | https://p.afpy.org/fAqR/context_processors.py | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:39:36+00:00 |           0 |
| __init__.py           |      0 | https://p.afpy.org/fAqR/__init__.py           | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:39:36+00:00 |           0 |
| models.py             |   2959 | https://p.afpy.org/fAqR/models.py             | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:40:45+00:00 |           2 |
| urls.py               |    410 | https://p.afpy.org/fAqR/urls.py               | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:39:36+00:00 |           0 |
| utils.py              |   2887 | https://p.afpy.org/fAqR/utils.py              | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:40:48+00:00 |           1 |
| views.py              |   5193 | https://p.afpy.org/fAqR/views.py              | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:40:53+00:00 |           1 |
|                       |    267 | https://p.afpy.org/nnLR                       | 2023-04-25T16:39:36+00:00 | 2023-04-25T16:40:40+00:00 |           2 |

Haha je viens de paste https://p.afpy.org/robots.txt :

printf "User-agent: *\nDisallow: /\n" | curl https://p.afpy.org/robots.txt -XPUT -H "Authorization: Secret supersecret" --data-binary @-

(Non mon secret n’est pas supersecret, tu ne peux pas changer le robots.txt.)

1 « J'aime »

Ca a l’air trop cool, faut que je teste ça!

1 « J'aime »

merci du partage ! je comprends vraiment rien à rien à ce script mais on va voir si cela fonctionne :slight_smile: ( plus tard dans la semaine, pas de stress pas de rush )

FYI PTI ça me donne :

normalement c’est ok je viens de le copier-coller mais comme il y a pas de preview dans cette version c’est difficile à dire - au pire @ admin ? @ meta ? @ moderation ? :slight_smile: merci !

Résumé

Ce texte sera masqué - ça, ça fonctionne ?

Les .txt sont rendus bruts, les fichiers .md sont rendus en HTML, et tout le reste est rendu avec de la coloration syntaxique. Donc là oui c’est normal que le robots.txt soit un peu … brut.

1 « J'aime »

Je viens d’avoir une idée, je l’ai donc … documentée (car ça s’implémentait en 0 lignes de code) : https://p.afpy.org/e2e.md

Oui j’ai rajouté un lien vers cette page en bas de l’index.

2 « J'aime »