ESA bahasa aturan menyediakan fungsi untuk melakukan operasi dan memverifikasi nilai dalam ekspresi, termasuk fungsi manipulasi. Fungsi manipulasi digunakan untuk mengoperasikan nilai yang diekstraksi dari permintaan HTTP.
Fungsi manipulasi yang didukung oleh bahasa aturan
concat
Menggabungkan string.
Format:
concat(String | Integer | Bytes | Array elements):String.Logika pemrosesan: Fungsi ini menggabungkan semua nilai parameter yang dipisahkan dengan koma (,) menjadi satu string.
Contoh:
concat("String1"," ","String",2): mengembalikan"String1 String2".concat("/archive", http.request.uri.path): menyisipkan path baru"/archive"sebelum Uniform Resource Identifier (URI) path.concat("userid=123&", http.request.uri.query): menyisipkan pasangan key-value baru"userid=123"sebelum string query URI.concat("https://www.example.com", http.request.uri.path): menggabungkan hostname baru dengan path dalam permintaan asli untuk menghasilkan Uniform Resource Locator (URL) baru.
ends_with
Memeriksa apakah sebuah string diakhiri dengan substring tertentu.
Format:
ends_with(source String,substring String):Boolean.Logika pemrosesan:
Mengembalikan
truejikasource Stringdiakhiri dengansubstring String. Jika tidak, mengembalikanfalse.source Stringharus berupa field, bukan string tetap. Sebagai contoh, Anda tidak dapat menulisends_with("foo.html",".html").
Contoh: Jika
http.request.uri.pathadalah"/welcome.html", makaends_with(http.request.uri.path,".html")mengembalikantrue.
lower
Mengonversi string ke huruf kecil.
Format:
lower(String):String.Logika pemrosesan: Mengonversi string output dari sebuah field menjadi huruf kecil. Hanya karakter ASCII huruf besar yang dikonversi. Karakter lainnya tetap tidak berubah.
Contoh: Jika
http.hostadalah"WWW.example.com", makalower(http.host)=="www.example.com"mengembalikantrue.
regex_replace
Melakukan penggantian berdasarkan ekspresi reguler.
Format:
regex_replace(source String,regular_expression String,replacement String):String.Logika pemrosesan: Mengganti bagian dari string sumber yang cocok dengan ekspresi reguler menggunakan string pengganti dan mengembalikan hasilnya. String pengganti dapat mencakup referensi ke grup penangkap dalam ekspresi reguler, seperti
${1}dan${2}. Maksimal delapan referensi penggantian didukung.Contoh:
Pencocokan karakter dan penggantian:
regex_replace("/animal/cat","/cat$","/dog")=="/animal/dog".Jika tidak ada karakter yang cocok, string sumber tetap tidak berubah:
regex_replace("/x","^/y$","/z")=="/x".Secara default, pencocokan peka huruf besar-kecil berlaku:
regex_replace("/cat","^/CAT$","/dog")=="/cat".Ketika beberapa item yang cocok ditemukan, hanya item pertama yang cocok yang diganti:
regex_replace("/a/a","/a","/b")=="/b/a".Anda dapat meloloskan simbol $ dalam string pengganti dengan menambahkan simbol
$lain sebelumnya:regex_replace("/b","^/b$","/b$$")=="/b$".Mengganti karakter dengan grup penangkap:
regex_replace("/foo/a/path","^/foo/([^/]*)/(.*)$","/bar/${2}/${1}")=="/bar/path/a".Grup penangkap dibuat dengan mengurung bagian dari ekspresi reguler dalam tanda kurung. Kemudian, gunakan
${<NUMBER>}dalam string pengganti untuk merujuk ke grup penangkap, di mana<NUMBER>adalah nomor grup penangkap.
starts_with
Memeriksa apakah sebuah string dimulai dengan substring tertentu.
Format:
starts_with(source String,substring String):Boolean.Logika pemrosesan:
Mengembalikan
truejikasource Stringdimulai dengansubstring String. Jika tidak, mengembalikanfalse.source Stringharus berupa field, bukan string tetap. Sebagai contoh, Anda tidak dapat menulisstarts_with("foo.html",".html").
Contoh: Jika
http.request.uri.pathadalah"/welcome.html", makastarts_with(http.request.uri.path, "/")mengembalikantrue.
to_string
Mengonversi nilai ke string.
Format:
to_string(Integer | Boolean | IP address):String.Logika pemrosesan: Mengembalikan nilai
Integer,Boolean, atauIPaddress sebagai string.Contoh:
Jika hasil dari
ip.src.asnumadalah15169, makato_string(ip.src.asnum)mengembalikan"15169".Jika hasil dari
ssladalahtrue, makato_string(ssl)mengembalikan"true".Jika hasil dari
ip.srcadalah192.168.0.1, makato_string(ip.src)mengembalikan"192.168.0.1".
upper
Mengonversi string ke huruf besar.
Format:
upper(String):String.Logika pemrosesan: Mengonversi string output dari sebuah field menjadi huruf besar. Hanya karakter ASCII huruf kecil yang dikonversi. Karakter lainnya tetap tidak berubah.
Contoh: Jika
http.hostadalah"www.example.com", makaupper(http.host)mengembalikan"WWW.EXAMPLE.COM".
wildcard_replace
Memadankan string berdasarkan wildcard.
Format:
wildcard_replace(source Bytes,wildcard_pattern Bytes,replacement Bytes,flags Bytes optional):String.Logika pemrosesan:
Mengganti teks karakter sumber dari nol atau lebih wildcard asterisk (*) dengan string pengganti, lalu mengembalikan hasilnya. String pengganti dapat mencakup referensi ke grup penangkap wildcard, seperti:
${1}dan${2}. Maksimal delapan referensi penggantian didukung.Jika tidak ada karakter yang cocok, konten asli dari string sumber dikembalikan.
Parameter sumber harus berupa field, bukan string teks. Selain itu, seluruh nilai sumber harus cocok dengan parameter
wildcard_pattern, bukan hanya sebagian dari nilai field.Untuk memasukkan karakter literal
*dalam parameterwildcard_pattern, Anda harus meloloskannya dengan\*. Anda juga harus meloloskan\dengan\\. Dua karakter*yang tidak diloloskan berturut-turut**dalam parameter ini dianggap tidak valid dan tidak dapat digunakan. Jika pelolosan karakter diperlukan, kami merekomendasikan menggunakan sintaks string mentah untuk parameterwildcard_pattern.Untuk memasukkan karakter literal
$dalam parameterreplacement, Anda harus meloloskannya dengan$$.Untuk melakukan pencocokan wildcard peka huruf besar-kecil, atur parameter
flagskes.Fungsi ini menggunakan pencocokan tertunda untuk mencoba mencocokkan setiap * metacharacter dengan string terpendek yang mungkin.
Contoh:
Jika URI lengkap adalah
https://apps.example.com/calendar/admin?expand=true, ekspresiwildcard_replace(http.request.full_uri,"https://*.example.com/*/*","https://example.com/${1}/${2}/${3}")mengembalikanhttps://example.com/apps/calendar/admin?expand=true.Jika URI lengkap adalah
https://example.com/applications/app1, ekspresiwildcard_replace(http.request.full_uri,"/applications/*","/apps/${1}")mengembalikanhttps://example.com/applications/app1. Nilai tetap tidak berubah karena ekspresi wildcard tidak cocok dengan URI lengkap. Anda harus menggunakan fieldhttp.request.uri.pathuntuk pencocokan path URI.Jika path URI adalah
/calendar, ekspresiwildcard_replace(http.request.uri.path,"/*","/apps/${1}")mengembalikan/apps/calendar.Jika path URI adalah
/Apps/calendar, ekspresiwildcard_replace(http.request.uri.path,"/apps/*","/${1}")mengembalikan/calendar. Pencocokan tidak peka huruf besar-kecil berlaku secara default.Jika path URI adalah
/Apps/calendar, ekspresiwildcard_replace(http.request.uri.path,"/apps/*","/${1}","s")mengembalikan/Apps/calendar. Ekspresi tersebut mencakup parameterflagsdengan nilais, yang menunjukkan bahwa pencocokan peka huruf besar-kecil diaktifkan. Dalam mode ini, ekspresi wildcard tidak cocok dengan path URI asli. Oleh karena itu, hasilnya tetap tidak berubah.Jika path URI adalah
/apps/calendar/login, ekspresiwildcard_replace(http.request.uri.path,"/apps/*/login","/${1}/login")mengembalikan/calendar/login.