pasteque/using.fr.md

4.8 KiB

Paf'Py

Et PAF !

TL;DR

Utilisez cette fonction bash :

paf()
{
    curl https://p.afpy.org/ "${@/*/-F&=@&}"
}

Cette fonction permet d'envoyer un fichier :

$ paf manage.py
- https://p.afpy.org/TaPa/manage.py

Ou plusieurs :

$ paf *.py
- https://p.afpy.org/d6Xd/admin.py
- https://p.afpy.org/d6Xd/context_processors.py
- https://p.afpy.org/d6Xd/__init__.py
- https://p.afpy.org/d6Xd/models.py
- https://p.afpy.org/d6Xd/urls.py
- https://p.afpy.org/d6Xd/utils.py
- https://p.afpy.org/d6Xd/views.py

Utilisation avec curl

En utilisant des requêtes multipart/form-data il est possible d'envoyer un fichier :

$ curl https://p.afpy.org/ -Fmanage.py=@manage.py
- https://p.afpy.org/TaPa/manage.py

ou plusieurs fichiers en même temps :

$ curl https://p.afpy.org/ -Fmanage.py=@manage.py -Frequirements.txt=@requirements.txt
- https://p.afpy.org/Nz2o/manage.py
- https://p.afpy.org/Nz2o/requirements.txt

C'est l'extension dans le nom du fichier qui permet de choisir la coloration syntaxique pour chaque fichier.

Envoyer dans le corps d'une requête

Il est possible de coller un unique fichier via le corps d'une requête POST :

$ cal | curl -XPOST --data-binary @- https://p.afpy.org/
- https://p.afpy.org/mo8X

Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête Content-Type :

$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- https://p.afpy.org/
- https://p.afpy.org/i3Y2/request.txt

Choisir l'URL

Il est possible d'utiliser la méthode PUT sur une URL :

$ cal | curl -XPUT --data-binary @- https://p.afpy.org/cal
- https://p.afpy.org/cal
$ curl -XPUT --data-binary @manage.py https://p.afpy.org/manage.py
- https://p.afpy.org/manage.py

Écraser un paste existant

Lors du premier envoi d'un paste, vous pouvez lui affecter un secret via l'entête HTTP Authorization :

$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date
- https://p.afpy.org/date

Ainsi vous pouvez mettre à jour ce paste en utilisant la même URL et le même secret :

$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date
- https://p.afpy.org/date
$ curl https://p.afpy.org/date
Tue Apr 25 06:22:45 PM CEST 2023
$ date | curl -XPUT --data-binary @- -H "Authorization: Secret supersecret" https://p.afpy.org/date
- https://p.afpy.org/date
$ curl https://p.afpy.org/date
Tue Apr 25 06:23:44 PM CEST 2023

La page d'accueil est maintenue de cette manière la.

Lister ses envois

Tous les envois effectiés avec le même secret peuvent être listés via l'URL /::/list/ :

$ curl https://p.afpy.org/::/list/ -H "Authorization: Secret supersecret"
| filename   |   size | URL                 | paste_time                | access_time               |   viewcount |
|------------|--------|---------------------|---------------------------|---------------------------|-------------|
|            |   5168 | https://p.afpy.org/ | 2023-04-25T16:03:59+00:00 | 2023-04-25T16:26:59+00:00 |           2 |

Utilisation avancée

Avec cette fonction (dont le secret doit être personalisé) :

paf()
{
    local SECRET="supersecret"
    local AUTH="-HAuthorization: Secret $SECRET"
    local INSTANCE="https://p.afpy.org/"

    if [[ $1 == "--list" ]]
    then
        curl "$AUTH" $INSTANCE::/list/
        return
    fi

    if [[ $# == 0 ]]
    then
        curl "$AUTH" "$INSTANCE" --data-binary @-
    else
        curl "$AUTH" "$INSTANCE" "${@/*/-F&=@&}"
    fi
}

Il est possible :

  • d'envoyer un ou plusieurs fichiers,
  • d'envoyer stdin,
  • de lister ses envois.

Exemple d'envoi via stdin :

$ cal | paf
- https://p.afpy.org/aAkF

Si vous voulez partager un dossier complet, vous pouvez simplement envoyer la liste des URL qui vous est renvoyée :

$ paf *.py|paf
- https://p.afpy.org/nnLR

Ce qui donne :

$ curl https://p.afpy.org/nnLR
- https://p.afpy.org/fAqR/admin.py
- https://p.afpy.org/fAqR/context_processors.py
- https://p.afpy.org/fAqR/__init__.py
- https://p.afpy.org/fAqR/models.py
- https://p.afpy.org/fAqR/urls.py
- https://p.afpy.org/fAqR/utils.py
- https://p.afpy.org/fAqR/views.py

Et qui est rendu avec des liens cliquables en HTML !

Accès aux collages

Chaque collage peut-être consulté dans un navigateur (où il est présenté avec de la coloration syntaxique : https://p.afpy.org/manage.py), ou être consulté en ligne de commande (où il est délivré brut) :

$ curl https://p.afpy.org/manage.py
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webtools.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)