pasteque/using.fr.md

6.0 KiB
Raw Permalink Blame History

PafPy

Et PAF !

TL;DR

Utilisez cette fonction bash :

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

elle permet denvoyer 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

une version évoluée de cette fonction est fournie plus bas.

Le projet

Pasteque est un projet libre et open-source développé par Alexandre Henriet en 2013 sous licence MIT puis repris par Julien Palard en 2018 pour https://wyz.fr et enfin par lAFPy en 2023 pour https://p.afpy.org.

Le code source est disponible ici : https://git.afpy.org/AFPy/pasteque

Utilisation avec curl

Tous les exemples sont rédigés avec curl, libre à vous dadapter à votre usage.

En utilisant des requêtes multipart/form-data il est possible denvoyer 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

Cest lextension dans le nom du fichier qui permet de choisir la coloration syntaxique pour chaque fichier.

Les fichiers sans extension et les fichiers .md sont interprétés en Markdown lors de laffichage dans un navigateur.

Les fichiers sont toujours rendus tels quels lorsquils sont récupérés hors dun navigateur, typiquement via wget ou curl.

Envoyer dans le corps dune requête

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

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

Nayant pas dextension, il est interprété en Markdown, ce nest pas toujours souhaitable.

Dans ce cas, il est possible de choisir la coloration syntaxique via lentê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 lURL

Il est possible dutiliser 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 dun paste, vous pouvez lui affecter un secret via lentê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 daccueil, ainsi que le fichier robots.txt sont maintenus de cette manière la.

Lister ses envois

Tous les envois effectiés avec le même secret peuvent être listés via lURL /::/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é, je vous conseille dutiliser pass pour ça, mais libre à vous décrire le mot de passe en clair dans votre ~/.bashrc) :

paf()
{
    local SECRET="$(pass paf)"
    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
}

code-block()
{
    printf '```%s\n' "$1"
    cat
    printf '```\n'
}

Il est possible :

  • denvoyer un ou plusieurs fichiers,
  • denvoyer stdin,
  • de lister ses envois.

La fonction code-block sert à transformer, dans un pipe, un flux de texte en block de code Markdown, cest typiquement utile lorsquon envoie quelque chose qui nest vraiment pas du Markdown via stdin, comme :

$ cal | code-block | paf
- https://p.afpy.org/WrmY

Sans quoi on obtiendrait : 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 dans un navigateur, cest rendu via Markdown, les liens sont donc cliquables.

Pour aller plus loin

Note à moi-même

Pour mettre à jour cette page, jutilise :

$ curl -H "Authorization: Secret $(pass paf)" -XPUT --data-binary @using.fr.md https://p.afpy.org/