Référence d’ensemble de règles :headding-anchor:rule-set-reference
La diffusion d’images prend en charge un mécanisme de prétraitement des requêtes simple basé sur les règles de correspondance et de substitution des expressions régulières.
Les collections de règles de prétraitement (ensembles de règles) peuvent être jointes aux catalogues d’images ou au catalogue par défaut. Les règles du catalogue par défaut s’appliquent uniquement si la requête n’identifie pas un catalogue d’images principal spécifique.
Les règles de prétraitement des requêtes peuvent modifier les parties de chemin et de requête des requêtes avant qu’elles ne soient traitées par l’analyseur de Platform Server, y compris la manipulation du chemin, l’ajout de commandes, la modification des valeurs de commande et l’application de modèles ou de macros. Des règles peuvent également être utilisées pour configurer et remplacer certaines fonctionnalités de sécurité qui sont normalement contrôlées uniquement avec des attributs de catalogue, comme l’obscurcissement des demandes, le marquage à l’eau, ainsi que la limitation du service à des adresses IP client spécifiques.
Les ensembles de règles sont stockés sous la forme de fichiers de document XML. Le chemin d’accès relatif ou absolu du fichier d’ensemble de règles doit être spécifié dans attribute::RuleSetFile
.
Structure générale :headding-anchor:section-8bcbd91ea8a946f28051bde8ad21827f
<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
<rule>
<expression>
<varname>
expression
</varname></expression>
<substitution>
<varname>
substitution
</varname></substitution>
<addressfilter>
<varname>
addressFilter
</varname></addressfilter>
<header>
<varname>
headerValue
</varname></header>
</rule>
</ruleset>
Les éléments <?xml>
et <ruleset>
sont toujours requis dans un fichier XML d’ensemble de règles valide, même si aucune règle réelle n’est définie.
Un élément <ruleset>
contenant un nombre indéfini d'éléments <rule>
est autorisé.
Le contenu des fichiers de règles de prétraitement est sensible à la casse.
Validation des jeux de règles :headding-anchor:section-d8d101a0b4d74580835e37d128d05567
Une copie de RuleSet.xsd est fournie dans le dossier de catalogue et doit être utilisée pour valider un fichier d’ensemble de règles avant de l’enregistrer dans le fichier catalog.ini. Notez que le serveur d’images utilise une copie interne de RuleSet.xsd pour la validation.
Prétraitement des URL :headding-anchor:section-2c09a2d79ada46b994857c6a7fb4c13a
Avant tout autre traitement, une requête HTTP entrante est partiellement analysée afin de déterminer quel catalogue d’images doit être appliqué. Une fois le catalogue identifié, le jeu de règles pour le catalogue sélectionné (ou le catalogue par défaut, si aucun catalogue spécifique n’a été identifié) est appliqué.
Les éléments <rule>
sont recherchés dans l’ordre spécifié pour une correspondance avec le contenu de l’élément <expression>
( expression
).
Si un <rule>
correspond, le substitution
facultatif est appliqué et la chaîne de requête modifiée est transmise à l’analyseur de requêtes du serveur pour un traitement normal.
Si aucune correspondance réussie n’est effectuée lorsque la fin de <ruleset>
est atteinte, la requête est transmise à l’analyseur sans modification.
Attribut OnMatch :headding-anchor:section-ed952fa55d99422db0ee68a2b9d395d3
Le comportement par défaut peut être modifié avec l’attribut OnMatch
de l’élément <rule>
. OnMatch
peut être défini sur break
(par défaut), continue
ou error
.
Remplacement des attributs de catalogue :headding-anchor:section-3f1e33a65c5346d1b4a69958c61432f3
L’élément rule
peut éventuellement définir des attributs qui remplacent les attributs de catalogue correspondants lorsque la règle est correctement mise en correspondance. Si plusieurs règles correspondantes définissent le même attribut, le dernier l’emporte. Voir l’élément rule pour obtenir la liste des attributs qui peuvent être contrôlés avec des règles.
Expressions régulières :headding-anchor:section-3f77bb9a265147b38c645f63ab1bad8b
Une correspondance de chaîne simple fonctionne pour les applications très basiques, mais des expressions régulières sont requises dans la plupart des cas. Bien que les expressions régulières soient standard dans le secteur, l’implémentation spécifique varie d’une instance à l’autre.
package java.util.regex décrit l’implémentation spécifique des expressions régulières utilisée par le serveur d’images.
Sous-chaînes capturées :headding-anchor:section-066e659406d5403599cd26ae35e80d68
Pour faciliter des modifications d’URL complexes, les sous-chaînes peuvent être capturées dans l’expression en encadrant la sous-chaîne avec des parenthèses (…). Les sous-chaînes capturées sont numérotées de manière séquentielle, en commençant par 1, selon la position de la parenthèse de début. Les sous-chaînes capturées peuvent être insérées dans la substitution à l’aide de $ *
n*
, où n
est le numéro de séquence de la sous-chaîne capturée.
Gestion des fichiers de jeu de règles :headding-anchor:section-0598a608e4044bb4805fe93ceebe10a9
Un fichier d’ensemble de règles peut être joint à chaque catalogue d’images avec l’attribut de catalogue attribute::RuleSetFile
. Bien que vous puissiez modifier le fichier d’ensemble de règles à tout moment, le serveur d’images ne reconnaît les modifications que lorsque le catalogue d’images associé est rechargé. Ce rechargement se produit lorsque le serveur de plateforme est démarré ou redémarré et chaque fois que le fichier de catalogue principal, qui comporte un suffixe de fichier .ini, est modifié ou "modifié" pour modifier la date du fichier.
Exemples :headding-anchor:section-aa769437d967459299b83a4bf34fe924
Exemple A. Définissez une règle qui augmente les paramètres de qualité de l’image si le nom de l’image porte le suffixe " _hg" :
<rule>
<expression>(?i)_hg$</expression>
<substitution>\?&qlt=95,1&resmode=bicub</substitution>
</rule>
L’expression de règle spécifie une correspondance "_hg" non sensible à la casse à la fin de la chaîne d’URL. Le suffixe est remplacé par la chaîne de requête spécifiée qui modifie les paramètres de qualité de l’image. Notez que le caractère ?
de la chaîne de substitution est échappé puisqu’il s’agit d’un caractère spécial dans les expressions régulières.
<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>
Exemple B. Une application web spécifique n’autorise pas les chaînes de requête. Définissez une règle qui convertit l’élément de chemin d’accès de fin small
, medium
ou large
en modèle, en utilisant le reste du chemin comme nom de l’image. Par exemple, myCat/myImage/small
traduirait en myCat/smallTemplate?src=myCat/myImage
.
Nous pouvons utiliser des sous-chaînes pour restructurer la requête :
<rule>
<expression>([^/]+)/(small|medium|large)$</expression>
<substitution>$2Template?src=sample/$1</substitution>
</rule>