All Products
Search
Document Center

Edge Security Acceleration:Fungsi

Last Updated:Feb 13, 2026

ESA rule menyediakan fungsi untuk mengoperasikan dan memvalidasi nilai dalam ekspresi. Fungsi-fungsi ini mencakup fungsi transformasi yang beroperasi pada nilai yang diambil dari permintaan HTTP.

Fungsi transformasi yang didukung oleh rule

concat

Menggabungkan string.

  • Format: concat(String | Integer | Bytes | Array elements):String.

  • Logika: Menerima daftar nilai yang dipisahkan koma dan menggabungkannya menjadi satu string.

  • Contoh:

    • concat("String1"," ","String",2) mengembalikan "String1 String2".

    • concat("/archive",http.request.uri.path) menambahkan segmen path "/archive" ke path URI.

    • concat("userid=123&",http.request.uri.query) menambahkan pasangan kunci-nilai "userid=123" ke string kueri URI.

    • concat("https://www.example.com",http.request.uri.path) menggabungkan hostname baru dengan path permintaan asli untuk menghasilkan URL baru.

ends_with

String berakhir di sini.

  • Format: ends_with(source String,substring String):Boolean.

  • Logika:

    • Mengembalikan true jika source String diakhiri oleh substring String. Jika tidak, mengembalikan false.

    • source String harus berupa field. Nilai tersebut tidak boleh berupa string literal. Misalnya, jangan 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 menjadi huruf kecil.

  • Format: lower(String):String

  • Logika: Mengonversi output string dari suatu field menjadi huruf kecil. Hanya karakter ASCII huruf besar yang dikonversi. Semua karakter lain tetap tidak berubah.

  • Contoh: Jika http.host adalah "WWW.example.com", maka lower(http.host)=="www.example.com" mengembalikan true.

regex_replace

Mengganti substring yang sesuai dengan pola ekspresi reguler.

  • Format: regex_replace(source String,regular_expression String,replacement String):String.

  • Logika pemrosesan:

    • Mengganti kemunculan pertama substring yang sesuai dengan ekspresi reguler menggunakan string pengganti, lalu mengembalikan hasilnya.

    • Secara default, pencocokan bersifat case-sensitive.

    • Hanya kecocokan pertama yang diganti, meskipun terdapat beberapa kecocokan dalam string sumber.

    • Anda dapat melakukan escape karakter $ dalam string pengganti dengan menambahkan karakter $ lain di depannya.

    • String pengganti dapat berisi referensi ke capturing group ekspresi reguler menggunakan format ${<NUMBER>}, di mana <NUMBER> adalah nomor capturing group tersebut. Maksimal delapan referensi semacam ini didukung, seperti ${1} dan ${2}.

  • Contoh:

    • Pencocokan dan penggantian karakter statis:

      • Pencocokan string berhasil: regex_replace("/animal/cat","/cat$","/dog")=="/animal/dog".

      • Jika tidak ditemukan kecocokan, string sumber tetap tidak berubah:

        • String berbeda: regex_replace("/x","^/y$","/z")=="/x".

        • String case-sensitive: regex_replace("/cat","^/CAT$","/dog")=="/cat".

      • Ketika terdapat beberapa kecocokan, hanya yang pertama yang diganti: regex_replace("/a/a","/a","/b")=="/b/a".

      • Melakukan escape karakter $ dalam string pengganti: regex_replace("/b","^/b$","/b$$")=="/b$".

      • Menggunakan capturing group dalam string pengganti: regex_replace("/foo/a/path","^/foo/([^/]*)/(.*)$","/bar/${2}/${1}")=="/bar/path/a".

    • Pencocokan dan penggantian field dinamis:

      • String sumber menggunakan field dinamis untuk mengambil informasi path dari permintaan client. Contoh ini mengganti /cat/ dalam path dengan /dog/: regex_replace(http.request.uri.path,"/cat/(.*)$","/dog/${1}").

      • Contoh penggantian kompleks: Mengganti setiap karakter + dalam path permintaan asli dengan string %2B: regex_replace(http.request.uri.path, "^([^+]*)\\+([^+]*)\\+(.*)$", "${1}%2B${2}%2B${3}").

starts_with

Dimulai dengan

  • Format: starts_with(source String,substring String):Boolean

  • Logika:

    • Mengembalikan true jika source String diawali oleh substring String. Jika tidak, mengembalikan false.

    • source String harus berupa field. Nilai tersebut tidak boleh berupa string literal. Misalnya, jangan menulis starts_with("foo.html",".html").

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

to_string

String keluaran.

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

  • Logika: Mengembalikan representasi string dari nilai Integer, Boolean, atau alamat IP.

  • 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 menjadi huruf besar.

  • Format: upper(String):String.

  • Logika: Mengonversi output string dari suatu field menjadi huruf besar. Hanya karakter ASCII huruf kecil yang dikonversi. Semua byte lain tetap tidak berubah.

  • Contoh: Jika http.host adalah "www.example.com", maka upper(http.host) mengembalikan "WWW.EXAMPLE.COM".

wildcard_replace

Pencocokan string menggunakan karakter wildcard.

  • Format: wildcard_replace(source Bytes,wildcard_pattern Bytes,replacement Bytes,flags Bytes optional):String

  • Logika:

    • Mencocokkan string sumber terhadap pola yang berisi nol atau lebih karakter wildcard *. Fungsi ini mengganti bagian yang cocok dengan string pengganti dan mengembalikan hasilnya. String pengganti dapat berisi referensi ke capturing group wildcard, seperti ${1} dan ${2}. Maksimal delapan referensi pengganti didukung.

    • Jika tidak ada kecocokan, fungsi mengembalikan string sumber asli.

    • Parameter source harus berupa field, bukan string literal. Selain itu, seluruh nilai `source` harus cocok dengan parameter `wildcard_pattern`. Fungsi ini tidak dapat mencocokkan hanya sebagian dari nilai field.

    • Untuk memasukkan karakter literal * dalam parameter wildcard_pattern, Anda harus melakukan escape-nya dengan \*. Anda juga harus melakukan escape karakter \ dengan \\. Dua karakter * yang tidak di-escape secara berurutan, seperti **, tidak valid dan tidak dapat digunakan. Untuk melakukan escape karakter, gunakan sintaks raw string untuk parameter wildcard_pattern.

    • Untuk memasukkan karakter literal $ dalam parameter replacement, Anda harus melakukan escape-nya dengan $$.

    • Untuk melakukan pencocokan wildcard case-sensitive, atur parameter flags ke s.

    • Fungsi ini menggunakan lazy matching. Setiap metakarakter * mencocokkan 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. Nilainya tidak berubah karena ekspresi wildcard tidak cocok dengan URI lengkap. Gunakan 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 bersifat case-insensitive secara default.

    • Jika path URI adalah /Apps/calendar, ekspresi wildcard_replace(http.request.uri.path,"/apps/*","/${1}","s") mengembalikan /Apps/calendar. Parameter flags diatur ke s untuk mengaktifkan pencocokan case-sensitive. Karena pola tidak cocok dengan path URI asli, 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.