Aller au contenu

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Ú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.

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 HTTPS
localhost:8080 { # host and port
:8080 { # any host on this port
http://example.com { # force plaintext

Le port appartient Ă  l’adresse plutĂŽt qu’à une directive listen sĂ©parĂ©e : l’adresse et l’écouteur ne peuvent donc pas diverger.

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.

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.

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.

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.