pasteque/using.fr.md

240 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PafPy
Et PAF !
## TL;DR
Utilisez cette fonction `bash` :
```bash
paf()
{
curl https://p.afpy.org/ "${@/*/-F&=@&}"
}
```
elle permet denvoyer un fichier :
```bash
$ paf manage.py
- https://p.afpy.org/TaPa/manage.py
```
ou plusieurs :
```bash
$ 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 :
```bash
$ curl https://p.afpy.org/ -Fmanage.py=@manage.py
- https://p.afpy.org/TaPa/manage.py
```
ou plusieurs fichiers en même temps :
```bash
$ 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 :
```bash
$ 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` :
```bash
$ 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` :
```bash
$ cal | curl -XPUT --data-binary @- https://p.afpy.org/cal
- https://p.afpy.org/cal
```
```bash
$ 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` :
```bash
$ 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 :
```bash
$ 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/` :
```bash
$ 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](https://www.passwordstore.org/) pour ça,
mais libre à vous décrire le mot de passe en clair dans votre
`~/.bashrc`) :
```bash
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 :
```bash
$ 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
- [Chiffrement de bout en bout](https://p.afpy.org/e2e.md).
- [HTML inline dans du Markdown, la balise <summary>](https://p.afpy.org/summary.md).
## Note à moi-même
Pour mettre à jour cette page, jutilise :
```bash
$ curl -H "Authorization: Secret $(pass paf)" -XPUT --data-binary @using.fr.md https://p.afpy.org/
```