全部产品
Search
文档中心

Edge Security Acceleration:Fungsi

更新时间:Jul 02, 2025

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 true jika source String diakhiri dengan substring String. Jika tidak, mengembalikan false.

    • source String harus berupa field, bukan string tetap. Sebagai contoh, Anda tidak dapat menulis ends_with("foo.html",".html").

  • Contoh: Jika http.request.uri.path adalah "/welcome.html", maka ends_with(http.request.uri.path,".html") mengembalikan true.

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.host adalah "WWW.example.com", maka lower(http.host)=="www.example.com" mengembalikan true.

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 true jika source String dimulai dengan substring String. Jika tidak, mengembalikan false.

    • source String harus berupa field, bukan string tetap. Sebagai contoh, Anda tidak dapat menulis starts_with("foo.html",".html").

  • Contoh: Jika http.request.uri.path adalah "/welcome.html", maka starts_with(http.request.uri.path, "/") mengembalikan true.

to_string

Mengonversi nilai ke string.

  • Format: to_string(Integer | Boolean | IP address):String.

  • Logika pemrosesan: Mengembalikan nilai Integer, Boolean, atau IP address sebagai string.

  • Contoh:

    • Jika hasil dari ip.src.asnum adalah 15169, maka to_string(ip.src.asnum) mengembalikan "15169".

    • Jika hasil dari ssl adalah true, maka to_string(ssl) mengembalikan "true".

    • Jika hasil dari ip.src adalah 192.168.0.1, maka to_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.host adalah "www.example.com", maka upper(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 parameter wildcard_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 parameter wildcard_pattern.

    • Untuk memasukkan karakter literal $ dalam parameter replacement, Anda harus meloloskannya dengan $$.

    • Untuk melakukan pencocokan wildcard peka huruf besar-kecil, atur parameter flags ke s.

    • 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, ekspresi wildcard_replace(http.request.full_uri,"https://*.example.com/*/*","https://example.com/${1}/${2}/${3}") mengembalikan https://example.com/apps/calendar/admin?expand=true.

    • Jika URI lengkap adalah https://example.com/applications/app1, ekspresi wildcard_replace(http.request.full_uri,"/applications/*","/apps/${1}") mengembalikan https://example.com/applications/app1. Nilai tetap tidak berubah karena ekspresi wildcard tidak cocok dengan URI lengkap. Anda harus menggunakan field http.request.uri.path untuk pencocokan path URI.

    • Jika path URI adalah /calendar, ekspresi wildcard_replace(http.request.uri.path,"/*","/apps/${1}") mengembalikan /apps/calendar.

    • Jika path URI adalah /Apps/calendar, ekspresi wildcard_replace(http.request.uri.path,"/apps/*","/${1}") mengembalikan /calendar. Pencocokan tidak peka huruf besar-kecil berlaku secara default.

    • Jika path URI adalah /Apps/calendar, ekspresi wildcard_replace(http.request.uri.path,"/apps/*","/${1}","s") mengembalikan /Apps/calendar. Ekspresi tersebut mencakup parameter flags dengan nilai s, 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, ekspresi wildcard_replace(http.request.uri.path,"/apps/*/login","/${1}/login") mengembalikan /calendar/login.