Autoriser les caractères spéciaux sous leur forme littérale dans StyleBook

Dernière publication : Oct 02, 2026
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.