mod_sed - Serveur Apache HTTP Version 2.4

Apache Server 2.4

<-

Module Apache mod_sed

Description:Filtre les contenus en entrée (requêtes) et en sortie (réponses) en utilisant la syntaxe de sed
Statut:
Identificateur de Module:sed_module
Fichier Source:mod_sed.c sed0.c sed1.c regexp.c regexp.h sed.h
Compatibilité:Disponible depuis la version 2.3 d'Apache

Sommaire

mod_sed est un filtre de contenu "in-process". Le filtre mod_sed fournit les commandes d'édition de sed implémentées par le programme sed de Solaris 10 comme décrit dans la page de manuel. Cependant, à la différence de sed, mod_sed ne reçoit pas de données sur son entrée standard. Au lieu de cela, le filtre agit sur les données échangées entre le client et le serveur. mod_sed peut être utilisé comme filtre en entrée ou en sortie. mod_sed est un filtre de contenu, ce qui signifie qu'on ne peut pas l'utiliser pour modifier les en-têtes http du client ou du serveur.

Le filtre en sortie mod_sed accepte un tronçon de données, exécute le script sed sur ces données, puis génère une sortie qui est transmise au filtre suivant dans la chaîne.

Le filtre en entrée mod_sed reçoit des données en provenance du filtre suivant dans la chaîne, exécute les scripts sed, et renvoie les données générées au filtre appelant dans la chaîne de filtrage.

Les filtres en entrée ou en sortie ne traitent les données que si des caractères newline sont détectés dans le contenu à filtrer. A la fin des données, ce qui reste est traité comme la dernière ligne.

Vous trouverez sur le blog de l'auteur un article en forme de tutoriel, ainsi que les raisons pour lesquelles ce filtre est plus puissant qu'une simple recherche/remplacement de chaîne ou d'expression rationnelle.

top

Exemple de configuration

Ajout d'un filtre en sortie

# Dans l'exemple suivant, le filtre sed va remplacer la chaîne
	 # "monday" par "MON" et la chaîne "sunday" par "SUN" dans les
	 # documents html avant de les envoyer au client.
<Directory "/var/www/docs/sed"> 
    AddOutputFilter Sed html 
    OutputSed "s/monday/MON/g" 
    OutputSed "s/sunday/SUN/g" 
</Directory>

Ajout d'un filtre en entrée

         # Dans l'exemple suivant, le filtre sed va remplacer la chaîne
	 # "monday" par "MON" et la chaîne "sunday" par "SUN" dans les
	 # données POST envoyées à PHP.
        <Directory "/var/www/docs/sed"> 
    AddInputFilter Sed php 
    InputSed "s/monday/MON/g" 
    InputSed "s/sunday/SUN/g" 
</Directory>
top

Commandes sed

Vous trouverez tous les détails à propos de la commande sed dans sa page de manuel.

b
Saut vers le label spécifié (similaire à goto).
h
Copie la ligne courante dans le tampon.
H
Ajoute la ligne courante au tampon.
g
Copie le contenu du tampon dans la ligne courante.
G
Ajoute le contenu du tampon à la ligne courante.
x
Echange les contenus du tampon et de la ligne courante.
top

Directive InputSed

Description:Commande sed à exécuter pour le filtrage des données d'une requête (en général des données POST)
Syntaxe:InputSed commande-sed
Contexte:répertoire, .htaccess
Statut:
Module:mod_sed

La directive InputSed permet de spécifier la commande sed à exécuter pour le filtrage des données (en général des données POST) d'une requête.

top

Directive OutputSed

Description:Commande sed pour le filtrage des contenus de type réponse
Syntaxe:OutputSed commande-sed
Contexte:répertoire, .htaccess
Statut:
Module:mod_sed

La directive OutputSed permet de spécifier la commande sed à exécuter dans le cadre du traitement d'une réponse.