Merge TITLES and DESCRIPTIONS into PAGES

This commit is contained in:
Miraty 2022-09-15 21:23:49 +02:00
parent 763762f08b
commit c65dedf9de
4 changed files with 154 additions and 99 deletions

View file

@ -91,12 +91,12 @@ function query($action, $table, $conditions = [], $column = NULL) {
function displayIndex() { ?> function displayIndex() { ?>
<nav> <nav>
<dl> <dl>
<?php foreach (DESCRIPTIONS[SERVICE] as $pageId => $pageDesc) { <?php foreach (PAGES[SERVICE] as $pageId => $page) {
if ($pageId === 'index') continue; if ($pageId === 'index') continue;
?> ?>
<dt><a href="<?= $pageId ?>"><?= TITLES[SERVICE][$pageId] ?></a></dt> <dt><a href="<?= $pageId ?>"><?= $page['title'] ?></a></dt>
<dd> <dd>
<?= $pageDesc ?> <?= $page['description'] ?>
</dd> </dd>
<?php } ?> <?php } ?>
</dl> </dl>

215
pages.php
View file

@ -1,92 +1,147 @@
<?php <?php
define('TITLES', [ define('PAGES', [
'index' => '<span aria-hidden="true">🪐 </span>Niver', 'index' => [
'auth' => [ 'title' => '<span aria-hidden="true">🪐 </span>Niver',
'index' => '<span aria-hidden="true">🔐 </span>Authentification', ],
'login' => 'Se connecter', 'auth' => [
'register' => 'Créer un compte', 'index' => [
'unregister' => 'Supprimer son compte', 'title' => '<span aria-hidden="true">🔐 </span>Authentification',
'password' => 'Changer la clé de passe', 'description' => 'Gérer son compte',
'logout' => 'Déconnexion',
], ],
'reg' => [ 'login' => [
'index' => '<span aria-hidden="true">🏷️ </span>Registre <code>' . CONF['reg']['registry'] . '</code>', 'title' => 'Se connecter',
'register' => 'Enregistrer un nouveau domaine', 'description' => 'Démarrer une nouvelle session avec un compte existant',
'unregister' => 'Effacer un domaine', ],
'print' => 'Afficher les données', 'register' => [
'ns' => 'Ajouter un enregistrement <abbr title="Name Server">NS</abbr>', 'title' => 'Créer un compte',
'ds' => 'Ajouter un enregistrement <abbr title="Delegation Signer">DS</abbr>', 'description' => 'Créer un nouveau compte Niver',
'glue' => 'Créer un Glue Record', ],
'unregister' => [
'title' => 'Supprimer son compte',
'description' => 'Effacer les données liées à son compte',
],
'password' => [
'title' => 'Changer la clé de passe',
'description' => 'Changer la chaîne de caractères permettant de vous authentifier.',
],
'logout' => [
'title' => 'Déconnexion',
'description' => 'Terminer la session et effacer ses cookies',
],
],
'reg' => [
'index' => [
'title' => '<span aria-hidden="true">🏷️ </span>Registre <code>' . CONF['reg']['registry'] . '</code>',
'description' => 'Demander l\'attribution d\'un sous-domaine',
],
'register' => [
'title' => 'Enregistrer un nouveau domaine',
'description' => 'Prendre possession d\'un sous-domaine de <code>' . CONF['reg']['registry'] . '</code>',
],
'unregister' => [
'title' => 'Effacer un domaine',
'description' => 'Effacer toutes les données d\'un domaine',
],
'print' => [
'title' => 'Afficher les données',
'description' => 'Afficher les enregistrements relatifs à un domaine',
], ],
'ns' => [ 'ns' => [
'index' => '<span aria-hidden="true">📖 </span>Serveurs de noms', 'title' => 'Ajouter un enregistrement <abbr title="Name Server">NS</abbr>',
'zone-add' => 'Ajouter une zone', 'description' => 'Indiquer les serveurs de noms de son sous-domaine de <code>' . CONF['reg']['registry'] . '</code>',
'zone-del' => 'Effacer une zone',
'print' => 'Afficher les données',
'ip' => 'Enregistrements A et AAAA',
'ns' => 'Enregistrement <abbr title="Name Server">NS</abbr>',
'txt' => 'Enregistrement <abbr title="TeXT">TXT</abbr>',
'caa' => 'Enregistrement <abbr title="Certification Authority Authorization">CAA</abbr>',
'srv' => 'Enregistrement <abbr title="SeRVice">SRV</abbr>',
'mx' => 'Enregistrement <abbr title="Mail eXchanger">MX</abbr>',
'sshfp' => 'Enregistrement <abbr title="Secure SHell FingerPrint">SSHFP</abbr>',
'tlsa' => 'Enregistrement <abbr title="Transport Layer Security Association">TLSA</abbr>',
'cname' => 'Enregistrement <abbr title="Canonical NAME">CNAME</abbr>',
'dname' => 'Enregistrement <abbr title="Delegation NAME">DNAME</abbr>',
'loc' => 'Enregistrement <abbr title="LOCation">LOC</abbr>',
], ],
'ht' => [ 'ds' => [
'index' => '<span aria-hidden="true">🕸️ </span>Hypertexte', 'title' => 'Ajouter un enregistrement <abbr title="Delegation Signer">DS</abbr>',
'add-http-onion' => 'Ajouter un accès HTTP par Onion', 'description' => 'Déléguer la confiance <abbr title="Domain Name System Security Extensions">DNSSEC</abbr>',
'add-http-dns' => 'Ajouter un accès HTTP par DNS+TLS',
'del-http-onion' => 'Retirer un accès HTTP par Onion',
'del-http-dns' => 'Retirer un accès HTTP par DNS+TLS',
], ],
] 'glue' => [
); 'title' => 'Créer un Glue Record',
'description' => 'Indiquer les IP de ses serveurs de noms de son sous-domaine de <code>' . CONF['reg']['registry'] . '</code> dont les adresses se trouvent sur ce même sous-domaine',
define('DESCRIPTIONS', [
'auth' => [
'index' => 'Gérer son compte',
'login' => 'Démarrer une nouvelle session avec un compte existant',
'register' => 'Créer un nouveau compte Niver',
'unregister' => 'Effacer les données liées à son compte',
'password' => 'Changer la chaîne de caractères permettant de vous authentifier.',
'logout' => 'Terminer la session et effacer ses cookies',
], ],
'reg' => [ ],
'index' => 'Demander l\'attribution d\'un sous-domaine', 'ns' => [
'register' => 'Prendre possession d\'un sous-domaine de <code>' . CONF['reg']['registry'] . '</code>', 'index' => [
'unregister' => 'Effacer toutes les données d\'un domaine', 'title' => '<span aria-hidden="true">📖 </span>Serveurs de noms',
'print' => 'Afficher les enregistrements relatifs à un domaine', 'description' => 'Gérer les données enregistrées dans ses domaines',
'ns' => 'Indiquer les serveurs de noms de son sous-domaine de <code>' . CONF['reg']['registry'] . '</code>', ],
'ds' => 'Déléguer la confiance <abbr title="Domain Name System Security Extensions">DNSSEC</abbr>', 'zone-add' => [
'glue' => 'Indiquer les IP de ses serveurs de noms de son sous-domaine de <code>' . CONF['reg']['registry'] . '</code> dont les adresses se trouvent sur ce même sous-domaine', 'title' => 'Ajouter une zone',
'description' => 'Pour qu\'elle soit gérée par le serveur de noms de Niver',
],
'zone-del' => [
'title' => 'Effacer une zone',
'description' => 'Effacer toutes les données d\'une zone',
],
'print' => [
'title' => 'Afficher les données',
'description' => 'Afficher le contenu de la zone',
],
'ip' => [
'title' => 'Enregistrements A et AAAA',
'description' => 'Indiquer l\'adresse IP d\'un domaine',
], ],
'ns' => [ 'ns' => [
'index' => 'Gérer les données enregistrées dans ses domaines', 'title' => 'Enregistrement <abbr title="Name Server">NS</abbr>',
'zone-add' => 'Pour qu\'elle soit gérée par le serveur de noms de Niver', 'description' => 'Indiquer le serveur de noms d\'une zone',
'zone-del' => 'Effacer toutes les données d\'une zone',
'print' => 'Afficher le contenu de la zone',
'ip' => 'Indiquer l\'adresse IP d\'un domaine',
'ns' => 'Indiquer le serveur de noms d\'une zone',
'txt' => 'Associer du texte à un domaine',
'caa' => 'Limiter les autorités de certification autorisées à émettre des certificats',
'srv' => 'Indiquer l\'adresse d\'un service spécifique',
'mx' => 'Indiquer l\'adresse du serveur recevant les courriels',
'sshfp' => 'Indiquer les empreintes des clés <abbr title="Secure SHell">SSH</abbr>',
'tlsa' => 'Mettre en place <abbr title="DNS-based Authentication of Named Entities">DANE</abbr> en indiquant l\'empreinte d\'un certificat <abbr title="Transport Layer Security">TLS</abbr>',
'cname' => 'Définir un domaine comme étant l\'alias d\'un autre',
'dname' => 'Définir les sous-domaines d\'un domaine comme étant les alias des sous-domaines d\'un autre domaine',
'loc' => 'Indiquer des coordonnées géographiques',
], ],
'ht' => [ 'txt' => [
'index' => 'Mettre en ligne son site statique sur un espace <abbr title="SSH File Transfert Protocol">SFTP</abbr>, et le faire répondre en <abbr title="HyperText Transfert Protocol">HTTP</abbr> par DNS ou Tor', 'title' => 'Enregistrement <abbr title="TeXT">TXT</abbr>',
'add-http-onion' => 'Ajouter un accès HTTP par ' . linkToDocs('tor', 'service Onion') . ' sur un sous-dossier de l\'espace SFTP', 'description' => 'Associer du texte à un domaine',
'add-http-dns' => 'Ajouter un accès HTTP par ' . linkToDocs('dns', 'DNS') . ' et ' . linkToDocs('tls', 'TLS') . ' sur un sous-dossier de l\'espace SFTP',
'del-http-onion' => 'Retirer un accès HTTP par service Onion d\'un sous-dossier de l\'espace SFTP',
'del-http-dns' => 'Retirer un accès HTTP par DNS et TLS d\'un sous-dossier de l\'espace SFTP',
], ],
] 'caa' => [
); 'title' => 'Enregistrement <abbr title="Certification Authority Authorization">CAA</abbr>',
'description' => 'Limiter les autorités de certification autorisées à émettre des certificats',
],
'srv' => [
'title' => 'Enregistrement <abbr title="SeRVice">SRV</abbr>',
'description' => 'Indiquer l\'adresse d\'un service spécifique',
],
'mx' => [
'title' => 'Enregistrement <abbr title="Mail eXchanger">MX</abbr>',
'description' => 'Indiquer l\'adresse du serveur recevant les courriels',
],
'sshfp' => [
'title' => 'Enregistrement <abbr title="Secure SHell FingerPrint">SSHFP</abbr>',
'description' => 'Indiquer les empreintes des clés <abbr title="Secure SHell">SSH</abbr>',
],
'tlsa' => [
'title' => 'Enregistrement <abbr title="Transport Layer Security Association">TLSA</abbr>',
'description' => 'Mettre en place <abbr title="DNS-based Authentication of Named Entities">DANE</abbr> en indiquant l\'empreinte d\'un certificat <abbr title="Transport Layer Security">TLS</abbr>',
],
'cname' => [
'title' => 'Enregistrement <abbr title="Canonical NAME">CNAME</abbr>',
'description' => 'Définir un domaine comme étant l\'alias d\'un autre',
],
'dname' => [
'title' => 'Enregistrement <abbr title="Delegation NAME">DNAME</abbr>',
'description' => 'Définir les sous-domaines d\'un domaine comme étant les alias des sous-domaines d\'un autre domaine',
],
'loc' => [
'title' => 'Enregistrement <abbr title="LOCation">LOC</abbr>',
'description' => 'Indiquer des coordonnées géographiques',
],
],
'ht' => [
'index' => [
'title' => '<span aria-hidden="true">🕸️ </span>Hypertexte',
'description' => 'Mettre en ligne son site statique sur un espace <abbr title="SSH File Transfert Protocol">SFTP</abbr>, et le faire répondre en <abbr title="HyperText Transfert Protocol">HTTP</abbr> par DNS ou Tor',
],
'add-http-onion' => [
'title' => 'Ajouter un accès HTTP par Onion',
'description' => 'Ajouter un accès HTTP par ' . linkToDocs('tor', 'service Onion') . ' sur un sous-dossier de l\'espace SFTP',
],
'add-http-dns' => [
'title' => 'Ajouter un accès HTTP par DNS+TLS',
'description' => 'Ajouter un accès HTTP par ' . linkToDocs('dns', 'DNS') . ' et ' . linkToDocs('tls', 'TLS') . ' sur un sous-dossier de l\'espace SFTP',
],
'del-http-onion' => [
'title' => 'Retirer un accès HTTP par Onion',
'description' => 'Retirer un accès HTTP par service Onion d\'un sous-dossier de l\'espace SFTP',
],
'del-http-dns' => [
'title' => 'Retirer un accès HTTP par DNS+TLS',
'description' => 'Retirer un accès HTTP par DNS et TLS d\'un sous-dossier de l\'espace SFTP',
],
],
]);

View file

@ -1,25 +1,25 @@
<nav> <nav>
<dl> <dl>
<dt><a class="auth" href="auth/"><?= TITLES['auth']['index'] ?></a></dt> <dt><a class="auth" href="auth/"><?= PAGES['auth']['index']['title'] ?></a></dt>
<dd> <dd>
<?= DESCRIPTIONS['auth']['index'] ?> <?= PAGES['auth']['index']['description'] ?>
</dd> </dd>
<?php if(CONF['reg']['enabled'] === true) { ?> <?php if(CONF['reg']['enabled'] === true) { ?>
<dt><a class="reg" href="reg/"><?= TITLES['reg']['index'] ?></code></a></dt> <dt><a class="reg" href="reg/"><?= PAGES['reg']['index']['title'] ?></code></a></dt>
<dd> <dd>
<?= DESCRIPTIONS['reg']['index'] ?> <?= PAGES['reg']['index']['description'] ?>
</dd> </dd>
<?php } ?> <?php } ?>
<?php if(CONF['ns']['enabled'] === true) { ?> <?php if(CONF['ns']['enabled'] === true) { ?>
<dt><a class="ns" href="ns/"><?= TITLES['ns']['index'] ?></a></dt> <dt><a class="ns" href="ns/"><?= PAGES['ns']['index']['title'] ?></a></dt>
<dd> <dd>
<?= DESCRIPTIONS['ns']['index'] ?> <?= PAGES['ns']['index']['description'] ?>
</dd> </dd>
<?php } ?> <?php } ?>
<?php if(CONF['ht']['enabled'] === true) { ?> <?php if(CONF['ht']['enabled'] === true) { ?>
<dt><a class="ht" href="ht/"><?= TITLES['ht']['index'] ?></a></dt> <dt><a class="ht" href="ht/"><?= PAGES['ht']['index']['title'] ?></a></dt>
<dd> <dd>
<?= DESCRIPTIONS['ht']['index'] ?> <?= PAGES['ht']['index']['description'] ?>
</dd> </dd>
<?php } ?> <?php } ?>
</dl> </dl>

View file

@ -26,19 +26,19 @@ define("PAGE_LINEAGE", explode('/', PAGE_ADDRESS));
define("SERVICE", dirname(PAGE_ADDRESS)); define("SERVICE", dirname(PAGE_ADDRESS));
define("PAGE", basename(PAGE_ADDRESS, '.php')); define("PAGE", basename(PAGE_ADDRESS, '.php'));
function getTitlesLineage($titles, $pageElements) { function getTitlesLineage($pages, $pageElements) {
if (!isset($titles['index']) OR $pageElements[0] === 'index') if (!isset($pages['index']) OR $pageElements[0] === 'index')
return [$titles[$pageElements[0]] ?? false]; return [$pages[$pageElements[0]]['title'] ?? false];
$result = $titles['index']; $result = $pages['index']['title'];
if (!isset($pageElements[1])) if (!isset($pageElements[1]))
unset($titles['index']); unset($pages['index']);
else else
$titles = $titles[array_shift($pageElements)] ?? false; $pages = $pages[array_shift($pageElements)] ?? false;
$results = getTitlesLineage($titles, $pageElements); $results = getTitlesLineage($pages, $pageElements);
$results[] = $result; $results[] = $result;
return $results; return $results;
} }
define('TITLES_LINEAGE', array_reverse(getTitlesLineage(TITLES, PAGE_LINEAGE))); define('TITLES_LINEAGE', array_reverse(getTitlesLineage(PAGES, PAGE_LINEAGE)));
if (!TITLES_LINEAGE[array_key_last(TITLES_LINEAGE)]) { if (!TITLES_LINEAGE[array_key_last(TITLES_LINEAGE)]) {
http_response_code(404); http_response_code(404);