pasteque/using.fr.md

240 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2023-04-25 20:00:00 +00:00
# PafPy
2023-04-25 07:22:03 +00:00
2023-04-25 20:00:00 +00:00
Et PAF !
2023-04-25 07:22:03 +00:00
2023-04-25 16:44:42 +00:00
## TL;DR
2023-04-25 07:22:03 +00:00
2023-04-25 16:44:42 +00:00
Utilisez cette fonction `bash` :
2023-04-25 07:22:03 +00:00
2023-04-25 16:44:42 +00:00
```bash
paf()
{
curl https://p.afpy.org/ "${@/*/-F&=@&}"
}
```
2023-04-25 20:05:51 +00:00
elle permet denvoyer un fichier :
2023-04-25 07:22:03 +00:00
```bash
2023-04-25 16:44:42 +00:00
$ paf manage.py
- https://p.afpy.org/TaPa/manage.py
```
2023-04-25 20:05:51 +00:00
ou plusieurs :
2023-04-25 16:44:42 +00:00
```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
```
2023-04-25 20:05:51 +00:00
une version évoluée de cette fonction est fournie plus bas.
2023-04-25 16:44:42 +00:00
2023-04-25 20:00:00 +00:00
## Le projet
2023-04-25 16:44:42 +00:00
2023-04-25 20:00:00 +00:00
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`
2023-04-25 20:05:51 +00:00
Tous les exemples sont rédigés avec `curl`, libre à vous dadapter à
votre usage.
2023-04-25 20:00:00 +00:00
2023-04-25 20:05:51 +00:00
En utilisant des requêtes `multipart/form-data` il est possible
denvoyer un fichier :
2023-04-25 16:44:42 +00:00
```bash
$ curl https://p.afpy.org/ -Fmanage.py=@manage.py
- https://p.afpy.org/TaPa/manage.py
2023-04-25 07:22:03 +00:00
```
2023-04-25 20:00:00 +00:00
ou plusieurs fichiers en même temps :
2023-04-25 07:22:03 +00:00
```bash
2023-04-25 16:44:42 +00:00
$ 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
2023-04-25 07:22:03 +00:00
```
2023-04-25 20:00:00 +00:00
Cest lextension dans le nom du fichier qui permet de choisir la
2023-04-25 07:22:03 +00:00
coloration syntaxique pour chaque fichier.
2023-07-18 13:53:07 +00:00
Les fichiers sans extension et les fichiers `.md` sont interprétés en
Markdown lors de laffichage dans un navigateur.
2023-04-25 20:05:51 +00:00
Les fichiers sont toujours rendus tels quels lorsquils sont récupérés
hors dun navigateur, typiquement via `wget` ou `curl`.
2023-04-25 07:22:03 +00:00
2023-04-25 20:00:00 +00:00
### Envoyer dans le corps dune requête
2023-04-25 07:22:03 +00:00
2023-04-25 20:00:00 +00:00
Il est possible de coller un unique fichier via le corps dune requête POST :
2023-04-25 07:22:03 +00:00
```bash
2023-04-25 16:44:42 +00:00
$ cal | curl -XPOST --data-binary @- https://p.afpy.org/
- https://p.afpy.org/mo8X
2023-04-25 07:22:03 +00:00
```
2023-07-18 13:53:07 +00:00
Nayant pas dextension, il est interprété en Markdown, ce nest pas toujours souhaitable.
2023-04-25 20:00:00 +00:00
Dans ce cas, il est possible de choisir la coloration syntaxique via lentête `Content-Type` :
2023-04-25 07:22:03 +00:00
```bash
2023-04-25 16:44:42 +00:00
$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- https://p.afpy.org/
- https://p.afpy.org/i3Y2/request.txt
```
2023-04-25 20:00:00 +00:00
### Choisir lURL
2023-04-25 16:44:42 +00:00
2023-04-25 20:00:00 +00:00
Il est possible dutiliser la méthode `PUT` sur une `URL` :
2023-04-25 16:44:42 +00:00
```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
2023-04-25 07:22:03 +00:00
```
2023-04-25 16:44:42 +00:00
### Écraser un paste existant
2023-04-25 20:00:00 +00:00
Lors du premier envoi dun paste, vous pouvez lui affecter un secret via lentête HTTP `Authorization` :
2023-04-25 16:44:42 +00:00
```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
```
2023-07-18 13:53:07 +00:00
La page daccueil, ainsi que le fichier `robots.txt` sont maintenus de cette manière la.
2023-04-25 16:44:42 +00:00
### Lister ses envois
2023-04-25 20:00:00 +00:00
Tous les envois effectiés avec le même secret peuvent être listés via lURL `/::/list/` :
2023-04-25 16:44:42 +00:00
```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
2023-07-18 13:53:07 +00:00
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`) :
2023-04-25 07:22:03 +00:00
```bash
paf()
{
2023-07-18 13:53:07 +00:00
local SECRET="$(pass paf)"
2023-04-25 16:44:42 +00:00
local AUTH="-HAuthorization: Secret $SECRET"
local INSTANCE="https://p.afpy.org/"
if [[ $1 == "--list" ]]
then
curl "$AUTH" $INSTANCE::/list/
return
fi
2023-04-25 07:22:03 +00:00
if [[ $# == 0 ]]
then
2023-04-25 16:44:42 +00:00
curl "$AUTH" "$INSTANCE" --data-binary @-
2023-04-25 07:22:03 +00:00
else
2023-04-25 16:44:42 +00:00
curl "$AUTH" "$INSTANCE" "${@/*/-F&=@&}"
2023-04-25 07:22:03 +00:00
fi
}
2023-07-18 13:53:07 +00:00
code-block()
{
printf '```%s\n' "$1"
cat
printf '```\n'
}
2023-04-25 07:22:03 +00:00
```
2023-04-25 16:44:42 +00:00
Il est possible :
2023-04-25 07:22:03 +00:00
2023-04-25 20:00:00 +00:00
- denvoyer un ou plusieurs fichiers,
- denvoyer `stdin`,
2023-04-25 16:44:42 +00:00
- de lister ses envois.
2023-04-25 07:22:03 +00:00
2023-07-18 13:53:07 +00:00
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 :
2023-04-25 07:22:03 +00:00
```bash
2023-07-18 13:53:07 +00:00
$ cal | code-block | paf
- https://p.afpy.org/WrmY
2023-04-25 07:22:03 +00:00
```
2023-07-18 13:53:07 +00:00
Sans quoi on obtiendrait : https://p.afpy.org/aAkF ☹
2023-04-25 20:00:00 +00:00
Si vous voulez partager un dossier complet, vous pouvez simplement
envoyer la liste des URL qui vous est renvoyée :
2023-04-25 07:22:03 +00:00
```
2023-07-18 13:53:07 +00:00
$ paf *.py | paf
2023-04-25 16:44:42 +00:00
- https://p.afpy.org/nnLR
2023-04-25 07:22:03 +00:00
```
2023-04-25 16:44:42 +00:00
Ce qui donne :
2023-04-25 07:22:03 +00:00
```
2023-04-25 16:44:42 +00:00
$ 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
2023-04-25 07:22:03 +00:00
```
2023-07-18 13:53:07 +00:00
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/
```