Autoriser les caractères spéciaux sous leur forme littérale dans StyleBook
Dans la définition StyleBook, vous pouvez utiliser des chaînes de caractères littérales lorsque les caractères spéciaux d'une chaîne doivent prendre leur forme littérale. Ces chaînes peuvent contenir des caractères d'échappement, des barres obliques inverses, des guillemets, des parenthèses, des espaces, des crochets, etc.
Dans les StyleBooks, vous pouvez inclure des expressions de stratégie NetScaler sous leur forme littérale en utilisant des chaînes de caractères littérales. Les expressions de stratégie contiennent généralement des caractères spéciaux. Sans chaînes de caractères littérales, vous devez échapper les caractères spéciaux en divisant les chaînes en sous-chaînes.
Pour créer une chaîne de caractères littérale, encapsulez une chaîne entre des caractères spéciaux comme suit :
~{string}~
Vous pouvez utiliser des chaînes de caractères littérales dans les expressions StyleBook.
Remarque
N'utilisez pas la séquence de caractères }~ dans une chaîne d'entrée, car cette séquence indique la fin d'une chaîne de caractères littérale.
Exemple :
---
name: test-deny-url
namespace: citrix.adc.stylebooks
version: "6.2"
display-name: StyleBook for creating an AppFw profile
description: This Stylebook configures an AppFw config.
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "13.0"
parameters:
-
name: name
type: string
required: true
substitutions:
default-deny-urls-regex:
"Command_injection_attack": str("([ /=]|\\t|\\n)(ls|cat)([ ;'" + "\\\"&].*)?$")
"Command_injection_attack2": ~{([ /=]|\t|\n)(ls|rm|cat)([ ;'\"&].*)?$}~
components:
-
name: appfw-profile-comp
type: ns::appfwprofile
properties:
name: $parameters.name
type: ["XML"]
components:
-
name: appfw-profile-denyurl-default-binding-subcomp-all
type: ns::appfwprofile_denyurl_binding
properties:
name: $parent.properties.name
denyurl?: $substitutions.default-deny-urls-regex["Command_injection_attack"]
state?: "ENABLED"
-
name: appfw-profile-denyurl-default-binding-subcomp-all2
type: ns::appfwprofile_denyurl_binding
properties:
name: $parent.properties.name
denyurl?: $substitutions.default-deny-urls-regex["Command_injection_attack2"]
state?: "ENABLED"
Dans cet exemple, les substitutions
default-deny-urls-regex ont une expression littérale.
-
"Command_injection_attack": str("([ /=]|\\t|\\n)(ls|cat)([ ;'" + "\\\"&].*)?$"): StyleBook le traite comme une expression régulière. -
"Command_injection_attack2": ~{([ /=]|\t|\n)(ls|rm|cat)([ ;'\"&].*)?$}~: StyleBook le traite comme une expression littérale. Les caractères spéciaux de cette chaîne prennent la forme littérale.
Concaténer plusieurs chaînes de caractères littérales
Vous pouvez concaténer des chaînes de caractères littérales avec des chaînes régulières ou des chaînes avec des interpolations. Dans ce cas, StyleBook ignore l'interprétation uniquement pour les chaînes de caractères littérales. Utilisez l'opérateur plus (+) entre les chaînes pour les concaténer.
Exemple :
value: "~{\"id\": \"}~ + %{$atom.key}% + ~{\", \"value\": \"}~ + %{$atom.value}% + ~{\"}~"
Dans cet exemple,
%{$atom.key}% et %{$atom.value}% sont interprétés. Et, l'interprétation est ignorée pour le reste.