Proofreading using.fr.md

This commit is contained in:
Julien Palard 2023-04-25 18:44:42 +02:00
parent d0b6ec7014
commit a03a5558d6
Signed by: mdk
GPG Key ID: 0EFC1AC1006886F8
1 changed files with 135 additions and 70 deletions

View File

@ -2,132 +2,197 @@
Et PAF ! Et PAF !
## TL;DR
## Envoyer un ou plusieurs fichiers Utilisez cette fonction `bash` :
En utilisant des requêtes `multipart/form-data` il est possible d'envoyer un fichier :
```bash ```bash
$ curl http://localhost:8000/ -Fmanage.py=@manage.py paf()
| URL | size | filename | {
|-------------------------|--------|-----------| curl https://p.afpy.org/ "${@/*/-F&=@&}"
| https://p.afpy.org/g3LE | 251 | manage.py | }
```
Cette fonction permet d'envoyer 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
```
## Utilisation avec curl
En utilisant des requêtes `multipart/form-data` il est possible d'envoyer 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 : ou plusieurs fichiers en même temps :
```bash ```bash
$ curl http://localhost:8000/ -Fmanage.py=@manage.py -Frequirements.txt=@requirements.txt $ curl https://p.afpy.org/ -Fmanage.py=@manage.py -Frequirements.txt=@requirements.txt
| URL | size | filename | - https://p.afpy.org/Nz2o/manage.py
|-------------------------|--------|------------------| - https://p.afpy.org/Nz2o/requirements.txt
| https://p.afpy.org/g3LE | 251 | manage.py |
| https://p.afpy.org/k4oT | 547 | requirements.txt |
``` ```
C'est l'extension dans le nom du fichier qui permet de choisir la C'est l'extension dans le nom du fichier qui permet de choisir la
coloration syntaxique pour chaque fichier. coloration syntaxique pour chaque fichier.
## Envoyer dans le corps d'une requête ### Envoyer dans le corps d'une requête
Il est possible de coller un unique fichier via le corps d'une requête POST : Il est possible de coller un unique fichier via le corps d'une requête POST :
```bash ```bash
$ cal | curl -XPOST --data-binary @- http://localhost:8000/ $ cal | curl -XPOST --data-binary @- https://p.afpy.org/
| URL | size | filename | - https://p.afpy.org/mo8X
|-------------------------|--------|----------|
| https://p.afpy.org/mo8X | 184 | request |
``` ```
Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête `Content-Type` : Dans ce cas, il est possible de choisir la coloration syntaxique via l'entête `Content-Type` :
```bash ```bash
$ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- http://localhost:8000/ $ cal | curl -XPOST -H "Content-Type: text/plain" --data-binary @- https://p.afpy.org/
| URL | size | filename | - https://p.afpy.org/i3Y2/request.txt
|-------------------------|--------|-------------|
| https://p.afpy.org/dNuo | 184 | request.txt |
``` ```
## Fonction bash ### Choisir l'URL
Pour ceux qui ne souhaitent pas rédiger des requêtes `curl` toute la journée, voici une petite fonction bash : Il est possible d'utiliser 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 d'un paste, vous pouvez lui affecter un secret via l'entê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 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/` :
```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é) :
```bash ```bash
paf() 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 ]] if [[ $# == 0 ]]
then then
curl https://p.afpy.org/ --data-binary @- -H "Content-Type: text/plain" curl "$AUTH" "$INSTANCE" --data-binary @-
else else
curl https://p.afpy.org/ "${@/*/-F&=@&}" curl "$AUTH" "$INSTANCE" "${@/*/-F&=@&}"
fi fi
} }
``` ```
Cette fonction est capable d'envoyer un fichier : Il est possible :
- d'envoyer un ou plusieurs fichiers,
- d'envoyer `stdin`,
- de lister ses envois.
Exemple d'envoi via `stdin` :
```bash ```bash
$ paf manage.py
| URL | size | filename |
|-------------------------|--------|-----------|
| https://p.afpy.org/g3LE | 251 | manage.py |
```
plusieurs fichiers :
```bash
$ paf *.py
| URL | size | filename |
|-------------------------|--------|-----------------------|
| https://p.afpy.org/bvRV | 188 | admin.py |
| https://p.afpy.org/5uei | 296 | context_processors.py |
| https://p.afpy.org/Xg5a | 1419 | models.py |
| https://p.afpy.org/GkGS | 309 | urls.py |
| https://p.afpy.org/LVXL | 2730 | views.py |
```
et même de lire sur `stdin` :
```
$ cal | paf $ cal | paf
| URL | size | filename | - https://p.afpy.org/aAkF
|-------------------------|--------|-------------|
| https://p.afpy.org/dNuo | 184 | request.txt |
``` ```
Dernière démo, puisque le résultat d'un envoi est un tableau de toutes les URL, il est tentant de le partager lui aussi : Si vous voulez partager un dossier complet, vous pouvez simplement envoyer la liste des URL qui vous est renvoyée :
``` ```
$ paf *.py | paf $ paf *.py|paf
| URL | size | filename | - https://p.afpy.org/nnLR
|-------------------------|--------|-------------|
| https://p.afpy.org/L5pc | 488 | request.txt |
``` ```
Ce qui donne : Ce qui donne :
``` ```
$ curl https://p.afpy.org/L5pc $ curl https://p.afpy.org/nnLR
| URL | size | filename | - https://p.afpy.org/fAqR/admin.py
|-------------------------|--------|-----------------------| - https://p.afpy.org/fAqR/context_processors.py
| https://p.afpy.org/7rFj | 188 | admin.py | - https://p.afpy.org/fAqR/__init__.py
| https://p.afpy.org/DLfp | 296 | context_processors.py | - https://p.afpy.org/fAqR/models.py
| https://p.afpy.org/9o33 | 0 | __init__.py | - https://p.afpy.org/fAqR/urls.py
| https://p.afpy.org/YdvG | 1419 | models.py | - https://p.afpy.org/fAqR/utils.py
| https://p.afpy.org/97fG | 309 | urls.py | - https://p.afpy.org/fAqR/views.py
| https://p.afpy.org/oPRr | 2974 | views.py |
``` ```
pratique pour partager tout un dossier. Et qui est rendu avec des liens cliquables en HTML !
## Accès aux collages ## Accès aux collages
Chaque collage peut-être consulté dans un navigateur (où il est Chaque collage peut-être consulté dans un navigateur (où il est
présenté avec de la coloration syntaxique : https://p.afpy.org/g3LE), 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) : ou être consulté en ligne de commande (où il est délivré brut) :
``` ```
$ curl https://p.afpy.org/g3LE $ curl https://p.afpy.org/manage.py
#!/usr/bin/env python #!/usr/bin/env python
import os import os
import sys import sys