StyleBook configuration

Allow special characters with their literal form in StyleBook

In StyleBook definition, you can use verbatim strings when special characters in a string have to take their literal form. These strings can contain escape characters, backslash, quotes, parentheses, whitespaces, brackets, and so on.

In StyleBooks, you can include NetScaler Policy Expressions in their literal form using verbatim strings. The Policy Expressions typically contain special characters. Without verbatim strings, you have to escape special characters by breaking strings into substrings.

To create a verbatim string, encapsulate a string between special characters as follows:

~{string}~

You can use verbatim strings in the StyleBook expressions.

Note

Do not use the sequence of characters }~ in an input string because this sequence indicates the end of a verbatim string.

Example:

--- 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"

In this example, the default-deny-urls-regex substitutions have a verbatim expression.

  • "Command_injection_attack": str("([ /=]|\\t|\\n)(ls|cat)([ ;'" + "\\\"&].*)?$"): StyleBook processes it as a regular expression.

  • "Command_injection_attack2": ~{([ /=]|\t|\n)(ls|rm|cat)([ ;'\"&].*)?$}~: StyleBook processes it as a verbatim expression. The special characters in this string take the literal form.

Concatenate multiple verbatim strings

You can concatenate verbatim strings with the regular strings or strings with interpolations. When you do so, the StyleBook skips the interpretation only for the verbatim strings. Use the plus (+) operator between the strings to concatenate.

Example:

value: "~{\"id\": \"}~ + %{$atom.key}% + ~{\", \"value\": \"}~ + %{$atom.value}% + ~{\"}~"

In this example, %{$atom.key}% and %{$atom.value}% are interpreted. And, the interpretation is skipped for the rest.

Allow special characters with their literal form in StyleBook