summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-07-28 16:58:13 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-07-29 18:43:54 +0200
commit80aff364dbd8d78392582124b51b46b556db7e4c (patch)
tree85f3331d1f614b1ac9d380c1aceb81a72bafbbdc
parentdbd7407c825f9fc0ddbbeba6e7eef6f5430c8cf2 (diff)
The server supports XML catalogs.
This will be used to set up an integration test suite with HTTPS, without needing to provide certificates, because the test harness will have an XML catalog mapping HTTPS targets to local HTTP mockups.
-rw-r--r--po/fr.po244
-rw-r--r--po/webid-oidc.pot230
-rw-r--r--src/scm/webid-oidc/Makefile.am6
-rw-r--r--src/scm/webid-oidc/catalog.scm264
-rw-r--r--src/scm/webid-oidc/program.scm24
5 files changed, 545 insertions, 223 deletions
diff --git a/po/fr.po b/po/fr.po
index 8e6ed59..c9d910c 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: webid-oidc 0.0.0\n"
"Report-Msgid-Bugs-To: vivien@planete-kraus.eu\n"
-"POT-Creation-Date: 2021-07-27 16:04+0200\n"
-"PO-Revision-Date: 2021-07-27 16:12+0200\n"
+"POT-Creation-Date: 2021-07-28 16:56+0200\n"
+"PO-Revision-Date: 2021-07-28 16:58+0200\n"
"Last-Translator: Vivien Kraus <vivien@planete-kraus.eu>\n"
"Language-Team: French <vivien@planete-kraus.eu>\n"
"Language: fr\n"
@@ -1012,15 +1012,15 @@ msgid "Warning: ~a\n"
msgstr "Avertissement : ~a\n"
#: src/scm/webid-oidc/hello-world.scm:48 src/scm/webid-oidc/example-app.scm:116
-#: src/scm/webid-oidc/program.scm:204
+#: src/scm/webid-oidc/program.scm:217
msgid "command-line|version"
msgstr "version"
-#: src/scm/webid-oidc/hello-world.scm:50 src/scm/webid-oidc/program.scm:206
+#: src/scm/webid-oidc/hello-world.scm:50 src/scm/webid-oidc/program.scm:219
msgid "command-line|complete-corresponding-source"
msgstr "code-source-correspondant-complet"
-#: src/scm/webid-oidc/hello-world.scm:52 src/scm/webid-oidc/program.scm:208
+#: src/scm/webid-oidc/hello-world.scm:52 src/scm/webid-oidc/program.scm:221
msgid "command-line|help"
msgstr "aide"
@@ -1028,11 +1028,11 @@ msgstr "aide"
msgid "command-line|port"
msgstr "port"
-#: src/scm/webid-oidc/hello-world.scm:56 src/scm/webid-oidc/program.scm:238
+#: src/scm/webid-oidc/hello-world.scm:56 src/scm/webid-oidc/program.scm:251
msgid "command-line|log-file"
msgstr "fichier-journal"
-#: src/scm/webid-oidc/hello-world.scm:58 src/scm/webid-oidc/program.scm:240
+#: src/scm/webid-oidc/hello-world.scm:58 src/scm/webid-oidc/program.scm:253
msgid "command-line|error-file"
msgstr "fichier-erreur"
@@ -1091,12 +1091,12 @@ msgstr ""
" redirige la sortie d’erreur du programme vers ce fichier.\n"
#: src/scm/webid-oidc/hello-world.scm:103
-#: src/scm/webid-oidc/example-app.scm:159 src/scm/webid-oidc/program.scm:544
+#: src/scm/webid-oidc/example-app.scm:159 src/scm/webid-oidc/program.scm:568
#, scheme-format
msgid "~a version ~a\n"
msgstr "~a version ~a\n"
-#: src/scm/webid-oidc/hello-world.scm:112 src/scm/webid-oidc/program.scm:552
+#: src/scm/webid-oidc/hello-world.scm:112 src/scm/webid-oidc/program.scm:576
msgid ""
"You are legally required to link to the complete corresponding source code.\n"
msgstr ""
@@ -1258,12 +1258,12 @@ msgstr ""
msgid "There was an error: ~a\n"
msgstr "Il y a eu une erreur : ~a\n"
-#: src/scm/webid-oidc/program.scm:98
+#: src/scm/webid-oidc/program.scm:111
#, scheme-format
msgid "~a: ~a: Internal server error: ~a\n"
msgstr "~a : ~a : Erreur interne du serveur : ~a\n"
-#: src/scm/webid-oidc/program.scm:112
+#: src/scm/webid-oidc/program.scm:125
#, scheme-format
msgid ""
"The client locale ~s can’t be approximated by system locale ~s (because ~a), "
@@ -1272,88 +1272,88 @@ msgstr ""
"La locale du client ~s ne peut pas être approchée par la locale système ~s "
"(parce que ~a), on utilise C.\n"
-#: src/scm/webid-oidc/program.scm:136
+#: src/scm/webid-oidc/program.scm:149
#, scheme-format
msgid "~a: ~s ~a ~s ~a\n"
msgstr "~a : ~s ~a ~s ~a\n"
-#: src/scm/webid-oidc/program.scm:138
+#: src/scm/webid-oidc/program.scm:151
#, scheme-format
msgid "~a: ~a (~a)"
msgstr "~a : ~a (~a)"
-#: src/scm/webid-oidc/program.scm:142
+#: src/scm/webid-oidc/program.scm:155
#, scheme-format
msgid "~a: ~a"
msgstr "~a : ~a"
-#: src/scm/webid-oidc/program.scm:152
+#: src/scm/webid-oidc/program.scm:165
#, scheme-format
msgid "(there was an error: ~a)"
msgstr "(il y a eu une erreur : ~a)"
-#: src/scm/webid-oidc/program.scm:210
+#: src/scm/webid-oidc/program.scm:223
msgid "command-line|server|port"
msgstr "port"
-#: src/scm/webid-oidc/program.scm:212
+#: src/scm/webid-oidc/program.scm:225
msgid "command-line|server|server-name"
msgstr "nom-du-serveur"
-#: src/scm/webid-oidc/program.scm:214
+#: src/scm/webid-oidc/program.scm:227
msgid "command-line|server|reverse-proxy|backend-uri"
msgstr "uri-arrière-plan"
-#: src/scm/webid-oidc/program.scm:216
+#: src/scm/webid-oidc/program.scm:229
msgid "command-line|server|reverse-proxy|header"
msgstr "en-tête"
-#: src/scm/webid-oidc/program.scm:218
+#: src/scm/webid-oidc/program.scm:231
msgid "command-line|server|issuer|key-file"
msgstr "fichier-clé"
-#: src/scm/webid-oidc/program.scm:220
+#: src/scm/webid-oidc/program.scm:233
msgid "command-line|server|issuer|subject"
msgstr "sujet"
-#: src/scm/webid-oidc/program.scm:222
+#: src/scm/webid-oidc/program.scm:235
msgid "command-line|server|issuer|encrypted-password"
msgstr "mot-de-passe-chiffré"
-#: src/scm/webid-oidc/program.scm:224
+#: src/scm/webid-oidc/program.scm:237
msgid "command-line|server|issuer|jwks-uri"
msgstr "uri-jwks"
-#: src/scm/webid-oidc/program.scm:226
+#: src/scm/webid-oidc/program.scm:239
msgid "command-line|server|issuer|authorization-endpoint-uri"
msgstr "uri-terminal-autorisation"
-#: src/scm/webid-oidc/program.scm:228
+#: src/scm/webid-oidc/program.scm:241
msgid "command-line|server|issuer|token-endpoint-uri"
msgstr "uri-terminal-jeton"
-#: src/scm/webid-oidc/program.scm:230
+#: src/scm/webid-oidc/program.scm:243
msgid "command-line|server|client-id"
msgstr "id-client"
-#: src/scm/webid-oidc/program.scm:232
+#: src/scm/webid-oidc/program.scm:245
msgid "command-line|server|redirect-uri"
msgstr "uri-redirection"
-#: src/scm/webid-oidc/program.scm:234
+#: src/scm/webid-oidc/program.scm:247
msgid "command-line|server|client-name"
msgstr "nom-client"
-#: src/scm/webid-oidc/program.scm:236
+#: src/scm/webid-oidc/program.scm:249
msgid "command-line|server|client-uri"
msgstr "uri-client"
-#: src/scm/webid-oidc/program.scm:265
+#: src/scm/webid-oidc/program.scm:278
#, scheme-format
msgid "Usage: ~a COMMAND [OPTIONS]...\n"
msgstr "Utilisation : ~a COMMANDE [OPTIONS]...\n"
-#: src/scm/webid-oidc/program.scm:269
+#: src/scm/webid-oidc/program.scm:282
msgid ""
"\n"
"Run the webid-oidc COMMAND."
@@ -1361,7 +1361,7 @@ msgstr ""
"\n"
"Exécute la COMMANDE webid-oidc."
-#: src/scm/webid-oidc/program.scm:272
+#: src/scm/webid-oidc/program.scm:285
msgid ""
"\n"
"This program is covered by the GNU Affero GPL, version 3 or\n"
@@ -1377,7 +1377,7 @@ msgstr ""
"code source complet correspondant (avec vos modifications) sans\n"
"frais. Le serveur ajoute un en-tête « Source: » à toutes les réponses."
-#: src/scm/webid-oidc/program.scm:279
+#: src/scm/webid-oidc/program.scm:292
msgid ""
"\n"
"Available commands:"
@@ -1385,7 +1385,7 @@ msgstr ""
"\n"
"Commandes disponibles :"
-#: src/scm/webid-oidc/program.scm:281
+#: src/scm/webid-oidc/program.scm:294
#, scheme-format
msgid ""
"\n"
@@ -1396,12 +1396,12 @@ msgstr ""
" ~a :\n"
" exécute le proxy inverse authentifiant."
-#: src/scm/webid-oidc/program.scm:284 src/scm/webid-oidc/program.scm:456
-#: src/scm/webid-oidc/program.scm:625
+#: src/scm/webid-oidc/program.scm:297 src/scm/webid-oidc/program.scm:480
+#: src/scm/webid-oidc/program.scm:649
msgid "command-line|command|reverse-proxy"
msgstr "proxy-inversé"
-#: src/scm/webid-oidc/program.scm:285
+#: src/scm/webid-oidc/program.scm:298
#, scheme-format
msgid ""
"\n"
@@ -1412,12 +1412,12 @@ msgstr ""
" ~a :\n"
" exécute un fournisseur d’identité."
-#: src/scm/webid-oidc/program.scm:288 src/scm/webid-oidc/program.scm:481
-#: src/scm/webid-oidc/program.scm:647
+#: src/scm/webid-oidc/program.scm:301 src/scm/webid-oidc/program.scm:505
+#: src/scm/webid-oidc/program.scm:671
msgid "command-line|command|identity-provider"
msgstr "fournisseur-identité"
-#: src/scm/webid-oidc/program.scm:289
+#: src/scm/webid-oidc/program.scm:302
#, scheme-format
msgid ""
"\n"
@@ -1428,12 +1428,12 @@ msgstr ""
" ~a :\n"
" sert les pages d’une application publique."
-#: src/scm/webid-oidc/program.scm:292 src/scm/webid-oidc/program.scm:502
-#: src/scm/webid-oidc/program.scm:691
+#: src/scm/webid-oidc/program.scm:305 src/scm/webid-oidc/program.scm:526
+#: src/scm/webid-oidc/program.scm:715
msgid "command-line|command|client-service"
msgstr "service-client"
-#: src/scm/webid-oidc/program.scm:293
+#: src/scm/webid-oidc/program.scm:306
#, scheme-format
msgid ""
"\n"
@@ -1446,12 +1446,12 @@ msgstr ""
" exécute un serveur complet, avec un fournisseur d’identité et\n"
" une fonction de stockage de ressources."
-#: src/scm/webid-oidc/program.scm:297 src/scm/webid-oidc/program.scm:528
-#: src/scm/webid-oidc/program.scm:720
+#: src/scm/webid-oidc/program.scm:310 src/scm/webid-oidc/program.scm:552
+#: src/scm/webid-oidc/program.scm:744
msgid "command-line|command|server"
msgstr "serveur"
-#: src/scm/webid-oidc/program.scm:299
+#: src/scm/webid-oidc/program.scm:312
msgid ""
"\n"
"General options:"
@@ -1459,7 +1459,7 @@ msgstr ""
"\n"
"Options générales :"
-#: src/scm/webid-oidc/program.scm:301
+#: src/scm/webid-oidc/program.scm:314
#, scheme-format
msgid ""
"\n"
@@ -1473,7 +1473,7 @@ msgstr ""
" correspondant. Par exemple, MOYEN serait une URI pointant vers\n"
" l’archive de code."
-#: src/scm/webid-oidc/program.scm:306
+#: src/scm/webid-oidc/program.scm:319
#, scheme-format
msgid ""
"\n"
@@ -1484,7 +1484,7 @@ msgstr ""
" -h, --~a :\n"
" affiche un court message d’aide et quitte."
-#: src/scm/webid-oidc/program.scm:310
+#: src/scm/webid-oidc/program.scm:323
#, scheme-format
msgid ""
"\n"
@@ -1495,7 +1495,7 @@ msgstr ""
" -v, --~a :\n"
" affiche le numéro de version (~a) et quitte."
-#: src/scm/webid-oidc/program.scm:315
+#: src/scm/webid-oidc/program.scm:328
#, scheme-format
msgid ""
"\n"
@@ -1506,7 +1506,7 @@ msgstr ""
" -l FICHIER.journal, --~a=FICHIER.journal :\n"
" redirige la sortie standard du programme vers FICHIER.journal."
-#: src/scm/webid-oidc/program.scm:319
+#: src/scm/webid-oidc/program.scm:332
#, scheme-format
msgid ""
"\n"
@@ -1517,7 +1517,7 @@ msgstr ""
" -e FICHIER.erreurs, --~a=FICHIER.erreurs :\n"
" redirige les erreurs du programme vers FICHIER.erreurs."
-#: src/scm/webid-oidc/program.scm:324
+#: src/scm/webid-oidc/program.scm:337
msgid ""
"\n"
"General server-side options:"
@@ -1525,7 +1525,7 @@ msgstr ""
"\n"
"Options générales pour un serveur :"
-#: src/scm/webid-oidc/program.scm:326
+#: src/scm/webid-oidc/program.scm:339
#, scheme-format
msgid ""
"\n"
@@ -1536,7 +1536,7 @@ msgstr ""
" -p PORT, --~a=PORT :\n"
" définit le port à lier, 8080 par défaut."
-#: src/scm/webid-oidc/program.scm:330
+#: src/scm/webid-oidc/program.scm:343
#, scheme-format
msgid ""
"\n"
@@ -1548,7 +1548,7 @@ msgstr ""
" définit l’URI publique du serveur (schéma, identifiant de\n"
" l’utilisateur, hôte et port)."
-#: src/scm/webid-oidc/program.scm:335
+#: src/scm/webid-oidc/program.scm:348
msgid ""
"\n"
"Options for the resource server:"
@@ -1556,7 +1556,7 @@ msgstr ""
"\n"
"Options pour le serveur de ressources :"
-#: src/scm/webid-oidc/program.scm:337
+#: src/scm/webid-oidc/program.scm:350
#, scheme-format
msgid ""
"\n"
@@ -1571,7 +1571,7 @@ msgstr ""
" authentifié, XXX-Agent par défaut. Pour un serveur complet, ceci\n"
" désactive l’authentification par webid-oidc."
-#: src/scm/webid-oidc/program.scm:343
+#: src/scm/webid-oidc/program.scm:356
#, scheme-format
msgid ""
"\n"
@@ -1584,7 +1584,7 @@ msgstr ""
" définit l’URI sortante du proxy inversé, seulement pour la\n"
" commande proxy-inversé."
-#: src/scm/webid-oidc/program.scm:349
+#: src/scm/webid-oidc/program.scm:362
msgid ""
"\n"
"Options for the identity provider:"
@@ -1592,7 +1592,7 @@ msgstr ""
"\n"
"Options du fournisseur d’identité :"
-#: src/scm/webid-oidc/program.scm:351
+#: src/scm/webid-oidc/program.scm:364
#, scheme-format
msgid ""
"\n"
@@ -1606,7 +1606,7 @@ msgstr ""
" nouvelle clé sera générée. Le serveur n’offre pas de service\n"
" HTTPS."
-#: src/scm/webid-oidc/program.scm:356
+#: src/scm/webid-oidc/program.scm:369
#, scheme-format
msgid ""
"\n"
@@ -1617,7 +1617,7 @@ msgstr ""
" -s WEBID, --~a=WEBID :\n"
" définit l'identité du sujet."
-#: src/scm/webid-oidc/program.scm:360
+#: src/scm/webid-oidc/program.scm:373
#, scheme-format
msgid ""
"\n"
@@ -1628,7 +1628,7 @@ msgstr ""
" -w MOT_DE_PASSE_CHIFFRÉ, --~a=MOT_DE_PASSE_CHIFFRÉ :\n"
" définit le mot de passe chiffré pour reconnaître l’utilisateur."
-#: src/scm/webid-oidc/program.scm:364
+#: src/scm/webid-oidc/program.scm:377
#, scheme-format
msgid ""
"\n"
@@ -1639,7 +1639,7 @@ msgstr ""
" -j URI, --~a=URI :\n"
" définit l’URI pour requêter les clés du serveur."
-#: src/scm/webid-oidc/program.scm:368
+#: src/scm/webid-oidc/program.scm:381
#, scheme-format
msgid ""
"\n"
@@ -1651,7 +1651,7 @@ msgstr ""
" définit l'URI du terminal d'autorisation de l’émetteur\n"
" d’identité."
-#: src/scm/webid-oidc/program.scm:372
+#: src/scm/webid-oidc/program.scm:385
#, scheme-format
msgid ""
"\n"
@@ -1662,7 +1662,7 @@ msgstr ""
" -t URI, --~a=URI :\n"
" définit le terminal de jeton de l’émetteur d’identité."
-#: src/scm/webid-oidc/program.scm:377
+#: src/scm/webid-oidc/program.scm:390
msgid ""
"\n"
"Options for the client service:"
@@ -1670,7 +1670,7 @@ msgstr ""
"\n"
"Options pour le service associé à un client :"
-#: src/scm/webid-oidc/program.scm:379
+#: src/scm/webid-oidc/program.scm:392
#, scheme-format
msgid ""
"\n"
@@ -1683,7 +1683,7 @@ msgstr ""
" définit l’identifiant web de l’application client, qui est\n"
" déréférencé pour une ressource sémantique."
-#: src/scm/webid-oidc/program.scm:384
+#: src/scm/webid-oidc/program.scm:397
#, scheme-format
msgid ""
"\n"
@@ -1697,7 +1697,7 @@ msgstr ""
" d’autorisation. La page de redirection affiche le code à coller\n"
" dans l’application."
-#: src/scm/webid-oidc/program.scm:389
+#: src/scm/webid-oidc/program.scm:402
#, scheme-format
msgid ""
"\n"
@@ -1709,7 +1709,7 @@ msgstr ""
" définit le nom de l’application visible par l’utilisateur (peut\n"
" être trompeur…)."
-#: src/scm/webid-oidc/program.scm:393
+#: src/scm/webid-oidc/program.scm:406
#, scheme-format
msgid ""
"\n"
@@ -1722,7 +1722,7 @@ msgstr ""
" définit l’URI présentant plus d’informations à propos de\n"
" l’application (peut aussi être trompeur)."
-#: src/scm/webid-oidc/program.scm:399
+#: src/scm/webid-oidc/program.scm:412
msgid ""
"\n"
"Environment variables:"
@@ -1730,18 +1730,28 @@ msgstr ""
"\n"
"Variables d’environnement :"
-#: src/scm/webid-oidc/program.scm:401
+#: src/scm/webid-oidc/program.scm:414
msgid ""
"\n"
-" LANG: set the locale of the user interface (for the server commands,\n"
-" the user is the system administrator)."
+" XML_CATALOG_FILES: the server will fetch resources on the web. By\n"
+" setting this environment variable to a space-separated list of\n"
+" catalog URIs, the server will redirect these requests to another\n"
+" server. Currently, it is not possible to load files from the\n"
+" file system, because there is no way to specify the\n"
+" content-type."
msgstr ""
"\n"
-" LANG : définit la locale de l’interface utilisateur (pour les\n"
-" commandes serveur, l’utilisateur est l’administrateur système)."
+" XML_CATALOG_FILES : le serveur devra télécharger des ressources sur\n"
+" le web. En définissant la valeur de cette variable\n"
+" d’environnement par une liste d’URIs de catalogues séparés par\n"
+" des espaces, le serveur redirigera ces requêtes vers un autre\n"
+" serveur. Actuellement il n’est pas possible de charger des\n"
+" fichiers depuis le système de fichiers, parce qu’il n’y a pas de\n"
+" moyen de spécifier le type de contenu."
-#: src/scm/webid-oidc/program.scm:405 src/scm/webid-oidc/program.scm:414
-#: src/scm/webid-oidc/program.scm:422 src/scm/webid-oidc/program.scm:430
+#: src/scm/webid-oidc/program.scm:422 src/scm/webid-oidc/program.scm:429
+#: src/scm/webid-oidc/program.scm:438 src/scm/webid-oidc/program.scm:446
+#: src/scm/webid-oidc/program.scm:454
#, scheme-format
msgid ""
"the-environment-variable|\n"
@@ -1750,7 +1760,17 @@ msgstr ""
" \n"
" Elle vaut actuellement ~s."
-#: src/scm/webid-oidc/program.scm:408
+#: src/scm/webid-oidc/program.scm:425
+msgid ""
+"\n"
+" LANG: set the locale of the user interface (for the server commands,\n"
+" the user is the system administrator)."
+msgstr ""
+"\n"
+" LANG : définit la locale de l’interface utilisateur (pour les\n"
+" commandes serveur, l’utilisateur est l’administrateur système)."
+
+#: src/scm/webid-oidc/program.scm:432
msgid ""
"\n"
" XDG_DATA_HOME: where the program stores persistent data. The\n"
@@ -1765,7 +1785,7 @@ msgstr ""
" ici. Pour un service système, il est recommandé d’utiliser\n"
" /var/lib."
-#: src/scm/webid-oidc/program.scm:417
+#: src/scm/webid-oidc/program.scm:441
msgid ""
"\n"
" XDG_CACHE_HOME: where the program stores and updates the seed file,\n"
@@ -1778,7 +1798,7 @@ msgstr ""
" supprimer ce dossier n’importe quand. Le fichier de graine sera\n"
" initialisé à partir de /dev/random."
-#: src/scm/webid-oidc/program.scm:425
+#: src/scm/webid-oidc/program.scm:449
msgid ""
"\n"
" HOME: if XDG_DATA_HOME or XDG_CACHE_HOME is not set, they are\n"
@@ -1790,7 +1810,7 @@ msgstr ""
" valeur est calculée à partir de la variable d’environnement\n"
" HOME. Elle n’est pas utilisée autrement."
-#: src/scm/webid-oidc/program.scm:434
+#: src/scm/webid-oidc/program.scm:458
msgid ""
"\n"
"Running a reverse proxy"
@@ -1798,7 +1818,7 @@ msgstr ""
"\n"
"Exécution d’un proxy inversé"
-#: src/scm/webid-oidc/program.scm:436
+#: src/scm/webid-oidc/program.scm:460
msgid ""
"\n"
"Suppose that you operate data.provider.com. You want to run an\n"
@@ -1820,7 +1840,7 @@ msgstr ""
"authentifié. https://private.data.provider.com ne doit accepter que\n"
"les requêtes depuis ce proxy inversé."
-#: src/scm/webid-oidc/program.scm:446
+#: src/scm/webid-oidc/program.scm:470
#, scheme-format
msgid ""
"\n"
@@ -1844,7 +1864,7 @@ msgstr ""
" --~a '/var/log/proxy.log' \\\n"
" --~a '/var/log/proxy.err'"
-#: src/scm/webid-oidc/program.scm:461
+#: src/scm/webid-oidc/program.scm:485
msgid ""
"\n"
"Running an identity provider"
@@ -1852,7 +1872,7 @@ msgstr ""
"\n"
"Exécution d’un fournisseur d’identité"
-#: src/scm/webid-oidc/program.scm:463
+#: src/scm/webid-oidc/program.scm:487
msgid ""
"\n"
"The identity provider running at webid-oidc-demo.planete-kraus.eu is\n"
@@ -1863,7 +1883,7 @@ msgstr ""
"webid-oidc-demo.planete-kraus.eu est invoqué avec les options\n"
"suivantes :"
-#: src/scm/webid-oidc/program.scm:467
+#: src/scm/webid-oidc/program.scm:491
#, scheme-format
msgid ""
"\n"
@@ -1897,7 +1917,7 @@ msgstr ""
" --~a 'https://webid-oidc-demo.planete-kraus.eu/token' \\\n"
" --~a $PORT"
-#: src/scm/webid-oidc/program.scm:487
+#: src/scm/webid-oidc/program.scm:511
msgid ""
"\n"
"Running the public pages for an application"
@@ -1905,7 +1925,7 @@ msgstr ""
"\n"
"Service des pages publiques pour une application"
-#: src/scm/webid-oidc/program.scm:489
+#: src/scm/webid-oidc/program.scm:513
msgid ""
"\n"
"The example client application pages for\n"
@@ -1915,7 +1935,7 @@ msgstr ""
"Les pages de l’application client d’exemple pour\n"
"webid-oidc-demo.planete-kraus.eu sont servies de cette façon :"
-#: src/scm/webid-oidc/program.scm:493
+#: src/scm/webid-oidc/program.scm:517
#, scheme-format
msgid ""
"\n"
@@ -1943,7 +1963,7 @@ msgstr ""
"html#Running-a-client' \\\n"
" --~a $PORT"
-#: src/scm/webid-oidc/program.scm:507
+#: src/scm/webid-oidc/program.scm:531
msgid ""
"\n"
"Running a full server"
@@ -1951,7 +1971,7 @@ msgstr ""
"\n"
"Exécution d’un serveur complet"
-#: src/scm/webid-oidc/program.scm:510
+#: src/scm/webid-oidc/program.scm:534
msgid ""
"\n"
"To run the server with identity provider and\n"
@@ -1963,7 +1983,7 @@ msgstr ""
"un serveur de ressources pour un utilisateur particulier, vous devez\n"
"combiner les options des parties."
-#: src/scm/webid-oidc/program.scm:514
+#: src/scm/webid-oidc/program.scm:538
#, scheme-format
msgid ""
"\n"
@@ -1997,7 +2017,7 @@ msgstr ""
" --~a 'https://data.planete-kraus.eu/token' \\\n"
" --~a '...port...'"
-#: src/scm/webid-oidc/program.scm:539
+#: src/scm/webid-oidc/program.scm:563
#, scheme-format
msgid ""
"\n"
@@ -2006,27 +2026,27 @@ msgstr ""
"\n"
"Si vous trouvez une erreur, veuillez en envoyer un rapport à ~a."
-#: src/scm/webid-oidc/program.scm:559
+#: src/scm/webid-oidc/program.scm:583
#, scheme-format
msgid "The --~a argument must be a number, not ~s.\n"
msgstr "L’argument de --~a doit être un nombre, pas ~s.\n"
-#: src/scm/webid-oidc/program.scm:565
+#: src/scm/webid-oidc/program.scm:589
#, scheme-format
msgid "The --~a argument must be an integer, not ~s.\n"
msgstr "L’argument de --~a doit être un entier, pas ~s.\n"
-#: src/scm/webid-oidc/program.scm:571
+#: src/scm/webid-oidc/program.scm:595
#, scheme-format
msgid "The --~a argument must be positive, ~s is invalid.\n"
msgstr "L’argument de --~a doit être positif, ~s est invalide.\n"
-#: src/scm/webid-oidc/program.scm:576
+#: src/scm/webid-oidc/program.scm:600
#, scheme-format
msgid "The --~a argument must be less than 65536, ~s is invalid.\n"
msgstr "L’argument de --~a doit être inférieur à 65536, ~s est invalide.\n"
-#: src/scm/webid-oidc/program.scm:618
+#: src/scm/webid-oidc/program.scm:642
#, scheme-format
msgid ""
"Usage: ~a COMMAND [OPTIONS]...\n"
@@ -2035,18 +2055,18 @@ msgstr ""
"Utilisation : ~a COMMANDE [OPTIONS]...\n"
"Voir --~a (-h).\n"
-#: src/scm/webid-oidc/program.scm:628 src/scm/webid-oidc/program.scm:650
-#: src/scm/webid-oidc/program.scm:722
+#: src/scm/webid-oidc/program.scm:652 src/scm/webid-oidc/program.scm:674
+#: src/scm/webid-oidc/program.scm:746
#, scheme-format
msgid "You must pass --~a to set the server name.\n"
msgstr "Vous devez passer --~a pour définir le nom du serveur.\n"
-#: src/scm/webid-oidc/program.scm:632
+#: src/scm/webid-oidc/program.scm:656
#, scheme-format
msgid "You must pass --~a to set the backend URI.\n"
msgstr "Vous devez passer --~a pour définir l'URI du service d’arrière-plan.\n"
-#: src/scm/webid-oidc/program.scm:654 src/scm/webid-oidc/program.scm:726
+#: src/scm/webid-oidc/program.scm:678 src/scm/webid-oidc/program.scm:750
#, scheme-format
msgid ""
"You must pass --~a to set the file where to store the identity provider "
@@ -2055,59 +2075,59 @@ msgstr ""
"Vous devez passer --~a pour définir le nom du fichier pour sauvegarder\n"
"la clé du fournisseur d’identité.\n"
-#: src/scm/webid-oidc/program.scm:658 src/scm/webid-oidc/program.scm:730
+#: src/scm/webid-oidc/program.scm:682 src/scm/webid-oidc/program.scm:754
#, scheme-format
msgid "You must pass --~a to set the subject of the identity provider.\n"
msgstr ""
"Vous devez passer --~a pour définir le sujet du fournisseur d’identité.\n"
-#: src/scm/webid-oidc/program.scm:662 src/scm/webid-oidc/program.scm:734
+#: src/scm/webid-oidc/program.scm:686 src/scm/webid-oidc/program.scm:758
#, scheme-format
msgid "You must pass --~a to set the subject’s encrypted password.\n"
msgstr ""
"Vous devez passer --~a pour définir le mot de passe chiffré du sujet.\n"
-#: src/scm/webid-oidc/program.scm:666 src/scm/webid-oidc/program.scm:738
+#: src/scm/webid-oidc/program.scm:690 src/scm/webid-oidc/program.scm:762
#, scheme-format
msgid "You must pass --~a to set the JWKS URI.\n"
msgstr "Vous devez passer --~a pour définir l'URI du JWKS.\n"
-#: src/scm/webid-oidc/program.scm:670 src/scm/webid-oidc/program.scm:742
+#: src/scm/webid-oidc/program.scm:694 src/scm/webid-oidc/program.scm:766
#, scheme-format
msgid "You must pass --~a to set the authorization endpoint URI.\n"
msgstr ""
"Vous devez passer --~a pour définir l'URI du terminal d'autorisation.\n"
-#: src/scm/webid-oidc/program.scm:674 src/scm/webid-oidc/program.scm:746
+#: src/scm/webid-oidc/program.scm:698 src/scm/webid-oidc/program.scm:770
#, scheme-format
msgid "You must pass --~a to set the token endpoint URI.\n"
msgstr "Vous devez passer --~a pour définir l'URI du terminal de jeton.\n"
-#: src/scm/webid-oidc/program.scm:694
+#: src/scm/webid-oidc/program.scm:718
#, scheme-format
msgid "You must pass --~a to set the application web ID.\n"
msgstr ""
"Vous devez passer --~a pour définir l'identifiant web de l’application.\n"
-#: src/scm/webid-oidc/program.scm:698
+#: src/scm/webid-oidc/program.scm:722
#, scheme-format
msgid "You must pass --~a to set the redirection URI.\n"
msgstr "Vous devez passer --~a pour définir l'URI de redirection.\n"
-#: src/scm/webid-oidc/program.scm:702
+#: src/scm/webid-oidc/program.scm:726
#, scheme-format
msgid "You must pass --~a to set the informative client name.\n"
msgstr ""
"Vous devez passer --~a pour donner un nom pour l’application à titre "
"informatif.\n"
-#: src/scm/webid-oidc/program.scm:706
+#: src/scm/webid-oidc/program.scm:730
#, scheme-format
msgid "You must pass --~a to set the informative client URI.\n"
msgstr ""
"Vous devez passer --~a pour définir l'URI du client, à titre informatif.\n"
-#: src/scm/webid-oidc/program.scm:793
+#: src/scm/webid-oidc/program.scm:817
#, scheme-format
msgid "Unknown command ~s\n"
msgstr "Commande inconnue ~s\n"
diff --git a/po/webid-oidc.pot b/po/webid-oidc.pot
index 2507196..94c0247 100644
--- a/po/webid-oidc.pot
+++ b/po/webid-oidc.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: webid-oidc SNAPSHOT\n"
"Report-Msgid-Bugs-To: vivien@planete-kraus.eu\n"
-"POT-Creation-Date: 2021-07-27 16:04+0200\n"
+"POT-Creation-Date: 2021-07-28 16:56+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -969,15 +969,15 @@ msgid "Warning: ~a\n"
msgstr ""
#: src/scm/webid-oidc/hello-world.scm:48 src/scm/webid-oidc/example-app.scm:116
-#: src/scm/webid-oidc/program.scm:204
+#: src/scm/webid-oidc/program.scm:217
msgid "command-line|version"
msgstr ""
-#: src/scm/webid-oidc/hello-world.scm:50 src/scm/webid-oidc/program.scm:206
+#: src/scm/webid-oidc/hello-world.scm:50 src/scm/webid-oidc/program.scm:219
msgid "command-line|complete-corresponding-source"
msgstr ""
-#: src/scm/webid-oidc/hello-world.scm:52 src/scm/webid-oidc/program.scm:208
+#: src/scm/webid-oidc/hello-world.scm:52 src/scm/webid-oidc/program.scm:221
msgid "command-line|help"
msgstr ""
@@ -985,11 +985,11 @@ msgstr ""
msgid "command-line|port"
msgstr ""
-#: src/scm/webid-oidc/hello-world.scm:56 src/scm/webid-oidc/program.scm:238
+#: src/scm/webid-oidc/hello-world.scm:56 src/scm/webid-oidc/program.scm:251
msgid "command-line|log-file"
msgstr ""
-#: src/scm/webid-oidc/hello-world.scm:58 src/scm/webid-oidc/program.scm:240
+#: src/scm/webid-oidc/hello-world.scm:58 src/scm/webid-oidc/program.scm:253
msgid "command-line|error-file"
msgstr ""
@@ -1023,12 +1023,12 @@ msgid ""
msgstr ""
#: src/scm/webid-oidc/hello-world.scm:103
-#: src/scm/webid-oidc/example-app.scm:159 src/scm/webid-oidc/program.scm:544
+#: src/scm/webid-oidc/example-app.scm:159 src/scm/webid-oidc/program.scm:568
#, scheme-format
msgid "~a version ~a\n"
msgstr ""
-#: src/scm/webid-oidc/hello-world.scm:112 src/scm/webid-oidc/program.scm:552
+#: src/scm/webid-oidc/hello-world.scm:112 src/scm/webid-oidc/program.scm:576
msgid ""
"You are legally required to link to the complete corresponding source code.\n"
msgstr ""
@@ -1147,106 +1147,106 @@ msgstr ""
msgid "There was an error: ~a\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:98
+#: src/scm/webid-oidc/program.scm:111
#, scheme-format
msgid "~a: ~a: Internal server error: ~a\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:112
+#: src/scm/webid-oidc/program.scm:125
#, scheme-format
msgid ""
"The client locale ~s can’t be approximated by system locale ~s (because ~a), "
"using C.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:136
+#: src/scm/webid-oidc/program.scm:149
#, scheme-format
msgid "~a: ~s ~a ~s ~a\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:138
+#: src/scm/webid-oidc/program.scm:151
#, scheme-format
msgid "~a: ~a (~a)"
msgstr ""
-#: src/scm/webid-oidc/program.scm:142
+#: src/scm/webid-oidc/program.scm:155
#, scheme-format
msgid "~a: ~a"
msgstr ""
-#: src/scm/webid-oidc/program.scm:152
+#: src/scm/webid-oidc/program.scm:165
#, scheme-format
msgid "(there was an error: ~a)"
msgstr ""
-#: src/scm/webid-oidc/program.scm:210
+#: src/scm/webid-oidc/program.scm:223
msgid "command-line|server|port"
msgstr ""
-#: src/scm/webid-oidc/program.scm:212
+#: src/scm/webid-oidc/program.scm:225
msgid "command-line|server|server-name"
msgstr ""
-#: src/scm/webid-oidc/program.scm:214
+#: src/scm/webid-oidc/program.scm:227
msgid "command-line|server|reverse-proxy|backend-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:216
+#: src/scm/webid-oidc/program.scm:229
msgid "command-line|server|reverse-proxy|header"
msgstr ""
-#: src/scm/webid-oidc/program.scm:218
+#: src/scm/webid-oidc/program.scm:231
msgid "command-line|server|issuer|key-file"
msgstr ""
-#: src/scm/webid-oidc/program.scm:220
+#: src/scm/webid-oidc/program.scm:233
msgid "command-line|server|issuer|subject"
msgstr ""
-#: src/scm/webid-oidc/program.scm:222
+#: src/scm/webid-oidc/program.scm:235
msgid "command-line|server|issuer|encrypted-password"
msgstr ""
-#: src/scm/webid-oidc/program.scm:224
+#: src/scm/webid-oidc/program.scm:237
msgid "command-line|server|issuer|jwks-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:226
+#: src/scm/webid-oidc/program.scm:239
msgid "command-line|server|issuer|authorization-endpoint-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:228
+#: src/scm/webid-oidc/program.scm:241
msgid "command-line|server|issuer|token-endpoint-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:230
+#: src/scm/webid-oidc/program.scm:243
msgid "command-line|server|client-id"
msgstr ""
-#: src/scm/webid-oidc/program.scm:232
+#: src/scm/webid-oidc/program.scm:245
msgid "command-line|server|redirect-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:234
+#: src/scm/webid-oidc/program.scm:247
msgid "command-line|server|client-name"
msgstr ""
-#: src/scm/webid-oidc/program.scm:236
+#: src/scm/webid-oidc/program.scm:249
msgid "command-line|server|client-uri"
msgstr ""
-#: src/scm/webid-oidc/program.scm:265
+#: src/scm/webid-oidc/program.scm:278
#, scheme-format
msgid "Usage: ~a COMMAND [OPTIONS]...\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:269
+#: src/scm/webid-oidc/program.scm:282
msgid ""
"\n"
"Run the webid-oidc COMMAND."
msgstr ""
-#: src/scm/webid-oidc/program.scm:272
+#: src/scm/webid-oidc/program.scm:285
msgid ""
"\n"
"This program is covered by the GNU Affero GPL, version 3 or\n"
@@ -1256,13 +1256,13 @@ msgid ""
"to all responses."
msgstr ""
-#: src/scm/webid-oidc/program.scm:279
+#: src/scm/webid-oidc/program.scm:292
msgid ""
"\n"
"Available commands:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:281
+#: src/scm/webid-oidc/program.scm:294
#, scheme-format
msgid ""
"\n"
@@ -1270,12 +1270,12 @@ msgid ""
" run an authenticating reverse proxy."
msgstr ""
-#: src/scm/webid-oidc/program.scm:284 src/scm/webid-oidc/program.scm:456
-#: src/scm/webid-oidc/program.scm:625
+#: src/scm/webid-oidc/program.scm:297 src/scm/webid-oidc/program.scm:480
+#: src/scm/webid-oidc/program.scm:649
msgid "command-line|command|reverse-proxy"
msgstr ""
-#: src/scm/webid-oidc/program.scm:285
+#: src/scm/webid-oidc/program.scm:298
#, scheme-format
msgid ""
"\n"
@@ -1283,12 +1283,12 @@ msgid ""
" run an identity provider."
msgstr ""
-#: src/scm/webid-oidc/program.scm:288 src/scm/webid-oidc/program.scm:481
-#: src/scm/webid-oidc/program.scm:647
+#: src/scm/webid-oidc/program.scm:301 src/scm/webid-oidc/program.scm:505
+#: src/scm/webid-oidc/program.scm:671
msgid "command-line|command|identity-provider"
msgstr ""
-#: src/scm/webid-oidc/program.scm:289
+#: src/scm/webid-oidc/program.scm:302
#, scheme-format
msgid ""
"\n"
@@ -1296,12 +1296,12 @@ msgid ""
" serve the pages for a public application."
msgstr ""
-#: src/scm/webid-oidc/program.scm:292 src/scm/webid-oidc/program.scm:502
-#: src/scm/webid-oidc/program.scm:691
+#: src/scm/webid-oidc/program.scm:305 src/scm/webid-oidc/program.scm:526
+#: src/scm/webid-oidc/program.scm:715
msgid "command-line|command|client-service"
msgstr ""
-#: src/scm/webid-oidc/program.scm:293
+#: src/scm/webid-oidc/program.scm:306
#, scheme-format
msgid ""
"\n"
@@ -1310,18 +1310,18 @@ msgid ""
" facility."
msgstr ""
-#: src/scm/webid-oidc/program.scm:297 src/scm/webid-oidc/program.scm:528
-#: src/scm/webid-oidc/program.scm:720
+#: src/scm/webid-oidc/program.scm:310 src/scm/webid-oidc/program.scm:552
+#: src/scm/webid-oidc/program.scm:744
msgid "command-line|command|server"
msgstr ""
-#: src/scm/webid-oidc/program.scm:299
+#: src/scm/webid-oidc/program.scm:312
msgid ""
"\n"
"General options:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:301
+#: src/scm/webid-oidc/program.scm:314
#, scheme-format
msgid ""
"\n"
@@ -1330,7 +1330,7 @@ msgid ""
" code. For instance, this would be an URI pointing to a tarball."
msgstr ""
-#: src/scm/webid-oidc/program.scm:306
+#: src/scm/webid-oidc/program.scm:319
#, scheme-format
msgid ""
"\n"
@@ -1338,7 +1338,7 @@ msgid ""
" display a short help message and exit."
msgstr ""
-#: src/scm/webid-oidc/program.scm:310
+#: src/scm/webid-oidc/program.scm:323
#, scheme-format
msgid ""
"\n"
@@ -1346,7 +1346,7 @@ msgid ""
" display the version information (~a) and exit."
msgstr ""
-#: src/scm/webid-oidc/program.scm:315
+#: src/scm/webid-oidc/program.scm:328
#, scheme-format
msgid ""
"\n"
@@ -1354,7 +1354,7 @@ msgid ""
" redirect the program standard output to FILE.log."
msgstr ""
-#: src/scm/webid-oidc/program.scm:319
+#: src/scm/webid-oidc/program.scm:332
#, scheme-format
msgid ""
"\n"
@@ -1362,13 +1362,13 @@ msgid ""
" redirect the program errors to FILE.err."
msgstr ""
-#: src/scm/webid-oidc/program.scm:324
+#: src/scm/webid-oidc/program.scm:337
msgid ""
"\n"
"General server-side options:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:326
+#: src/scm/webid-oidc/program.scm:339
#, scheme-format
msgid ""
"\n"
@@ -1376,7 +1376,7 @@ msgid ""
" set the server port to bind, 8080 by default."
msgstr ""
-#: src/scm/webid-oidc/program.scm:330
+#: src/scm/webid-oidc/program.scm:343
#, scheme-format
msgid ""
"\n"
@@ -1384,13 +1384,13 @@ msgid ""
" set the public server URI (scheme, userinfo, host, and port)."
msgstr ""
-#: src/scm/webid-oidc/program.scm:335
+#: src/scm/webid-oidc/program.scm:348
msgid ""
"\n"
"Options for the resource server:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:337
+#: src/scm/webid-oidc/program.scm:350
#, scheme-format
msgid ""
"\n"
@@ -1400,7 +1400,7 @@ msgid ""
" authentication."
msgstr ""
-#: src/scm/webid-oidc/program.scm:343
+#: src/scm/webid-oidc/program.scm:356
#, scheme-format
msgid ""
"\n"
@@ -1409,13 +1409,13 @@ msgid ""
" reverse-proxy command."
msgstr ""
-#: src/scm/webid-oidc/program.scm:349
+#: src/scm/webid-oidc/program.scm:362
msgid ""
"\n"
"Options for the identity provider:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:351
+#: src/scm/webid-oidc/program.scm:364
#, scheme-format
msgid ""
"\n"
@@ -1424,7 +1424,7 @@ msgid ""
" key is generated. The server does not offer an HTTPS service."
msgstr ""
-#: src/scm/webid-oidc/program.scm:356
+#: src/scm/webid-oidc/program.scm:369
#, scheme-format
msgid ""
"\n"
@@ -1432,7 +1432,7 @@ msgid ""
" set the identity of the subject."
msgstr ""
-#: src/scm/webid-oidc/program.scm:360
+#: src/scm/webid-oidc/program.scm:373
#, scheme-format
msgid ""
"\n"
@@ -1440,7 +1440,7 @@ msgid ""
" set the encrypted password to recognize the user."
msgstr ""
-#: src/scm/webid-oidc/program.scm:364
+#: src/scm/webid-oidc/program.scm:377
#, scheme-format
msgid ""
"\n"
@@ -1448,7 +1448,7 @@ msgid ""
" set the URI to query the key of the server."
msgstr ""
-#: src/scm/webid-oidc/program.scm:368
+#: src/scm/webid-oidc/program.scm:381
#, scheme-format
msgid ""
"\n"
@@ -1456,7 +1456,7 @@ msgid ""
" set the authorization endpoint of the issuer."
msgstr ""
-#: src/scm/webid-oidc/program.scm:372
+#: src/scm/webid-oidc/program.scm:385
#, scheme-format
msgid ""
"\n"
@@ -1464,13 +1464,13 @@ msgid ""
" set the token endpoint of the issuer."
msgstr ""
-#: src/scm/webid-oidc/program.scm:377
+#: src/scm/webid-oidc/program.scm:390
msgid ""
"\n"
"Options for the client service:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:379
+#: src/scm/webid-oidc/program.scm:392
#, scheme-format
msgid ""
"\n"
@@ -1479,7 +1479,7 @@ msgid ""
" dereferenced to a semantic resource."
msgstr ""
-#: src/scm/webid-oidc/program.scm:384
+#: src/scm/webid-oidc/program.scm:397
#, scheme-format
msgid ""
"\n"
@@ -1488,7 +1488,7 @@ msgid ""
" page is presented with the code to paste in the application."
msgstr ""
-#: src/scm/webid-oidc/program.scm:389
+#: src/scm/webid-oidc/program.scm:402
#, scheme-format
msgid ""
"\n"
@@ -1496,7 +1496,7 @@ msgid ""
" set the user-visible application name (may be misleading...)."
msgstr ""
-#: src/scm/webid-oidc/program.scm:393
+#: src/scm/webid-oidc/program.scm:406
#, scheme-format
msgid ""
"\n"
@@ -1505,28 +1505,40 @@ msgid ""
" application (again, may be misleading)."
msgstr ""
-#: src/scm/webid-oidc/program.scm:399
+#: src/scm/webid-oidc/program.scm:412
msgid ""
"\n"
"Environment variables:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:401
+#: src/scm/webid-oidc/program.scm:414
msgid ""
"\n"
-" LANG: set the locale of the user interface (for the server commands,\n"
-" the user is the system administrator)."
+" XML_CATALOG_FILES: the server will fetch resources on the web. By\n"
+" setting this environment variable to a space-separated list of\n"
+" catalog URIs, the server will redirect these requests to another\n"
+" server. Currently, it is not possible to load files from the\n"
+" file system, because there is no way to specify the\n"
+" content-type."
msgstr ""
-#: src/scm/webid-oidc/program.scm:405 src/scm/webid-oidc/program.scm:414
-#: src/scm/webid-oidc/program.scm:422 src/scm/webid-oidc/program.scm:430
+#: src/scm/webid-oidc/program.scm:422 src/scm/webid-oidc/program.scm:429
+#: src/scm/webid-oidc/program.scm:438 src/scm/webid-oidc/program.scm:446
+#: src/scm/webid-oidc/program.scm:454
#, scheme-format
msgid ""
"the-environment-variable|\n"
" It is currently set to ~s."
msgstr ""
-#: src/scm/webid-oidc/program.scm:408
+#: src/scm/webid-oidc/program.scm:425
+msgid ""
+"\n"
+" LANG: set the locale of the user interface (for the server commands,\n"
+" the user is the system administrator)."
+msgstr ""
+
+#: src/scm/webid-oidc/program.scm:432
msgid ""
"\n"
" XDG_DATA_HOME: where the program stores persistent data. The\n"
@@ -1535,7 +1547,7 @@ msgid ""
" recommended to set it to /var/lib."
msgstr ""
-#: src/scm/webid-oidc/program.scm:417
+#: src/scm/webid-oidc/program.scm:441
msgid ""
"\n"
" XDG_CACHE_HOME: where the program stores and updates the seed file,\n"
@@ -1543,7 +1555,7 @@ msgid ""
" time. The seed file will be initialized from /dev/random."
msgstr ""
-#: src/scm/webid-oidc/program.scm:425
+#: src/scm/webid-oidc/program.scm:449
msgid ""
"\n"
" HOME: if XDG_DATA_HOME or XDG_CACHE_HOME is not set, they are\n"
@@ -1551,13 +1563,13 @@ msgid ""
" not used otherwise."
msgstr ""
-#: src/scm/webid-oidc/program.scm:434
+#: src/scm/webid-oidc/program.scm:458
msgid ""
"\n"
"Running a reverse proxy"
msgstr ""
-#: src/scm/webid-oidc/program.scm:436
+#: src/scm/webid-oidc/program.scm:460
msgid ""
"\n"
"Suppose that you operate data.provider.com. You want to run an\n"
@@ -1570,7 +1582,7 @@ msgid ""
"from this reverse proxy."
msgstr ""
-#: src/scm/webid-oidc/program.scm:446
+#: src/scm/webid-oidc/program.scm:470
#, scheme-format
msgid ""
"\n"
@@ -1584,20 +1596,20 @@ msgid ""
" --~a '/var/log/proxy.err'"
msgstr ""
-#: src/scm/webid-oidc/program.scm:461
+#: src/scm/webid-oidc/program.scm:485
msgid ""
"\n"
"Running an identity provider"
msgstr ""
-#: src/scm/webid-oidc/program.scm:463
+#: src/scm/webid-oidc/program.scm:487
msgid ""
"\n"
"The identity provider running at webid-oidc-demo.planete-kraus.eu is\n"
"invoked with the following options:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:467
+#: src/scm/webid-oidc/program.scm:491
#, scheme-format
msgid ""
"\n"
@@ -1616,20 +1628,20 @@ msgid ""
" --~a $PORT"
msgstr ""
-#: src/scm/webid-oidc/program.scm:487
+#: src/scm/webid-oidc/program.scm:511
msgid ""
"\n"
"Running the public pages for an application"
msgstr ""
-#: src/scm/webid-oidc/program.scm:489
+#: src/scm/webid-oidc/program.scm:513
msgid ""
"\n"
"The example client application pages for\n"
"webid-oidc-demo.planete-kraus.eu are served this way:"
msgstr ""
-#: src/scm/webid-oidc/program.scm:493
+#: src/scm/webid-oidc/program.scm:517
#, scheme-format
msgid ""
"\n"
@@ -1645,13 +1657,13 @@ msgid ""
" --~a $PORT"
msgstr ""
-#: src/scm/webid-oidc/program.scm:507
+#: src/scm/webid-oidc/program.scm:531
msgid ""
"\n"
"Running a full server"
msgstr ""
-#: src/scm/webid-oidc/program.scm:510
+#: src/scm/webid-oidc/program.scm:534
msgid ""
"\n"
"To run the server with identity provider and\n"
@@ -1659,7 +1671,7 @@ msgid ""
"options for the parts."
msgstr ""
-#: src/scm/webid-oidc/program.scm:514
+#: src/scm/webid-oidc/program.scm:538
#, scheme-format
msgid ""
"\n"
@@ -1678,104 +1690,104 @@ msgid ""
" --~a '...port...'"
msgstr ""
-#: src/scm/webid-oidc/program.scm:539
+#: src/scm/webid-oidc/program.scm:563
#, scheme-format
msgid ""
"\n"
"If you find a bug, then please send a report to ~a."
msgstr ""
-#: src/scm/webid-oidc/program.scm:559
+#: src/scm/webid-oidc/program.scm:583
#, scheme-format
msgid "The --~a argument must be a number, not ~s.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:565
+#: src/scm/webid-oidc/program.scm:589
#, scheme-format
msgid "The --~a argument must be an integer, not ~s.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:571
+#: src/scm/webid-oidc/program.scm:595
#, scheme-format
msgid "The --~a argument must be positive, ~s is invalid.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:576
+#: src/scm/webid-oidc/program.scm:600
#, scheme-format
msgid "The --~a argument must be less than 65536, ~s is invalid.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:618
+#: src/scm/webid-oidc/program.scm:642
#, scheme-format
msgid ""
"Usage: ~a COMMAND [OPTIONS]...\n"
"See --~a (-h).\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:628 src/scm/webid-oidc/program.scm:650
-#: src/scm/webid-oidc/program.scm:722
+#: src/scm/webid-oidc/program.scm:652 src/scm/webid-oidc/program.scm:674
+#: src/scm/webid-oidc/program.scm:746
#, scheme-format
msgid "You must pass --~a to set the server name.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:632
+#: src/scm/webid-oidc/program.scm:656
#, scheme-format
msgid "You must pass --~a to set the backend URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:654 src/scm/webid-oidc/program.scm:726
+#: src/scm/webid-oidc/program.scm:678 src/scm/webid-oidc/program.scm:750
#, scheme-format
msgid ""
"You must pass --~a to set the file where to store the identity provider "
"key.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:658 src/scm/webid-oidc/program.scm:730
+#: src/scm/webid-oidc/program.scm:682 src/scm/webid-oidc/program.scm:754
#, scheme-format
msgid "You must pass --~a to set the subject of the identity provider.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:662 src/scm/webid-oidc/program.scm:734
+#: src/scm/webid-oidc/program.scm:686 src/scm/webid-oidc/program.scm:758
#, scheme-format
msgid "You must pass --~a to set the subject’s encrypted password.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:666 src/scm/webid-oidc/program.scm:738
+#: src/scm/webid-oidc/program.scm:690 src/scm/webid-oidc/program.scm:762
#, scheme-format
msgid "You must pass --~a to set the JWKS URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:670 src/scm/webid-oidc/program.scm:742
+#: src/scm/webid-oidc/program.scm:694 src/scm/webid-oidc/program.scm:766
#, scheme-format
msgid "You must pass --~a to set the authorization endpoint URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:674 src/scm/webid-oidc/program.scm:746
+#: src/scm/webid-oidc/program.scm:698 src/scm/webid-oidc/program.scm:770
#, scheme-format
msgid "You must pass --~a to set the token endpoint URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:694
+#: src/scm/webid-oidc/program.scm:718
#, scheme-format
msgid "You must pass --~a to set the application web ID.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:698
+#: src/scm/webid-oidc/program.scm:722
#, scheme-format
msgid "You must pass --~a to set the redirection URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:702
+#: src/scm/webid-oidc/program.scm:726
#, scheme-format
msgid "You must pass --~a to set the informative client name.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:706
+#: src/scm/webid-oidc/program.scm:730
#, scheme-format
msgid "You must pass --~a to set the informative client URI.\n"
msgstr ""
-#: src/scm/webid-oidc/program.scm:793
+#: src/scm/webid-oidc/program.scm:817
#, scheme-format
msgid "Unknown command ~s\n"
msgstr ""
diff --git a/src/scm/webid-oidc/Makefile.am b/src/scm/webid-oidc/Makefile.am
index 0046ca4..acd9ec9 100644
--- a/src/scm/webid-oidc/Makefile.am
+++ b/src/scm/webid-oidc/Makefile.am
@@ -45,7 +45,8 @@ dist_webidoidcmod_DATA += \
%reldir%/example-app.scm \
%reldir%/rdf-index.scm \
%reldir%/http-link.scm \
- %reldir%/offloading.scm
+ %reldir%/offloading.scm \
+ %reldir%/catalog.scm
webidoidcgo_DATA += \
%reldir%/errors.go \
@@ -78,7 +79,8 @@ webidoidcgo_DATA += \
%reldir%/example-app.go \
%reldir%/rdf-index.go \
%reldir%/http-link.go \
- %reldir%/offloading.go
+ %reldir%/offloading.go \
+ %reldir%/catalog.go
EXTRA_DIST += %reldir%/ChangeLog
diff --git a/src/scm/webid-oidc/catalog.scm b/src/scm/webid-oidc/catalog.scm
new file mode 100644
index 0000000..11e0877
--- /dev/null
+++ b/src/scm/webid-oidc/catalog.scm
@@ -0,0 +1,264 @@
+;; webid-oidc, implementation of the Solid specification
+;; Copyright (C) 2020, 2021 Vivien Kraus
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU Affero General Public License as
+;; published by the Free Software Foundation, either version 3 of the
+;; License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU Affero General Public License for more details.
+
+;; You should have received a copy of the GNU Affero General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+(define-module (webid-oidc catalog)
+ #:use-module (web uri)
+ #:use-module (web client)
+ #:use-module (ice-9 match)
+ #:use-module (web client)
+ #:use-module (rnrs bytevectors)
+ #:use-module (sxml simple)
+ #:use-module (sxml match)
+ #:use-module (ice-9 optargs)
+ #:use-module (ice-9 receive)
+ #:export (resolve-uri))
+
+(define useful-namespaces
+ '((ct . "urn:oasis:names:tc:entity:xmlns:xml:catalog")
+ (xml . "http://www.w3.org/XML/1998/namespace")))
+
+(define (run-catalog-entry do-examine-catalog base first-entry rest other-entries
+ uri
+ candidate match-length next-catalogs-rev)
+ ;; do-examine-catalog is the recursive function to examine a new catalog.
+ ;; base is the current base.
+ ;; rest is a catalog containing the other entries.
+
+ ;; This function is there because I can’t nest two sxml pattern
+ ;; matchings.
+ (sxml-match
+ first-entry
+ ((ct:group (@ (xml:base ,new-base)) ,group-entries ...)
+ (let ((new-base (string->uri* base new-base)))
+ (receive (candidate match-length next-catalogs-rev)
+ (do-examine-catalog
+ `(*TOP*
+ (ct:catalog (@ (xml:base ,(uri->string new-base)))
+ ,@group-entries))
+ candidate match-length next-catalogs-rev)
+ (do-examine-catalog rest candidate match-length next-catalogs-rev))))
+ ((ct:group ,group-entries ...)
+ ;; The group does not have a specific base, we can merge the
+ ;; entries with other-entries.
+ (do-examine-catalog
+ `(*TOP*
+ (ct:catalog (@ (xml:base ,(uri->string base)))
+ ,@group-entries
+ ,@other-entries))
+ candidate match-length next-catalogs-rev))
+ ((ct:uri (@ (name ,exact-pattern)
+ (uri ,replacement)
+ (xml:base ,new-base)))
+ ;; exact-pattern is not relative to xml:base
+ (if (equal? (string->uri exact-pattern) uri)
+ ;; Perfect replacement, stop here
+ (values
+ ;; but replacement is relative to xml:base
+ (string->uri* base new-base replacement)
+ (string-length (uri->string uri))
+ '())
+ (do-examine-catalog rest candidate match-length next-catalogs-rev)))
+ ((ct:rewriteUri (@ (name ,pattern)
+ (uri ,replacement)
+ (xml:base ,new-base)))
+ (when (and (string-prefix? pattern (uri->string uri))
+ (> (string-length pattern) match-length))
+ ;; The match is significant
+ (set! candidate
+ (string->uri* base
+ new-base
+ (string-append
+ replacement
+ (substring (uri->string uri)
+ (string-length pattern)))))
+ (set! match-length (string-length pattern)))
+ ;; Maybe the match was perfect, in which case we must stop
+ ;; there.
+ (if (eqv? match-length (string-length (uri->string uri)))
+ (values candidate match-length '())
+ (do-examine-catalog rest candidate match-length next-catalogs-rev)))
+ ((ct:uriSuffix (@ (uriSuffix ,suffix)
+ (uri ,replacement)
+ (base ,new-base)))
+ (when (and (string-suffix? suffix (uri->string uri))
+ (> (string-length suffix) match-length))
+ (let* ((length-kept
+ (- (string-length (uri->string uri))
+ (string-length suffix)))
+ (part-kept (substring (uri->string uri) 0 length-kept)))
+ (set! candidate
+ (string->uri* base new-base (string-append part-kept suffix)))
+ (set! match-length (string-length suffix))))
+ (if (eqv? match-length (string-length (uri->string uri)))
+ (values candidate match-length '())
+ (do-examine-catalog rest candidate match-length next-catalogs-rev)))
+ ((ct:delegateURI (@ (uriStartString ,pattern)
+ (catalog ,next-catalog)
+ (base ,new-base)))
+ (if (string-prefix? pattern (uri->string uri))
+ ;; Perfect match
+ (values #f 0 (list (string->uri* base new-base next-catalog)))
+ (do-examine-catalog rest candidate match-length next-catalogs-rev)))
+ ((ct:nextCatalog (@ (catalog ,next-catalog)
+ (base ,new-base)))
+ (do-examine-catalog rest candidate match-length
+ (cons (string->uri* base new-base next-catalog)
+ next-catalogs)))
+ (,else
+ (match first-entry
+ ((node-name attributes/children ...)
+ ;; The node is simply missing a base
+ (do-examine-catalog
+ `(*TOP*
+ (ct:catalog (@ (xml:base ,(uri->string base)))
+ (,node-name (@ (xml:base ,(uri->string base))) ,@attributes/children)
+ ,@other-entries))
+ candidate match-length next-catalogs-rev))
+ (else
+ (do-examine-catalog rest candidate match-length next-catalogs-rev))))))
+
+(define (make-absolute base uri)
+ (when (string? base)
+ (set! base (string->uri base)))
+ (let ((final-scheme (or (uri-scheme uri) (uri-scheme base)))
+ (uri-with-final-authority
+ (if (or (uri-scheme uri)
+ (uri-userinfo uri)
+ (uri-host uri)
+ (uri-port uri))
+ ;; we should use that of uri
+ uri
+ ;; nothing specified, use base
+ base))
+ (final-path
+ (if (or (uri-scheme uri)
+ (uri-userinfo uri)
+ (uri-host uri)
+ (uri-port uri)
+ (string-prefix? "/" (uri-path uri)))
+ (uri-path uri)
+ (let with-absolute-relative-path
+ ((defined '())
+ (components
+ (append (split-and-decode-uri-path (uri-path base))
+ (split-and-decode-uri-path (uri-path uri)))))
+ (match components
+ (() (string-append "/" (encode-and-join-uri-path (reverse defined))))
+ (("" components ...) (with-absolute-relative-path defined components))
+ (("." components ...) (with-absolute-relative-path defined components))
+ ((".." components ...)
+ (match defined
+ (() (error "Invalid relative URI"))
+ ((dropped kept ...)
+ (with-absolute-relative-path kept components))))
+ ((head components ...)
+ (with-absolute-relative-path `(,head ,@defined) components))))))
+ (uri-with-final-query
+ (if (or (uri-scheme uri)
+ (uri-userinfo uri)
+ (uri-host uri)
+ (uri-port uri)
+ (not (equal? (uri-path uri) ""))
+ (uri-query uri))
+ uri
+ base)))
+ (build-uri final-scheme
+ #:userinfo (uri-userinfo uri-with-final-authority)
+ #:host (uri-host uri-with-final-authority)
+ #:port (uri-port uri-with-final-authority)
+ #:path final-path
+ #:query (uri-query uri-with-final-query)
+ #:fragment (uri-fragment uri))))
+
+(define (string->uri** base str)
+ (make-absolute base (string->uri-reference str)))
+
+(define (string->uri* base str . rest)
+ (if (null? rest)
+ (string->uri** base str)
+ (apply string->uri* (string->uri** base str) rest)))
+
+(define (resolve-uri-in-catalog uri catalog-uri catalog other-catalog-uris)
+ (let do-examine-catalog ((catalog catalog)
+ (candidate uri)
+ (match-length 0)
+ (next-catalogs-rev (reverse other-catalog-uris)))
+ (sxml-match
+ catalog
+ ((*TOP*
+ (ct:catalog))
+ ;; End of the catalog
+ (values candidate
+ match-length
+ (if (eqv? match-length 0)
+ (reverse next-catalogs-rev)
+ '())))
+ ((*TOP*
+ (ct:catalog (@ (xml:base ,base))
+ ,first-entry
+ ,other-entries ...))
+ (let* ((base (string->uri* catalog-uri base))
+ (rest `(*TOP*
+ (ct:catalog (@ (xml:base ,(uri->string base)))
+ ,@other-entries))))
+ (run-catalog-entry do-examine-catalog base first-entry rest other-entries
+ uri
+ candidate match-length next-catalogs-rev)))
+ ((*TOP*
+ (ct:catalog ,entries ...))
+ ;; No explicit xml:base
+ (do-examine-catalog
+ `(*TOP*
+ (ct:catalog (@ (xml:base ,(uri->string catalog-uri)))
+ ,@entries))
+ candidate
+ match-length
+ next-catalogs-rev)))))
+
+(define* (get-catalog uri #:key (http-get http-get))
+ (case (uri-scheme uri)
+ ((http https)
+ (receive (response response-body) (http-get uri)
+ (when (bytevector? response-body)
+ (set! response-body (utf8->string response-body)))
+ (xml->sxml response-body #:namespaces useful-namespaces)))
+ ((file)
+ (call-with-input-file (uri-path uri)
+ (lambda (port)
+ (xml->sxml port #:namespaces useful-namespaces))))
+ (else
+ (error (format #f "Unsupported delegate catalog URI scheme: ~s\n" (uri-scheme uri))))))
+
+(define* (resolve-uri uri #:key (http-get http-get))
+ (when (string? uri)
+ (set! uri (string->uri uri)))
+ (let do-examine ((uris
+ (let ((var
+ (getenv "XML_CATALOG_FILES")))
+ (if var
+ (map string->uri
+ (string-split var #\space))
+ '()))))
+ (match uris
+ (() uri)
+ ((catalog-uri uris ...)
+ (let ((catalog (get-catalog catalog-uri
+ #:http-get http-get)))
+ (receive (candidate match-length next-uris)
+ (resolve-uri-in-catalog uri catalog-uri catalog uris)
+ (if (null? next-uris)
+ candidate
+ (do-examine next-uris))))))))
diff --git a/src/scm/webid-oidc/program.scm b/src/scm/webid-oidc/program.scm
index 79f13cb..6b8ad29 100644
--- a/src/scm/webid-oidc/program.scm
+++ b/src/scm/webid-oidc/program.scm
@@ -24,6 +24,7 @@
#:use-module (webid-oidc server create)
#:use-module (webid-oidc jti)
#:use-module (webid-oidc offloading)
+ #:use-module (webid-oidc catalog)
#:use-module ((webid-oidc stubs) #:prefix stubs:)
#:use-module ((webid-oidc config) #:prefix cfg:)
#:use-module (ice-9 optargs)
@@ -55,8 +56,20 @@
(define date (date->string (time-utc->date (current-time))))
(define uri-string (if (uri? uri) (uri->string uri) uri))
(with-mutex logging-mutex
+ (when (getenv "XML_CATALOG_FILES")
+ (format (current-error-port) "~a: Warning: XML_CATALOG_FILES is set to ~s.\n"
+ date
+ (getenv "XML_CATALOG_FILES")))
(format (current-error-port) "~a: GET ~a ~s...\n"
date uri-string headers))
+ (set! uri (resolve-uri uri
+ #:http-get
+ (lambda* (uri . args)
+ (with-mutex logging-mutex
+ (format (current-error-port) "~a: Warning: loading XML catalog from the web, ~s.\n"
+ date
+ (uri->string uri)))
+ (apply http-get uri args))))
(receive (response response-body)
(in-another-thread
(http-get uri #:headers headers))
@@ -399,6 +412,17 @@ Options for the client service:"))
(format #t (G_ "
Environment variables:"))
(format #t (G_ "
+ XML_CATALOG_FILES: the server will fetch resources on the web. By
+ setting this environment variable to a space-separated list of
+ catalog URIs, the server will redirect these requests to another
+ server. Currently, it is not possible to load files from the
+ file system, because there is no way to specify the
+ content-type."))
+ (when (getenv "XML_CATALOG_FILES")
+ (format #t (G_ "the-environment-variable|
+ It is currently set to ~s.")
+ (getenv "XML_CATALOG_FILES")))
+ (format #t (G_ "
LANG: set the locale of the user interface (for the server commands,
the user is the system administrator)."))
(when (getenv "LANG")