Pingclairfile
Le Pingclairfile est le langage de configuration. Il suit les conventions de Caddyfile : un bloc dâoptions globales facultatif, puis des blocs de site contenant des directives. Cette page dĂ©crit le langage lui-mĂȘme ; les directives quâil accepte sont dĂ©crites dans la rĂ©fĂ©rence des directives.
đ€ RĂšgles lexicales
Section intitulĂ©e « đ€ RĂšgles lexicales »| RĂšgle | DĂ©tail |
|---|---|
| Commentaires | # jusquâĂ la fin de la ligne. |
| Guillemets | Une valeur contenant des espaces est mise entre ". Les guillemets sont retirĂ©s avant lâanalyse de la valeur. |
| DurĂ©es | Ăcrites avec une unitĂ© : 30s, 5m, 1h. Un nombre nu est refusĂ© lĂ oĂč une durĂ©e est attendue. |
| Casse | Les noms de directives et dâoptions sont en minuscules. |
| Placeholders | {host}, {path}, {args[0]}, {block} et le reste de lâensemble des placeholders sont dĂ©veloppĂ©s lĂ oĂč la directive le documente. |
đ Adresses
Section intitulĂ©e « đ Adresses »Un bloc de site est nommĂ© par une adresse. Lâadresse dĂ©termine lâĂ©couteur et, pour les noms publics, si HTTPS automatique sâapplique.
example.com { # host: ports 443 and 80, automatic HTTPSlocalhost:8080 { # host and port:8080 { # any host on this porthttp://example.com { # force plaintextLe port appartient Ă lâadresse plutĂŽt quâĂ une directive listen sĂ©parĂ©e :
lâadresse et lâĂ©couteur ne peuvent donc pas diverger.
đ§ Matchers
Section intitulĂ©e « đ§ Matchers »Une directive qui accepte un matcher ne sâapplique quâaux requĂȘtes
correspondantes. Les matchers sâĂ©crivent en ligne ou sont dĂ©clarĂ©s avec @nom
puis référencés par ce nom.
example.com { @api path /api/* header @api Cache-Control "no-store"
handle /assets/* { file_server ./assets }}Les blocs handle regroupent les directives par route ; un handle sans
matcher est le repli de son site.
đ§© Fragments et imports
Section intitulée « 𧩠Fragments et imports »Les fragments sont des morceaux réutilisables. Un fragment déclaré sous la
forme (nom) { ... } est inclus avec import nom et peut recevoir un bloc de
son appelant :
(proxied) { https://{args[0]} { encode zstd gzip {block} }}
import proxied example.com { reverse_proxy 127.0.0.1:3000}Un placeholder qui ne reçoit rien nâinsĂšre rien : un fragment Ă©crit avec
{block} compile donc encore lorsque son appelant ne fournit aucun bloc.
đ§° Outillage en ligne de commande
Section intitulée « 𧰠Outillage en ligne de commande »La ligne de commande a sa propre référence :
Ligne de commande liste chaque sous-commande avec
ses options et ses valeurs par dĂ©faut. Trois dâentre elles relĂšvent de lâĂ©criture
dâune configuration : pingclair validate, qui compile un fichier et nomme le
premier problĂšme, pingclair adapt --pretty, qui affiche le JSON dans lequel ce
fichier se compile, et pingclair fmt, qui le formate.
đ« Ce qui ne fait pas partie du langage
Section intitulĂ©e « đ« Ce qui ne fait pas partie du langage »Le format dĂ©finit plus de noms que le serveur nâen implĂ©mente. Un nom reconnu mais non implĂ©mentĂ© est refusĂ© par son nom au chargement, avec un message indiquant que la fonctionnalitĂ© manque. La liste de rĂ©fĂ©rence des noms refusĂ©s se trouve dans le README du dĂ©pĂŽt du serveur, et la page Ă©tat du projet en rĂ©sume les catĂ©gories.
