Citrix ADC

Configurar una acción de reescritura

Advertencia

La función Pattern de una acción de reescritura está obsoleta de Citrix ADC 12.0 compilación 56.20 en adelante y, como alternativa, Citrix recomienda utilizar el parámetro de acción de reescritura de búsqueda.

Una acción de reescritura indica los cambios realizados en una solicitud o respuesta antes de enviarla a un servidor o cliente.

Las expresiones definen lo siguiente:

  • Tipo de acción de reescritura.

  • Ubicación de la acción de reescritura.

  • Tipo de configuración de acción de reescritura.

Por ejemplo, una acción DELETE solo utiliza una expresión de destino. Una acción REEMPLAZAR utiliza una expresión de destino y una expresión para configurar el texto de reemplazo.

Después de habilitar la función de reescritura, debe configurar una o varias acciones a menos que una acción de reescritura incorporada sea suficiente. Todas las acciones integradas tienen nombres que empiezan por la cadena ns_cvpn, seguida de una cadena de letras y caracteres de subrayado. Las acciones integradas realizan tareas útiles y complejas, como decodificar partes de una solicitud o respuesta VPN sin cliente o modificar datos JavaScript o XML. Las acciones integradas se pueden ver, habilitar y deshabilitar, pero no se pueden modificar ni eliminar.

Nota:

Los tipos de acción que solo se pueden utilizar para la reescritura HTTP se identifican en la columna Tipo de acción de reescritura.

Para obtener más información, consulte Parámetro Tipo.

Crear una acción de reescritura mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para crear una acción de reescritura y verificar la configuración:

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

Para obtener más información, consulte la tabla Tipos de acciones de reescritura y sus argumentos .

La función de reescritura tiene las siguientes acciones integradas:

  • Norewrite: envía la solicitud o respuesta al usuario sin volver a escribirla.

  • RESET: restablece la conexión y notifica al navegador del usuario para que el usuario pueda volver a enviar la solicitud.

  • DROP: desactiva la conexión sin enviar una respuesta al usuario.

Uno de los siguientes tipos de flujo está asociado implícitamente a cada acción:

  • Solicitud: la acción se aplica a la solicitud.

  • Respuesta: la acción se aplica a la respuesta.

  • Neutral: la acción se aplica tanto a las solicitudes como a las respuestas.

Nombre

Nombre de la acción de reescritura definida por el usuario. Debe comenzar con una letra, un número o el carácter de guión bajo (_) y debe contener solo letras, números y el guión (-), punto (.) hash (#), espacio (), at (@), igual a (=), dos puntos (:) y caracteres de guión bajo. Se puede cambiar después de agregar la política de reescritura.

Parámetro de tipo

El parámetro Type muestra el tipo de acción de reescritura definida por el usuario.

A continuación se presentan los valores del parámetro Type :

  • REPLACE <target> <string_builder_expr>. Sustituye la cadena por la expresión del generador de cadenas.

Ejemplo:

> 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>. En la solicitud o respuesta especificada por <target>, reemplaza todas las apariciones de la cadena definida por por <string_builder_expr1> la cadena definida por <string_builder_expr2>. Puede utilizar un patrón de formato PCR o la herramienta de búsqueda para encontrar las cadenas que se van a reemplazar.

Ejemplo:

> 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>. Sustituye la respuesta HTTP completa por la cadena definida por la expresión del generador de cadenas.

Ejemplo:

> 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>. Sustituye la respuesta SIP completa por la cadena especificada por <target>.

Ejemplo:

> 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>. Inserta el encabezado HTTP especificado por y contenido de encabezado especificado por .

Ejemplo:

> 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>. Elimina el encabezado HTTP especificado por <target>

Ejemplo:

> 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>. Sustituye el nombre del encabezado de todas las apariciones del encabezado HTTP especificado por <target> un nombre dañado, de modo que el receptor no lo reconozca Ejemplo: MY_HEADER se cambia a MHEY_ADER.

Ejemplo:


> 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>. Busca la cadena especificada en <string_builder_expr1> e inserta la cadena <string_builder_expr2> delante de ella.
> 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>. En la solicitud o respuesta especificada por <target>, localiza todas las apariciones de la cadena especificada en <string_builder_expr1> e inserta la cadena especificada <string_builder_expr2> antes de ella. Puede utilizar un patrón de formato PCR o la herramienta de búsqueda para buscar las cadenas.

Ejemplo:


> 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>. Busca la cadena especificada en e inserta la cadena especificada en después de eso. **Ejemplo**:
> 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>. En la solicitud o respuesta especificada por <target>, localiza todas las apariciones de la cadena especificada por <string_builder_expr1> e inserta la cadena especificada <string_builder_expr2> después de cada una. Puede utilizar un patrón de formato PCR o la herramienta de búsqueda para buscar las cadenas.

Ejemplo:


> 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>. Busca y elimina el destino especificado.

Ejemplo:

> 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>. En la solicitud o respuesta especificada por <target>, localiza y elimina todas las apariciones de la cadena especificada por <string_builder_expr>. Puede utilizar un patrón de formato PCR o la herramienta de búsqueda para buscar las cadenas.

Ejemplo:


>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>. En la solicitud o las respuestas, modifique el campo de encabezado especificado por <target>. Utilice Diameter.req.flags.SET(<flag>) o Diameter.req.flags.UNSET<flag> como stringbuilderexpression para establecer o desestablecer indicadores.

Ejemplo:


> 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>. En la solicitud o respuesta modifica el campo de encabezado especificado por <target>.

Ejemplo:


> 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>. Sustituya la sección de respuesta DNS de la respuesta. En la actualidad, solo se aplica a los registros A y AAAA. Uso DNS.NEW_RRSET_A y NS.NEW_RRSET_AAAA expresiones para configurar la nueva sección de respuestas.

Ejemplo:


> 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>. Descodifica el patrón especificado por destino En formato VPN sin cliente.

Ejemplo:


> 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>. Descodifica TODOS los patrones especificados por el parámetro de búsqueda En formato VPN sin cliente.

Ejemplo:


> 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>. Codifica el patrón especificado por destino en formato VPN sin cliente.

Ejemplo:


> 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>. Codifica TODOS los patrones especificados en el parámetro de búsqueda en formato VPN sin cliente.

Ejemplo:


> 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>. Sustituye el nombre del encabezado de todas las apariciones del encabezado SIP especificado por <target> un nombre dañado, de modo que el receptor no lo reconozca.

Ejemplo:


> 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>. Inserta el encabezado SIP especificado por <header_string_builder_expr> y el contenido del encabezado especificado por <contents_string_builder_expr>.

Ejemplo:


> 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>. Elimina el encabezado SIP especificado por <target>

Ejemplo:


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

Parámetro de destino

El parámetro Target Es una expresión que especifica qué parte de la solicitud o respuesta se va a reescribir.

String Builder Expr

StringBuilderExpr Es una expresión que especifica el contenido que se va a insertar en la solicitud o respuesta en la ubicación especificada. Esta expresión sustituye a una cadena especificada.

Ejemplo 1. Inserción de un encabezado HTTP con la IP del cliente:


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

Ejemplo 2. Sustitución de cadenas en una carga útil TCP (reescritura 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-->

Busca una parte de la solicitud o respuesta para reescribir

La funcionalidad de búsqueda ayuda a encontrar todas las instancias del patrón requerido en la solicitud o respuesta.

Se requiere que la funcionalidad de búsqueda se utilice en los siguientes tipos de acciones:

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

La funcionalidad de búsqueda no se puede utilizar con los siguientes tipos de acciones:

  • INSERT_HTTP_HEADER
  • INSERT_BEFORE
  • INSERT_AFTER
  • REEMPLAZAR
  • SUPRIMIR
  • DELETE_HTTP_HEADER
  • CORRUPT_HTTP_HEADER
  • REPLACE_HTTP_RES
  • CLIENTLESS_VPN_ENCODE
  • 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

Se admiten los siguientes tipos de búsqueda:

  • Texto - una cadena literal Ejemplo ፦buscar texto (» hello»)
  • Expresión regular: patrón que se utiliza para hacer coincidir varias cadenas en la solicitud o respuesta Ejemplo ፦búsqueda regular (re~^hello*~)
  • XPATH: expresión XPATH para buscar XML. Ejemplo ፦buscar xpath (xp%/a/b%)
  • JSON: expresión XPATH para buscar en JSON. Ejemplo ፦search xpath_json (xp%/a/b%) HTML - Expresión XPATH para buscar HTML Ejemplo ፦buscar xpath_html (xp%/html/body%) Patset - Busca todos los patrones vinculados a la entidad patset. Ejemplo ፦conjunto de patentes de búsqueda («patset1”)
  • Conjunto de datos: busca todos los patrones enlazados a la entidad del conjunto de datos. Ejemplo ፦conjunto de datos de búsqueda («dataset1”)
  • AVP - Número AVP que se utiliza para hacer coincidir varios AVP en un mensaje de diámetro/radio Ejemplo ፦search avp (999)

Refinar los resultados de búsqueda

Puede utilizar la funcionalidad Refinar búsqueda para especificar los criterios adicionales para refinar los resultados de búsqueda. La funcionalidad Refinar búsqueda solo se puede utilizar si se utiliza la funcionalidad de búsqueda. El parámetro Refinar búsqueda siempre comienza con la operación «extender (m, n)», donde ‘m’ especifica un número de bytes a la izquierda del resultado de búsqueda y ‘n’ especifica un número de bytes a la derecha del resultado de búsqueda para ampliar el área seleccionada.

Si la acción de reescritura configurada es:


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

A continuación, el parámetro de búsqueda busca el patrón «abc» y dado que el parámetro RefineSearch también está configurado para comprobar un byte extra a la izquierda y otro byte adicional a la derecha del patrón coincidente. El texto sustituido resultante es: abcx. Por lo tanto, el resultado de esta acción es testing_refine_searchxxx456.

Ejemplo 1: Uso de la funcionalidad de búsqueda Refinar en el tipo de acción 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-->

Ejemplo 2: Uso de la funcionalidad de búsqueda Refinar en el tipo de acción 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-->

Ejemplo 3: Uso de la funcionalidad de búsqueda Refinar en el tipo de acción 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-->

Ejemplo 4: Uso de la funcionalidad de búsqueda Refinar en el tipo de acción 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-->

Ejemplo 5: Uso de la funcionalidad Refinar búsqueda en el tipo de acción CLIENTLESS_VPN_ENCODE_ALL.

’’’

add rewrite action act2 clientless_vpn_encode_all http.req.body (100) -search text («abcd») Hecho sh rewrite action act2 Nombre: act1 Operación: clientless_vpn_encode_all target:http.req.body (100) Búsqueda: text («abcd») Visitas : 0 Undef Hits: 0 Action Reference Count: 0 Listo

’’’

Ejemplo 6: Uso de la funcionalidad Refinar búsqueda del tipo de acción 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-->

Modificar una acción de reescritura existente mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para modificar una acción de reescritura existente y verificar la configuración:

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

Ejemplo:


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

Eliminar una acción de reescritura mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para eliminar una acción de reescritura:

rm rewrite action <name>

Ejemplo:


> rm rewrite action insertact
Done

<!--NeedCopy-->

Configurar una acción de reescritura mediante la utilidad de configuración

  1. Vaya a AppExpert > Rewrite > Actions.
  2. En el panel de detalles, realice una de las acciones siguientes:
    • Para crear una acción, haz clic en Agregar.
    • Para modificar una acción existente, selecciónela y, a continuación, haga clic en Editar.
  3. Haga clic en Crear o Aceptar. Aparece un mensaje en la barra de estado que indica que la acción se ha configurado correctamente.
  4. Repita los pasos 2 a 4 para crear o modificar tantas acciones de reescritura como quieras.
  5. Haga clic en Cerrar. Configurar una acción de reescritura

Agregar una expresión mediante el cuadro de diálogo Agregar expresión

  1. En el cuadro de diálogo Crear acción de reescritura o Configurar acción de reescritura, en el área de texto del argumento de tipo que desea introducir, haga clic en Agregar.
  2. En el cuadro de diálogo Agregar expresión, en el primer cuadro de lista, elija el primer término para su expresión.

    • HTTP. El protocolo HTTP. Elija esta opción si desea examinar algún aspecto de la solicitud que pertenece al protocolo HTTP.
    • SYS. Los sitios web protegidos. Elija esto si desea examinar algún aspecto de la solicitud que pertenece al destinatario de la solicitud.
    • CLIENTE. El equipo que envió la solicitud. Elija esta opción si desea examinar algún aspecto del remitente de la solicitud.

Cuando elige, el cuadro de lista situado más a la derecha enumera los términos apropiados para la siguiente parte de la expresión.

  1. En el segundo cuadro de lista, elija el segundo término de su expresión. Las elecciones dependen de la elección que haya tomado en el paso anterior y son apropiadas para el contexto. Después de realizar la segunda elección, la ventana Ayuda situada debajo de la ventana Construir expresión (que estaba en blanco) muestra ayuda que describe el propósito y el uso del término que acaba de elegir.

  2. Siga eligiendo términos en los cuadros de lista que aparecen a la derecha del cuadro de lista anterior o escribiendo cadenas o números en los cuadros de texto que aparecen para pedirle que escriba un valor hasta que finalice la expresión. Para obtener más información sobre el lenguaje de expresiones PI y la creación de expresiones para directivas de respuesta, consulte “Directivas y expresiones. “

Si quiere probar el efecto de una acción de reescritura cuando se utiliza en datos HTTP de ejemplo, puede utilizar el Evaluador de expresiones de reescritura.

Reescritura de cargas útiles TCP

Las expresiones de destino de las acciones de reescritura TCP deben comenzar con uno de los siguientes prefijos de expresión:

  • CLIENT.TCP.PAYLOAD. Para reescribir cargas útiles TCP en solicitudes de clientes. Por ejemplo, CLIENT.TCP.PAYLOAD (10000) .AFTER_STR («string1”).
  • SERVER.TCP.PAYLOAD. Para reescribir las cargas útiles TCP en las respuestas del servidor. Por ejemplo, SERVER.TCP.PAYLOAD (1000) .B64DECODE.BETWEEN («string1”, “string2”).

Evaluar una acción de reescritura mediante el cuadro de diálogo Evaluador de acciones de reescritura

  1. En el panel de detalles Acciones de reescritura, seleccione la acción de reescritura que desea evaluar y, a continuación, haga clic en Evaluar.
  2. En el cuadro de diálogo Reescritura del Evaluador de expresiones, especifique valores para los siguientes parámetros. (Un asterisco indica un parámetro obligatorio).

    Acción de reescritura: si la acción de reescritura que desea evaluar aún no está seleccionada, selecciónela en la lista desplegable. Tras seleccionar una acción de reescritura, la sección Detalles muestra los detalles de la acción Reescritura seleccionada. Nuevo: seleccione Nuevo para abrir el cuadro de diálogo Crear acción de reescritura y crear una acción de reescritura. Modificar: seleccione Modificar para abrir el cuadro de diálogo Configurar acción de reescritura y modificar la acción de reescritura seleccionada. Tipo de flujo: especifica si se debe probar la acción de reescritura seleccionada con datos de solicitud HTTP o datos de respuesta HTTP. El valor predeterminado es Solicitud. Si quieres realizar pruebas con datos de respuesta, selecciona Respuesta. Datos de solicitud/respuesta HTTP: proporciona un espacio para proporcionar los datos HTTP que el Evaluador de acciones de reescritura se utiliza para probar. Puede pegar los datos directamente en la ventana o hacer clic en Muestra para insertar algunos encabezados HTTP de ejemplo. Mostrar fin de línea: especifica si se muestran los caracteres de fin de línea estilo UNIX (\ n) al final de cada línea de datos HTTP de ejemplo. Ejemplo: inserta datos HTTP de ejemplo en la ventana Datos de solicitud/respuesta HTTP. Puede elegir datos GET o POST. Explorar: abre una ventana de navegación local para que pueda elegir un archivo que contenga datos HTTP de ejemplo de una ubicación local o de red. Borrar: borra los datos HTTP de ejemplo actuales de la ventana Datos de solicitud/respuesta HTTP.

  3. Haz clic en Evaluar. El Evaluador de acciones de reescritura evalúa el efecto de la acción Reescritura en los datos de ejemplo elegidos y muestra los resultados modificados por la acción Reescritura seleccionada en la ventana Resultados . Las adiciones y eliminaciones se resaltan tal y como se indica en la leyenda de la esquina inferior izquierda del cuadro de diálogo.
  4. Continúe evaluando las acciones de reescritura hasta que haya determinado que todas sus acciones tienen el efecto deseado.

    • Puede modificar la acción de reescritura seleccionada y probar la versión modificada haciendo clic en Modificar para abrir el cuadro de diálogo Configurar acción de reescritura, realizar y guardar los cambios y, a continuación, haga clic en Evaluar de nuevo.
    • Puede evaluar una acción de reescritura diferente utilizando los mismos datos de solicitud o respuesta seleccionándola en la lista desplegable Acción de reescritura y, a continuación, haga clic en Evaluar de nuevo.
  5. Haga clic en Cerrar para cerrar el Evaluador de expresiones de reescritura y volver al panel Acciones de reescritura .

  6. Para eliminar una acción de reescritura, seleccione la acción de reescritura que desea eliminar y, a continuación, haga clic en Eliminar y, cuando se le solicite, confirme su elección haciendo clic en Aceptar. Evaluar una acción de reescritura