ADC

Konfigurieren einer Rewrite-Aktion

Warnung

Die Pattern-Funktion in einer Rewrite-Aktion ist ab Citrix ADC 12.0 Build 56.20 veraltet, und Citrix empfiehlt Ihnen alternativ, den Aktionsparameter Rewrite Search zu verwenden.

Eine Rewrite-Aktion zeigt Änderungen an, die an einer Anfrage oder Antwort vorgenommen wurden, bevor sie an einen Server oder Client gesendet wurden.

Ausdrücke definieren Folgendes:

  • Schreiben Sie den Aktionstyp neu.

  • Ort der Rewrite-Aktion.

  • Schreiben Sie den Aktionskonfiguration neu.

Beispielsweise verwendet eine DELETE-Aktion nur einen Zielausdruck. Eine REPLACE-Aktion verwendet einen Zielausdruck und einen Ausdruck, um den Ersetzungstext zu konfigurieren.

Nachdem Sie die Rewrite-Funktion aktiviert haben, müssen Sie eine oder mehrere Aktionen konfigurieren, es sei denn, eine integrierte Rewrite-Aktion reicht aus. Alle integrierten Aktionen haben Namen, die mit der Zeichenfolge ns_cvpn beginnen, gefolgt von einer Reihe von Buchstaben und Unterstrichen. Integrierte Aktionen führen nützliche und komplexe Aufgaben aus, z. B. das Dekodieren von Teilen einer clientlosen VPN-Anfrage oder Antwort oder das Ändern von JavaScript- oder XML-Daten. Die integrierten Aktionen können angezeigt, aktiviert und deaktiviert werden, können jedoch nicht geändert oder gelöscht werden.

Hinweis:

Aktionstypen, die nur für HTTP-Umschreibung verwendet werden können, werden in der Spalte Aktionstyp umschreiben identifiziert.

Weitere Informationen finden Sie unter Typenparameter.

Erstellen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Rewrite-Aktion zu erstellen und die Konfiguration zu überprüfen:

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

Weitere Informationen finden Sie in der Tabelle Aktionstypen umschreiben und deren Argumente .

Die Rewrite-Funktion verfügt über die folgenden integrierten Aktionen:

  • NOREWRITE - Sendet die Anfrage oder Antwort an den Benutzer, ohne sie neu zu schreiben.

  • RESET - Setzt die Verbindung zurück und benachrichtigt den Browser des Benutzers, damit der Benutzer die Anfrage erneut senden kann.

  • DROP - Löscht die Verbindung, ohne eine Antwort an den Benutzer zu senden.

Einer der folgenden Flow-Typen ist implizit mit jeder Aktion verknüpft:

  • Request - Aktion gilt für die Anfrage.

  • Response - Aktion gilt für die Antwort.

  • Neutral - Aktion gilt sowohl für Anfragen als auch für Antworten.

Name

Name für die benutzerdefinierte Rewrite-Aktion. Muss mit einem Buchstaben, einer Zahl oder dem Unterstrich (_) beginnen und darf nur Buchstaben, Zahlen und den Bindestrich (-), Punkt (.) Hash (#), Leerzeichen (), Leerzeichen (), bei (@), gleich (=), Doppelpunkt (:) und Unterstriche enthalten. Kann geändert werden, nachdem die Rewrite-Richtlinie hinzugefügt wurde.

Typ-Parameter

Der Type-Parameter zeigt den Typ der benutzerdefinierten Rewrite-Aktion an.

Im Folgenden sind die Werte des Type-Parameters aufgeführt:

  • REPLACE <target> <string_builder_expr>. Ersetzt die Zeichenfolge durch den String-Builder-Ausdruck.

Beispiel:

> 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>. Ersetzt in der von <target>angegebenen Anforderung oder Antwort alle Vorkommen der <string_builder_expr1> durch definierten Zeichenfolge durch <string_builder_expr2>. Sie können ein PCRE-Formatmuster oder die Suchfunktion verwenden, um die zu ersetzenden Strings zu ermitteln.

Beispiel:

> 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>. Ersetzt die vollständige HTTP-Antwort durch die durch den String-Builder-Ausdruck definierte Zeichenfolge.

Beispiel:

> 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>. Ersetzt die vollständige SIP-Antwort durch die durch angegebene Zeichenfolge <target>.

Beispiel:

> 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>. Fügt den von <header_string_builder_expr> angegebenen HTTP-Header ein und Header-Inhalt angegeben durch <contents_string_builder_expr>.

Beispiel:

> 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>. Löscht den HTTP-Header, der von angegeben wurde <target>

Beispiel:

> 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>. Ersetzt den Header-Namen aller Vorkommen des durch angegebenen HTTP-Headers <target> durch einen beschädigten Namen, so dass er vom Empfänger nicht erkannt wird Beispiel: MY_HEADER wird in MHEY_ADER geändert.

Beispiel:


> 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>. Findet die in angegebene Zeichenfolge <string_builder_expr1> und fügt die Zeichenfolge <string_builder_expr2> davor ein.
> 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>. Sucht in der von <target>angegebenen Anforderung oder Antwort alle Vorkommen der in angegebenen Zeichenfolge <string_builder_expr1> und fügt die <string_builder_expr2> zuvor angegebene Zeichenfolge ein. Sie können ein PCRE-Formatmuster oder die Suchfunktion verwenden, um die Strings zu finden.

Beispiel:


> 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>. Findet die in <string_builder_expr1> angegebene Zeichenfolge und fügt die in <string_builder_expr2> angegebene Zeichenfolge danach ein.

Beispiel:

> 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>. Sucht in der von <target>angegebenen Anforderung oder Antwort alle Vorkommen der durch angegebenen Zeichenfolge <string_builder_expr1> und fügt die durch <string_builder_expr2> angegebene Zeichenfolge ein. Sie können ein PCRE-Formatmuster oder die Suchfunktion verwenden, um die Strings zu finden.

Beispiel:


> 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>. Findet und löscht das angegebene Ziel.

Beispiel:

> 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>. In der von <target>angegebenen Anforderung oder Antwort sucht und löscht alle Vorkommen der durch angegebenen Zeichenfolge <string_builder_expr>. Sie können ein PCRE-Formatmuster oder die Suchfunktion verwenden, um die Strings zu finden.

Beispiel:


>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>. Ändern Sie in der Anforderung oder den Antworten das durch angegebene Kopfzeilenfeld <target>. Verwenden Sie Diameter.req.flags.SET(<flag>) oder Diameter.req.flags.UNSET<flag> wie stringbuilderexpression, um Flags zu setzen oder aufzuheben.

Beispiel:


> 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>. In der Anforderung oder Antwort ändert das durch angegebene Header-Feld <target>.

Beispiel:


> 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>. Ersetzen Sie den DNS-Antwortabschnitt in der Antwort. Dies gilt derzeit nur für A- und AAAA-Datensätze. Verwenden Sie DNS.NEW_RRSET_A und NS.NEW_RRSET_AAAA Ausdrücke, um den neuen Antwortabschnitt zu konfigurieren.

Beispiel:


> 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>. Dekodiert das vom Ziel angegebene Muster Im clientlosen VPN-Format.

Beispiel:


> 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>. Dekodiert ALLE durch den Suchparameter angegebenen Muster im clientlosen VPN-Format.

Beispiel:


> 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>. Codiert das von target angegebene Muster im clientlosen VPN-Format.

Beispiel:


> 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>. Kodiert ALLE Muster angegebenen Suchparameter im clientlosen VPN-Format.

Beispiel:


> 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>. Ersetzt den Header-Namen aller Vorkommen des durch angegebenen SIP-Headers <target> durch einen beschädigten Namen, damit der Empfänger ihn nicht erkennt.

Beispiel:


> 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>. Fügt den durch angegebenen SIP-Header <header_string_builder_expr> und Header-Inhalt ein, der durch angegeben ist <contents_string_builder_expr>.

Beispiel:


> 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>. Löscht den SIP-Header, der von angegeben wurde <target>

Beispiel:


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

Target-Parameter

Der Target-Parameter Ist ein Ausdruck, der angibt, welcher Teil der Anforderung oder Antwort neu geschrieben werden soll.

StringBuilderExpr

Der StringBuilderExpr Ist ein Ausdruck, der den Inhalt angibt, der an der angegebenen Stelle in die Anforderung oder Antwort eingefügt werden soll. Dieser Ausdruck ersetzt eine angegebene Zeichenfolge.

Beispiel 1. Einfügen eines HTTP-Headers mit der Client-IP:


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

Beispiel 2. Strings in einer TCP-Nutzlast ersetzen (TCP Rewrite):


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

Suchen Sie einen Teil der Anfrage oder Antwort zum Umschreiben

Die Suchfunktion hilft dabei, alle Instanzen des erforderlichen Musters in der Anfrage oder Antwort zu finden.

Die Suchfunktion muss in den folgenden Aktionstypen verwendet werden:

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

Die Suchfunktion kann nicht mit den folgenden Aktionstypen verwendet werden:

  • INSERT_HTTP_HEADER
  • INSERT_BEFORE
  • INSERT_AFTER
  • REPLACE
  • DELETE
  • 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

Die folgenden Suchtypen werden unterstützt:

  • Text - eine literale Zeichenfolge Beispiel: -search text (“hello”)
  • Regulärer Ausdruck - Muster, das verwendet wird, um mehrere Strings in der Anfrage oder Antwort abzugleichen Beispiel: -search regex(re~^hello*~)
  • XPATH - Ein XPATH-Ausdruck zur Suche nach XML. Beispiel: -search xpath(xp%/a/b%)
  • JSON - Ein XPATH-Ausdruck zur Suche nach JSON. Beispiel: -search xpath_json(xp%/a/b%) HTML - Ein XPATH-Ausdruck zur Suche nach HTML Beispiel: -search xpath_html(xp%/html/body%) Patset - Dies durchsucht alle Muster, die an die Patset-Entität gebunden sind. Beispiel: -search patset(“patset1”)
  • Datset - Dies durchsucht alle Muster, die an die Datset-Entität gebunden sind. Beispiel ፦Suchdatensatz (“dataset1”)
  • AVP - AVP-Nummer, die verwendet wird, um mehrere AVPs in einer Durchmesser-/Radius-Nachricht abzugleichen Beispiel: -search avp(999)

Verfeinern Sie die Suchergebnisse

Sie können die Funktion “Suche eingrenzen” verwenden, um die zusätzlichen Kriterien für die Verfeinerung der Suchergebnisse anzugeben. Die Funktion “Suche eingrenzen” kann nur verwendet werden, wenn die Suchfunktion verwendet wird. Der Suchparameter “Verfeinern” beginnt immer mit der Operation “erweitern (m, n)”, wobei ‘m’ eine Anzahl von Bytes links vom Suchergebnis angibt und ‘n’ eine Anzahl von Bytes rechts vom Suchergebnis angibt, um den ausgewählten Bereich zu erweitern.

Wenn die konfigurierte Rewrite-Aktion lautet:


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

Dann findet der Suchparameter das Muster “abc” und da der RefineSearch-Parameter auch so konfiguriert ist, dass er ein zusätzliches 1 Byte links und ein zusätzliches Byte rechts vom übereinstimmenden Muster überprüft. Der resultierende ersetzte Text ist: abcx. Die Ausgabe dieser Aktion ist also testing_refine_searchxxx456.

Beispiel 1: Verwenden der Suchfunktion Verfeinern im Aktionstyp 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-->

Beispiel 2: Verwenden der Suchfunktion “Suche eingrenzen” im Aktionstyp 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-->

Beispiel 3: Verwenden der Suchfunktion Verfeinern im Aktionstyp 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-->

Beispiel 4: Verwenden der Suchfunktion “Suche eingrenzen” im Aktionstyp 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-->

Beispiel 5: Verwenden der Funktion “Suche eingrenzen” im Aktionstyp CLIENTLESS_VPN_ENCODE_ALL.

’’’

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

’’’

Beispiel 6: Verwenden der Funktion “Suche eingrenzen” im Aktionstyp 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-->

Ändern Sie eine vorhandene Rewrite-Aktion mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine vorhandene Rewrite-Aktion zu ändern und die Konfiguration zu überprüfen:

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

Beispiel:


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

Entfernen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Rewrite-Aktion zu entfernen:

rm rewrite action <name>

Beispiel:


> rm rewrite action insertact
Done

<!--NeedCopy-->

Konfigurieren Sie eine Rewrite-Aktion mit dem Konfigurationsdienstprogramm

  1. Gehen Sie zu AppExpert > Rewrite > Actions.
  2. Führen Sie im Detailbereich eine der folgenden Aktionen aus:
    • Um eine Aktion zu erstellen, klicken Sie auf Hinzufügen.
    • Um eine vorhandene Aktion zu ändern, wählen Sie die Aktion aus, und klicken Sie dann auf Bearbeiten.
  3. Klicken Sie auf Erstellen oder OK. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Aktion erfolgreich konfiguriert wurde.
  4. Wiederholen Sie die Schritte 2 bis 4, um beliebig viele Umschreibungsaktionen zu erstellen oder zu ändern.
  5. Klicken Sie auf Schließen. Konfigurieren einer Rewrite-Aktion

Fügen Sie mithilfe des Dialogfelds Ausdruck hinzufügen einen Ausdruck hinzu

  1. Klicken Sie im Dialogfeld Rewrite-Aktion erstellen oder Rewrite-Aktion konfigurieren unter dem Textbereich für das einzugebende Typargument auf Hinzufügen.
  2. Wählen Sie im Dialogfeld Ausdruck hinzufügen im ersten Listenfeld den ersten Begriff für Ihren Ausdruck aus.

    • HTTP. Das HTTP-Protokoll. Wählen Sie diese Option, wenn Sie einen Aspekt der Anforderung untersuchen möchten, der sich auf das HTTP-Protokoll bezieht.
    • SYS. Die geschützten Websites. Wählen Sie diese Option, wenn Sie einen Aspekt der Anfrage untersuchen möchten, der sich auf den Empfänger der Anfrage bezieht.
    • CLIENT. Der Computer, der die Anfrage gesendet hat. Wählen Sie diese Option aus, wenn Sie einen Aspekt des Absenders der Anfrage untersuchen möchten.

Wenn Sie Ihre Wahl treffen, werden im Listenfeld ganz rechts geeignete Begriffe für den nächsten Teil Ihres Ausdrucks aufgeführt.

  1. Wählen Sie im zweiten Listenfeld den zweiten Begriff für Ihren Ausdruck aus. Die Auswahl hängt davon ab, welche Wahl Sie im vorherigen Schritt getroffen haben, und sind dem Kontext angemessen. Nachdem Sie Ihre zweite Wahl getroffen haben, wird im Hilfefenster unterhalb des Fensters “Ausdruck konstruieren” (das leer war) eine Hilfe zur Beschreibung des Zwecks und der Verwendung des gerade gewählten Begriffs angezeigt.

  2. Fahren Sie fort, Begriffe aus den Listenfeldern auszuwählen, die rechts neben dem vorherigen Listenfeld angezeigt werden, oder geben Sie Zeichenfolgen oder Zahlen in die Textfelder ein, die Sie zur Eingabe eines Werts auffordern, bis der Ausdruck beendet ist. Weitere Informationen zur Sprache der PI-Ausdrücke und zum Erstellen von Ausdrücken für Responder-Richtlinien finden Sie unter “Richtlinien und Ausdrücke. “

Wenn Sie die Wirkung einer Umschreibaktion testen möchten, wenn sie auf HTTP-Beispieldaten verwendet wird, können Sie den Ausdrucksauswertungsauswerter umschreiben verwenden.

TCP-Nutzlasten umschreiben

Zielausdrücke in Aktionen für TCP-Rewrite müssen mit einem der folgenden Ausdruckspräfixe beginnen:

  • CLIENT.TCP.PAYLOAD. Zum Umschreiben von TCP-Nutzlasten in Clientanfragen. Zum Beispiel CLIENT.TCP.PAYLOAD(10000).AFTER_STR(“string1”).
  • SERVER.TCP.PAYLOAD. Zum Umschreiben von TCP-Nutzlasten in Serverantworten. Zum Beispiel SERVER.TCP.PAYLOAD(1000).B64DECODE.BETWEEN(“string1”,”string2”).

Bewerten Sie eine Rewrite-Aktion mithilfe des Dialogfelds Aktions-Evaluator umschreiben

  1. Wählen Sie im Detailbereich Aktionen umschreiben die Rewrite-Aktion aus, die Sie auswerten möchten, und klicken Sie dann auf Auswerten.
  2. Geben Sie im Dialogfeld Expression Evaluator umschreiben Werte für die folgenden Parameter an. (Ein Sternchen gibt einen erforderlichen Parameter an.)

    Rewrite Action (Rewrite Action) — Wenn die neu zu bewertende Aktion noch nicht ausgewählt ist, wählen Sie sie aus der Dropdownliste aus. Nachdem Sie eine Aktion “Umschreiben” ausgewählt haben, werden im Abschnitt Details die Details der ausgewählten Aktion “Umschreiben” angezeigt. Neu — Wählen Sie Neu aus, um das Dialogfeld “Rewrite-Aktion erstellen” zu öffnen und eine Neuschreibaktion zu erstellen. Ändern — Wählen Sie Ändern aus, um das Dialogfeld “Rewrite-Aktion konfigurieren” zu öffnen und die ausgewählte Neuschreibaktion zu ändern. Flow-Typ — Gibt an, ob die ausgewählte Rewrite-Aktion mit HTTP-Anforderungsdaten oder HTTP-Antwortdaten getestet werden soll. Der Standardwert ist Request. Wenn Sie mit Antwortdaten testen möchten, wählen Sie Antwort aus. HTTP-Anforderung/Antwortdaten* — Dient zur Bereitstellung der HTTP-Daten, die der Rewrite Action Evaluator zum Testen verwendet wird. Sie können die Daten direkt in das Fenster einfügen oder auf Sample klicken, um einige Beispiel-HTTP-Header einzufügen. Zeilenende anzeigen — Gibt an, ob End-of-Line-Zeichen (\ n) im Unix-Stil am Ende jeder Zeile von HTTP-Beispieldaten angezeigt werden sollen. Beispiel — Fügt Beispiel-HTTP-Daten in das Fenster “HTTP-Request/Response Data” ein. Sie können entweder GET- oder POST-Daten wählen. Durchsuchen — Öffnet ein lokales Suchfenster, in dem Sie eine Datei mit Beispiel-HTTP-Daten von einem lokalen oder Netzwerkspeicherort auswählen können. Clear—Löscht die aktuellen Beispiel-HTTP-Daten aus dem Fenster “HTTP-Request/Response Data”.

  3. Klicken Sie auf Bewerten. Der Auswertungsprogramm “Aktion umschreiben “ wertet die Auswirkung der Aktion “Umschreiben” auf die ausgewählten Beispieldaten aus und zeigt die Ergebnisse an, die durch die ausgewählte Aktion “ Umschreiben “ im Fenster Ergebnisse geändert wurden. Hinzufügungen und Löschungen werden wie in der Legende in der unteren linken Ecke des Dialogfelds angegeben hervorgehoben.
  4. Evaluieren Sie Rewrite-Aktionen weiter, bis Sie festgestellt haben, dass alle Ihre Aktionen die gewünschte Wirkung haben.

    • Sie können die ausgewählte Rewrite-Aktion ändern und die geänderte Version testen, indem Sie auf Ändern klicken, um das Dialogfeld Rewrite-Aktion konfigurieren zu öffnen, Ihre Änderungen vorzunehmen und zu speichern, und dann erneut auf Auswerten klicken.
    • Sie können eine andere Umschreibaktion mit denselben Anforderungs- oder Antwortdaten auswerten, indem Sie sie in der Dropdownliste Aktion neu schreiben auswählen und dann erneut auf Auswerten klicken.
  5. Klicken Sie auf Schließen, um das Auswertungsprogramm Expression umschreiben zu schließen und zum Bereich Aktionen umschreiben zurückzukehren.

  6. Um eine Rewrite-Aktion zu löschen, wählen Sie die Rewrite-Aktion aus, die Sie löschen möchten, klicken Sie dann auf Entfernen und bestätigen Sie bei Aufforderung Ihre Auswahl, indem Sie auf OK klicken. Bewerten Sie eine Rewrite-Aktion