Citrix ADC

Configurer une action de réécriture

Avertissement

La fonction Pattern dans une action de réécriture est obsolète à partir de Citrix ADC 12.0 build 56.20 et Citrix vous recommande d’utiliser le paramètre d’action de réécriture Rechercher.

Une action de réécriture indique les modifications apportées à une demande ou à une réponse avant de l’envoyer à un serveur ou un client.

Les expressions définissent les éléments suivants :

  • Type d’action de réécriture.

  • Emplacement de l’action de réécriture.

  • Type de configuration d’action de réécriture.

Par exemple, une action DELETE utilise uniquement une expression cible. Une action REPLACE utilise une expression cible et une expression pour configurer le texte de remplacement.

Après avoir activé la fonction de réécriture, vous devez configurer une ou plusieurs actions à moins qu’une action de réécriture intégrée ne soit suffisante. Toutes les actions intégrées portent des noms commençant par la chaîne ns_cvpn, suivis d’une chaîne de lettres et de caractères de soulignement. Les actions intégrées effectuent des tâches utiles et complexes telles que le décodage de parties d’une demande ou d’une réponse VPN sans client ou la modification de données JavaScript ou XML. Les actions intégrées peuvent être affichées, activées et désactivées, mais elles ne peuvent pas être modifiées ou supprimées.

Remarque :

Les types d’action qui peuvent être utilisés uniquement pour la réécriture HTTP sont identifiés dans la colonne Type d’action de réécriture .

Pour plus d’informations, voir Paramètre Type.

Créer une action de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour créer une action de réécriture et vérifier la configuration :

  • add rewrite action <name> <type> <target> [<stringBuilderExpr>] [-search <expression>] [refineSearch <expression>] [-comment<string>]
  • show rewrite action <name>

Pour plus d’informations, consultez le tableau Types d’action de réécriture et leurs arguments .

La fonction de réécriture comporte les actions intégrées suivantes :

  • NoRewrite-envoie la demande ou la réponse à l’utilisateur sans la réécrire.

  • RESET - Réinitialise la connexion et notifie le navigateur de l’utilisateur, afin que l’utilisateur puisse renvoyer la demande.

  • DROP - Supprime la connexion sans envoyer de réponse à l’utilisateur.

L’un des types de flux suivants est implicitement associé à chaque action :

  • Demande - L’action s’applique à la demande.

  • Réponse - L’action s’applique à la réponse.

  • Neutre - L’action s’applique à la fois aux demandes et aux réponses.

Nom

Nom de l’action de réécriture définie par l’utilisateur. Doit commencer par une lettre, un chiffre ou le caractère de soulignement (_) et ne doit contenir que des lettres, des chiffres et le trait d’union (-), point (.) hachage (#), espace (), à (@), égal à (=), deux-points (:) et caractères de soulignement. Peut être modifié après l’ajout de la stratégie de réécriture.

Paramètre Type

Le paramètre Type affiche le type d’action de réécriture définie par l’utilisateur.

Voici les valeurs du paramètre Type  :

  • REPLACE <target> <string_builder_expr>. Remplace la chaîne par l’expression String-Builder.

Exemple :

> add rewrite action replace_http_act replace http.res.body(100) '"new_replaced_data"'
Done
> sh rewrite action replace_http_act
Name: replace_http_act
Operation: replace
Target:http.res.body(100)
Value:"new_replaced_data"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr2>. Dans la demande ou la réponse spécifiée par <target>, remplace toutes les occurrences de la chaîne définie <string_builder_expr1> par par la chaîne définie par <string_builder_expr2>. Vous pouvez utiliser un modèle au format PCRE ou la fonction de recherche pour trouver les chaînes à remplacer.

Exemple :

> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://""-search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done

> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_HTTP_RES <string_builder_expr>. Remplace la réponse HTTP complète par la chaîne définie par l’expression string-builder.

Exemple :

> add rewrite action replace_http_res_act replace_http_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
 Done
> sh rewrite action replace_http_res_act
Name: replace_http_res_act
Operation: replace_http_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_SIP_RES <target>. Remplace la réponse SIP complète par la chaîne spécifiée par <target>.

Exemple :

> add rewrite action replace_sip_res_act replace_sip_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_sip_res_act
Name: replace_sip_res_act
Operation: replace_sip_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_HTTP_HEADER <header_string_builder_expr> <contents_string_builder_expr>. Insère l’en-tête HTTP spécifié par <header_string_builder_expr> et le contenu de l’en-tête spécifié par <contents_string_builder_expr>.

Exemple :

> add rewrite action ins_cip_header insert_http_header "CIP" "CLIENT.IP.SRC"
Done
> sh rewrite action ins_cip_header
Name: ins_cip_header
Operation: insert_http_header
Target:CIP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_HTTP_HEADER <target>. Supprime l’en-tête HTTP spécifié par <target>

Exemple :

> add rewrite action del_true_client_ip_header delete_http_header "True-Client-IP"
Done
> sh rewrite action del_true_client_ip_header
Name: del_true_client_ip_header
Operation: delete_http_header
Target:True-Client-IP
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CORRUPT_HTTP_HEADER <target>. Remplace le nom d’en-tête de toutes les occurrences de l’en-tête HTTP spécifié <target> par un nom corrompu, de sorte qu’il ne soit pas reconnu par le destinataire Exemple : MY_HEADER est remplacé par MHEY_ADER.

Exemple :


> add rewrite action corrupt_content_length_hdr corrupt_http_header "Content-Length"
Done
> sh rewrite action corrupt_content_length_hdr
Name: corrupt_content_length_hdr
Operation: corrupt_http_header
Target:Content-Length
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_BEFORE <string_builder_expr1> <string_builder_expr1>. Recherche la chaîne spécifiée dans <string_builder_expr1> et insère la chaîne <string_builder_expr2> avant elle.
> add rewrite action insert_before_ex_act insert_before http.res.body(100) '"Add this string in the starting"'
Done
> sh rewrite action insert_before_ex_act
Name: insert_before_ex_act
Operation: insert_before
Target:http.res.body(100)
Value:"Add this string in the starting"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_BEFORE_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr2>. Dans la demande ou la réponse spécifiée par <target>, localise toutes les occurrences de la chaîne spécifiée dans <string_builder_expr1> et insère la chaîne spécifiée <string_builder_expr2> avant elle. Vous pouvez utiliser un modèle au format PCRE ou la fonction de recherche pour trouver les chaînes.

Exemple :


> add policy patset pat
 Done
> bind policy patset pat abcd
 Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
 Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_AFTER <string_builder_expr1> <string_builder_expr2>. Recherche la chaîne spécifiée dans , et insère la chaîne spécifiée dans après ça. **Exemple** :
> add rewrite action insert_after_act insert_after http.req.body(100) '"add this string after 100 bytes"'
Done
> sh rewrite action insert_after_act
Name: insert_after_act
Operation: insert_after
Target:http.req.body(100)
Value:"add this string after 100 bytes"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_AFTER_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr>. Dans la demande ou la réponse spécifiée par <target>, localise toutes les occurrences de la chaîne spécifiée par <string_builder_expr1> et insère la chaîne spécifiée par <string_builder_expr2> après chacune d’elles. Vous pouvez utiliser un modèle au format PCRE ou la fonction de recherche pour trouver les chaînes.

Exemple :


> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE <target>. Recherche et supprime la cible spécifiée.

Exemple :

> add rewrite action delete_ex_act delete http.req.header("HDR")
Done
> sh rewrite action delete_ex_act
Name: delete_ex_act
Operation: delete
Target:http.req.header("HDR")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_ALL <target> -(pattern|search) <string_builder_expr>. Dans la demande ou la réponse spécifiée par <target>, localise et supprime toutes les occurrences de la chaîne spécifiée par <string_builder_expr>. Vous pouvez utiliser un modèle au format PCRE ou la fonction de recherche pour trouver les chaînes.

Exemple :


>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`<\\/AppData>#)"
Done
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DIAMETER_HEADER_FIELD <target> <field value>. Dans la ou les réponses, modifiez le champ d’en-tête spécifié par <target>. Utilisez Diameter.req.flags.SET(<flag>) ou Diameter.req.flags.UNSET<flag>stringbuilderexpression pour définir ou désinstaller des drapeaux.

Exemple :


> add rewrite action replace_diameter_field_ex_act  replace_diameter_header_field diameter.req.flags diameter.req.flags.set(PROXIABLE)
Done
> sh rewrite action replace_diameter_field_ex_act
Name: replace_diameter_field_ex_act
Operation: replace_diameter_header_field
Target:diameter.req.flags
Value:diameter.req.flags.set(PROXIABLE)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DNS_HEADER_FIELD <target>. Dans la demande ou la réponse modifie le champ d’en-tête spécifié par <target>.

Exemple :


> add rewrite action replace_dns_hdr_act replace_dns_header_field dns.req.header.flags.set(AA)
Done
> sh rewrite action replace_dns_hdr_act
Name: replace_dns_hdr_act
Operation: replace_dns_header_field
Target:dns.req.header.flags.set(AA)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DNS_ANSWER_SECTION <target>. Remplacez la section de réponse DNS dans la réponse. Ceci est actuellement applicable uniquement aux enregistrements A et AAAA. Utilisez DNS.NEW_RRSET_A et NS.NEW_RRSET_AAAA expressions pour configurer la nouvelle section de réponses.

Exemple :


> add rewrite action replace_dns_ans_act replace_dns_answer_section  DNS.NEW_RRSET_A("1.1.1.1", 10)
Done
> sh rewrite action replace_dns_ans_act
Name: replace_dns_ans_act
Operation: replace_dns_answer_section
Target:DNS.NEW_RRSET_A("1.1.1.1", 10)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_DECODE<target>. Décode le modèle spécifié par la cible au format VPN sans client.

Exemple :


> add rewrite action cvpn_decode_act_1 clientless_vpn_decode http.req.body(100)
Done
> sh rewrite action cvpn_decode_act_1
Name: cvpn_decode_act_1
Operation: clientless_vpn_decode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_DECODE_ALL<target>-search<expression>. Décode TOUS les modèles spécifiés par le paramètre de recherche au format VPN sans client.

Exemple :


> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_ENCODE<target>. Encode le modèle spécifié par cible au format VPN sans client.

Exemple :


> add rewrite action cvpn_encode_act_1 clientless_vpn_encode http.req.body(100)
Done
> sh rewrite action cvpn_encode_act_1
Name: cvpn_encode_act_1
Operation: clientless_vpn_encode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_ENCODE_ALL<target>-search<expression>. Encode TOUS les paramètres de recherche spécifiés par les modèles au format VPN sans client.

Exemple :


> add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act2
Name: act1
Operation: clientless_vpn_encode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CORRUPT_SIP_HEADER<target>. Remplace le nom d’en-tête de toutes les occurrences de l’en-tête SIP <target> spécifiées par par un nom corrompu, de sorte que le récepteur ne le reconnaisse pas.

Exemple :


> add rewrite action corrupt_sip_hdr_act corrupt_sip_header SIP_HDR
Done
> sh rewrite action corrupt_sip_hdr_act
Name: corrupt_sip_hdr_act
Operation: corrupt_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_SIP_HEADER <header_string_builder_expr> <contents_string_builder_expr>. Insère l’en-tête SIP spécifié par <header_string_builder_expr> et le contenu de l’en-tête spécifié par <contents_string_builder_expr>.

Exemple :


> add rewrite action insert_sip_hdr_act insert_sip_header SIP_HDR '"inserting_sip_header"'
 Done
>sh rewrite action insert_sip_hdr_act
Name: insert_sip_hdr_act
Operation: insert_sip_header
Target:SIP_HDR
Value:"inserting_sip_header"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_SIP_HEADER<target>. Supprime l’en-tête SIP spécifié par <target>

Exemple :


> add rewrite action delete_sip_hdr delete_sip_header  SIP_HDR
Done
> sh rewrite action delete_sip_hdr
Name: delete_sip_hdr
Operation: delete_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Paramètre cible

Le paramètre Target est une expression qui spécifie la partie de la demande ou de la réponse à réécrire.

String Builder Expr

StringBuilderExpr est une expression qui spécifie le contenu à insérer dans la demande ou la réponse à l’emplacement spécifié. Cette expression remplace une chaîne spécifiée.

Exemple 1. Insertion d’un en-tête HTTP avec l’adresse IP du client :


> add rewrite action insertact INSERT_HTTP_HEADER "client-IP" CLIENT.IP.SRC
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header
Target:Client-IP
Value:CLIENT.IP.SRC
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Exemple 2. Remplacement de chaînes dans une charge utile TCP (réécriture TCP) :


> add rewrite action client_tcp_payload_replace_all REPLACE_ALL
  'client.tcp.payload(1000)' '"new-string"' -search text("old-string")
Done
> show rewrite action client_tcp_payload_replace_all
Name: client_tcp_payload_replace_all
Operation: replace_all
Target:client.tcp.payload(1000)
Value:"new-string"
Search: text("old-string")
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

Rechercher une partie de la demande ou de la réponse à réécrire

La fonctionnalité de recherche permet de trouver toutes les instances du modèle requis dans la demande ou la réponse.

La fonctionnalité de recherche doit être utilisée dans les types d’action suivants :

  • INSERT_BEFORE_ALL
  • INSERT_AFTER_ALL
  • REPLACE_ALL
  • DELETE_ALL
  • CLIENTLESS_VPN_ENCODE_ALL
  • CLIENTLESS_VPN_DECODE_ALL

La fonctionnalité Rechercher ne peut pas être utilisée avec les types d’action suivants :

  • INSERT_HTTP_HEADER
  • INSERT_BEFORE
  • INSERT_AFTER
  • REMPLACER
  • SUPPRIMER
  • DELETE_HTTP_HEADER
  • CORRUPT_HTTP_HEADER
  • REPLACE_HTTP_RES
  • CLIENTLESS_VPN_ENCODE
  • CODE_CLIENTLESS_VPN_DECODE
  • INSERT_SIP_HEADER
  • DELETE_SIP_HEADER
  • CORRUPT_SIP_HEADER
  • REPLACE_DIAMETER_HEADER_FIELD
  • REPLACE_DNS_ANSWER_SECTION
  • REPLACE_DNS_HEADER_FIELD
  • REPLACE_SIP_RES

Les types de recherche suivants sont pris en charge :

  • Texte - une chaîne littérale Exemple ፦recherche de texte (» bonjour »)
  • Expression régulière - modèle utilisé pour faire correspondre plusieurs chaînes dans la demande ou la réponse Exemple ፦search regex (re~^hello*~)
  • XPATH - Expression XPATH pour rechercher XML. Exemple ፦chemin d’accès xsearch (xp%/a/b%)
  • JSON : expression XPATH permettant de rechercher JSON. Exemple ፦search xpath_json (xp%/a/b%) HTML - Une expression XPATH pour rechercher HTML Exemple ፦rechercher xpath_html (xp%/html/body%) Patset - Cette recherche recherche tous les modèles liés à l’entité de jeu de patset. Exemple ፦jeu de patset de recherche (« patset1”)
  • Jeu de données : permet de rechercher tous les modèles liés à l’entité du jeu de données. Exemple ፦jeu de données de recherche (« jeu de données 1 »)
  • AVP - numéro AVP utilisé pour correspondre à plusieurs AVP dans un message diamètre/rayon Exemple ፦search avp (999)

Affiner les résultats de recherche

Vous pouvez utiliser la fonctionnalité Affiner la recherche pour spécifier les critères supplémentaires permettant d’affiner les résultats de la recherche. La fonctionnalité Affiner la recherche ne peut être utilisée que si la fonctionnalité de recherche est utilisée. Le paramètre Affiner la recherche commence toujours par l’opération « étendre (m, n) », où ‘m’ spécifie un certain nombre d’octets à gauche du résultat de la recherche et ‘n’ spécifie un certain nombre d’octets à droite du résultat de la recherche pour étendre la zone sélectionnée.

Si l’action de réécriture configurée est la suivante :


> add rewrite action test_refine_search replace_all http.res.body(10) '”testing_refine_search”' -search text("abc") -refineSearch extend(1,1)
And the HTTP response body is abcxxxx456.

<!--NeedCopy-->

Ensuite, le paramètre de recherche trouve le motif « abc » et puisque le paramètre RefineSearch est également configuré pour vérifier un octet supplémentaire à gauche et un octet supplémentaire à droite du motif apparié. Le texte remplacé qui en résulte est le suivant : abcx. Donc, le résultat de cette action est testing_refine_searchxxx456.

Exemple 1 : Utilisation de la fonctionnalité Affiner la recherche dans le type d’action INSERT_BEFORE_ALL.


> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Exemple 2 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action INSERT_AFTER_ALL.


> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Exemple 3 : Utilisation de la fonctionnalité Affiner la recherche dans le type d’action REPLACE_ALL.


> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://"" -search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Exemple 4 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action DELETE_ALL.


>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*<\\/AppData>#)"
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

Exemple 5 : Utilisation de la fonctionnalité Affiner la recherche dans le type d’action CLIENTLESS_VPN_ENCODE_ALL.

’’’

ajouter l’action de réécriture act2 clientless_vpn_encode_all http.req.body (100) -search text (« abcd ») Terminé action de réécriture act2 Nom : act1 Opération : clientless_vpn_encode_all Target:http.req.body (100) Recherche : texte (« abcd ») Résultats : 0 Undef Affichages : 0 Action Référence Nombre : 0 Terminé

’’’

Exemple 6 : Utilisation de la fonctionnalité Affiner la recherche dans le type d’action CLIENTLESS_VPN_DECODE_ALL.


> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

Modifier une action de réécriture existante à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour modifier une action de réécriture existante et vérifier la configuration :

  • set rewrite action <name> [-target<expression>] [-stringBuilderExpr<expression>] [-pattern<expression> | -search <expression>] [-refineSearch<expression>] [-comment<string>]
  • show rewrite action <name>

Exemple :


> set rewrite action insertact -target "Client-IP"
 Done
> show rewrite action insertact

Name: insertact
Operation: insert_http_header   Target:Client-IP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

Supprimer une action de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour supprimer une action de réécriture :

rm rewrite action <name>

Exemple :


> rm rewrite action insertact
Done

<!--NeedCopy-->

Configurer une action de réécriture à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > Rewrite > Actions.
  2. Dans le volet d’informations, effectuez l’une des opérations suivantes :
    • Pour créer une action, cliquez sur Ajouter.
    • Pour modifier une action existante, sélectionnez-la, puis cliquez sur Modifier.
  3. Cliquez sur Créer ou sur OK. Un message apparaît dans la barre d’état, indiquant que l’action a été correctement configurée.
  4. Répétez les étapes 2 à 4 pour créer ou modifier autant d’actions de réécriture que vous le souhaitez.
  5. Cliquez sur Fermer. Configurer une action de réécriture

Ajouter une expression à l’aide de la boîte de dialogue Ajouter une expression

  1. Dans la boîte de dialogue Créer une action de réécriture ou Configurer une action de réécriture, sous la zone de texte de l’argument type que vous souhaitez entrer, cliquez sur Ajouter.
  2. Dans la boîte de dialogue Ajouter une expression, dans la première zone de liste, choisissez le premier terme correspondant à votre expression.

    • HTTP. Le protocole HTTP. Choisissez cette option si vous souhaitez examiner certains aspects de la requête qui se rapportent au protocole HTTP.
    • DIT. Les sites Web protégés. Choisissez cette option si vous souhaitez examiner certains aspects de la demande concernant le destinataire de la demande.
    • CLIENT. L’ordinateur qui a envoyé la demande. Choisissez cette option si vous souhaitez examiner certains aspects de l’expéditeur de la demande.

Lorsque vous faites votre choix, la zone de liste la plus à droite répertorie les termes appropriés pour la prochaine partie de votre expression.

  1. Dans la deuxième zone de liste, choisissez le deuxième terme correspondant à votre expression. Les choix dépendent du choix que vous avez fait à l’étape précédente et sont appropriés au contexte. Après avoir fait votre deuxième choix, la fenêtre d’aide située sous la fenêtre Construire une expression (vide) affiche une aide décrivant l’objectif et l’utilisation du terme que vous venez de choisir.

  2. Continuez à choisir des termes dans les zones de liste qui apparaissent à droite de la zone de liste précédente, ou à taper des chaînes ou des nombres dans les zones de texte qui s’affichent pour vous inviter à entrer une valeur, jusqu’à ce que votre expression soit terminée. Pour plus d’informations sur le langage des expressions PI et la création d’expressions pour les stratégies de répondeur, voir « Policies and Expressions ». «

Si vous souhaitez tester l’effet d’une action de réécriture lorsqu’elle est utilisée sur des exemples de données HTTP, vous pouvez utiliser l’évaluateur de réécriture d’expression.

Réécriture des charges utiles TCP

Les expressions cibles dans les actions de réécriture TCP doivent commencer par l’un des préfixes d’expression suivants :

  • CLIENT.TCP.PAYLOAD. Pour réécrire des charges utiles TCP dans les demandes des clients. Par exemple, CLIENT.TCP.PAYLOAD (10000) .AFTER_STR (« string1”).
  • SERVEUR .TCP.PAYLOAD. Pour réécrire des charges utiles TCP dans les réponses du serveur. Par exemple, SERVER.TCP.PAYLOAD (1000) .B64DECODE.BETWEEN (« string1”, “string2”).

Évaluez une action de réécriture à l’aide de la boîte de dialogue Évaluateur d’actions de réécriture

  1. Dans le volet d’informations Actions de réécriture, sélectionnez l’action de réécriture que vous souhaitez évaluer, puis cliquez sur Évaluer.
  2. Dans la boîte de dialogue Rewrite Expression Evaluator, spécifiez des valeurs pour les paramètres suivants. (Un astérisque indique un paramètre obligatoire.)

    Action de réécriture : si l’action de réécriture que vous souhaitez évaluer n’est pas déjà sélectionnée, sélectionnez-la dans la liste déroulante. Une fois que vous avez sélectionné une action Réécriture, la section Détails affiche les détails de l’action Réécriture sélectionnée. Nouveau : sélectionnez Nouveau pour ouvrir la boîte de dialogue Créer une action de réécriture et créer une action de réécriture. Modifier (Modifier) : sélectionnez Modifier pour ouvrir la boîte de dialogue Configurer l’action de réécriture et modifier l’action de réécriture sélectionnée. Type de flux : spécifie s’il faut tester l’action de réécriture sélectionnée avec des données de requête HTTP ou de réponse HTTP. La valeur par défaut est Request. Si vous souhaitez effectuer un test avec des données de réponse, sélectionnez Réponse. Données HTTP Request/Response Data* : fournit un espace permettant de fournir les données HTTP utilisées par l’évaluateur d’action de réécriture pour les tests. Vous pouvez coller les données directement dans la fenêtre ou cliquer sur Exemple pour insérer des exemples d’en-têtes HTTP. Afficher la fin de ligne : indique s’il faut afficher des caractères de fin de ligne de style UNIX (\ n) à la fin de chaque ligne d’exemples de données HTTP. Exemple : insère des exemples de données HTTP dans la fenêtre Données de demande/réponse HTTP. Vous pouvez choisir les données GET ou POST. Parcourir : ouvre une fenêtre de navigation locale afin que vous puissiez choisir un fichier contenant des exemples de données HTTP à partir d’un emplacement local ou réseau. Effacer (Clear) : efface les exemples de données HTTP actuels de la fenêtre Données de demande/réponse HTTP.

  3. Cliquez sur Evaluer. L’ évaluateur d’actions de réécriture évalue l’effet de l’action Réécriture sur les exemples de données que vous avez choisis et affiche les résultats tels que modifiés par l’action Réécriture sélectionnée dans la fenêtre Résultats . Les ajouts et suppressions sont mis en surbrillance comme indiqué dans la légende dans le coin inférieur gauche de la boîte de dialogue.
  4. Continuez à évaluer les actions Réécriture jusqu’à ce que vous ayez déterminé que toutes vos actions ont l’effet souhaité.

    • Vous pouvez modifier l’action de réécriture sélectionnée et tester la version modifiée en cliquant sur Modifier pour ouvrir la boîte de dialogue Configurer l’action de réécriture, en effectuant et en enregistrant vos modifications, puis en cliquant à nouveau sur Évaluer.
    • Vous pouvez évaluer une action de réécriture différente à l’aide des mêmes données de demande ou de réponse en la sélectionnant dans la liste déroulante Action de réécriture, puis en cliquant à nouveau sur Évaluer .
  5. Cliquez sur Fermer pour fermer l’ évaluateur d’expression de réécriture et revenir au volet Actions de réécriture .

  6. Pour supprimer une action de réécriture, sélectionnez l’action de réécriture que vous souhaitez supprimer, puis cliquez sur Supprimer et, lorsque vous y êtes invité, confirmez votre choix en cliquant sur OK. Évaluation d'une action de réécriture