From 0f6e3467eb0264068fce5b78268c22748eca0936 Mon Sep 17 00:00:00 2001 From: Christophe HENRY Date: Tue, 9 Mar 2021 12:02:04 +0100 Subject: [PATCH] Adds the style "pre" --- TODO | 4 ---- index.gmi | 23 ++++++++++++++--------- index.php | 13 +++++++++++++ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index b89c6b5..077b32f 100644 --- a/TODO +++ b/TODO @@ -1,16 +1,12 @@ * manage url encoding: The filename fetched on disk may differ from that was asked by URL. * check /etc/passwd not accessible: Perform sanity checks against unauthorized access. -* a way to get the source of a page, using urlrewriting * options to activate the text decoration * HTML caching: Nginx tries the html, if not found use this script to build it -* configuration: Fetch configuration in current dir, tries parents. -* css: file location or in-place or in config? * Command line API for script and testing. * Page menu on upper and lower sides: [parent dir] [root dir] [inline images] [raw response] [view cert] * Check unicode capability, UTF16 input, etc… * Manage different type of carriage return: CR CR/LF LF * Do not output an empty line for the last carriage return of the document -* Test on a shared hosting * Text localisation * Manage logging (cache refresh, debug) * Split the main loop in two: one part to decode the text to internal language, the other to make the HTML diff --git a/index.gmi b/index.gmi index c0356fc..cb7182b 100644 --- a/index.gmi +++ b/index.gmi @@ -37,21 +37,26 @@ Il est supposé que HtmGem est installé à la racine du site dans un répertoir Par défaut, le style est incorporé dans chaque page récupérée par le navigateur web. Le même style est utilisé pour toutes les pages, //htmgem/css/htmgem.css//, sauf lorsqu’un fichier ayant le même nom que la page mais avec l’extension **.css** existe. Dans ce cas, il est utilisé. Lorsque l’option css est activé dans la configuration (voir //rewrite// plus haut) d’autres comportements sont possibles : -* &style=source : le code source de la page est envoyée au navigateur, voir ci-après… -* &style=htmgem : utilise le style par défaut, mais en tant que fichier externe -* &style=none : la page HTML est envoyée sans style -* &style= : le fichier htmgem/css/.css est utilisé en tant que style externe -* &style=/ : le fichier indiqué (chemin absolu) est utilisé en tant que style externe +* &style=**htmgem** : Utilise le style par défaut, mais en tant que fichier externe. +* &style=**none** : La page HTML est envoyée sans style. +* &style=**** : Le fichier htmgem/css/.css est utilisé en tant que style externe. +* &style=**/** : Le fichier indiqué (chemin absolu) est utilisé en tant que style externe. +* &style=**source** : Le code source de la page est envoyée au navigateur, voir ci-après… +* &style=**pre** : Le code source de la page est envoyée au navigateur encadré par des //
//, voir ci-après…
 
 ## Réécriture d’URL pour afficher le code source
 
+Par défaut, le code source du fichier **.gmi** n’est pas accessible extérieurement puisqu’il est interprété à la volée par HtmGem. Il est possible cependant d’ajouter l’affichage
+
 Pour obtenir le source avec un lien du type
-=> index.gmi.source
-Il faut ajouter la ligne suivante pour la réécriture d’URL :
+=> index.gmi.source Envoie le code source, le navigateur l‘affichera comme une longue ligne. À utiliser en ligne commande avec **wget**!
+=> index.gmi.pre Affiche le code source dans le navigateur, l’ayant adapté avec la balise **
**.
+Il faut ajouter les lignes suivantes dans la réécriture d’URL, ici pour Nginx :
 > rewrite ^(.+\.gmi)\.source$ /htmgem/?url=$1&style=source;
+> rewrite ^(.+\.gmi)\.pre$ /htmgem/?url=$1&style=pre;
 
 # Quand tout marche…
 Parmi les fichiers et répertoires distribués, seuls sont utiles :
 * **htmgem/index.php** : Il se charge de traduire le gemtext en HTML
-* **htmgem/css/htmgem.css : S’il manque, l’affichage sera dépourvu de style — littéralement.
-Les autres peuvent être supprimés (y compris ce présent fichier) bien qu’ils ne présentent aucun danger. Ils restent nécessaires au développement du projet et son disponible sur le site de HtmGem.
+* **htmgem/css/htmgem.css** : S’il manque, l’affichage sera dépourvu de style — littéralement.
+Les autres peuvent être supprimés (y compris ce présent fichier) bien qu’ils ne présentent aucun danger. Ils restent nécessaires au développement du projet et sont disponibles sur le site de HtmGem.
diff --git a/index.php b/index.php
index 9d81086..e243617 100644
--- a/index.php
+++ b/index.php
@@ -295,6 +295,19 @@ $page_title = @$matches[1];
 
 if ("source" == $style) {
     echo $fileContents;
+} elseif ("pre" == $style) {
+    $fileContents = htmlspecialchars($fileContents, ENT_HTML5|ENT_NOQUOTES, "UTF-8", false);
+    echo <<
+
+
+$page_title
+
+
+
$fileContents
+ + +EOL; } else { $parts = pathinfo($filePath); $localCss = $parts["filename"].".css";