Ekspresi aturan menggunakan comparison operators untuk mencocokkan nilai permintaan dan logical operators untuk menggabungkan kondisi.
Comparison operators
Comparison operators membandingkan nilai permintaan masuk dengan nilai yang ditentukan dalam suatu ekspresi.
contains
Memeriksa apakah nilai permintaan berisi string yang ditentukan.
Nama operator:
ContainsJenis nilai:
StringContoh:
(http.host contains "example.com")
ends_with
Memeriksa apakah nilai permintaan diakhiri dengan string yang ditentukan.
Nama operator:
Ends withJenis nilai:
StringContoh:
(ends_with(http.host, "cn"))
eq
Memeriksa apakah nilai permintaan sama dengan nilai yang ditentukan.
Nama operator:
Equal toJenis nilai:
StringContoh:
(http.host eq "www.example.com")
exists
Memeriksa apakah bidang atau atribut tertentu ada dalam permintaan.
Nama operator:
ExistsJenis nilai:
StringContoh:
(exists(http.request.headers["user-agent"]))
ge
Memeriksa apakah nilai permintaan lebih besar dari atau sama dengan nilai numerik yang ditentukan.
Nama operator:
Greater than or equal toJenis nilai:
intContoh:
(ip.geoip.asnum ge 45104)
gt
Memeriksa apakah nilai permintaan lebih besar dari nilai numerik yang ditentukan.
Nama operator:
Greater thanJenis nilai:
intContoh:
(ip.geoip.asnum gt 45104)
in
Memeriksa apakah nilai permintaan cocok dengan salah satu nilai dalam himpunan yang ditentukan. Gunakan simbol $ untuk mereferensikan daftar.
Nama operator:
Is inJenis nilai:
ArrayContoh:
(http.host in {"www.example.com" "blog.example.com"})(ip.src in $<LIST_NAME>)
le
Memeriksa apakah nilai permintaan kurang dari atau sama dengan nilai numerik yang ditentukan.
Nama operator:
Less than or equal toJenis nilai:
intContoh:
(ip.geoip.asnum le 45104)
len eq
Memeriksa apakah panjang nilai permintaan sama dengan nilai numerik yang ditentukan.
Nama operator:
Length equalsJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) eq 330688)
len gt
Memeriksa apakah panjang nilai permintaan lebih besar dari nilai numerik yang ditentukan.
Nama operator:
Length is greater thanJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) gt 330688)
len lt
Memeriksa apakah panjang nilai permintaan kurang dari nilai numerik yang ditentukan.
Nama operator:
Length is less thanJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) lt 330688)
lt
Memeriksa apakah nilai permintaan kurang dari nilai numerik yang ditentukan.
Nama operator:
Less thanJenis nilai:
intContoh:
(ip.geoip.asnum lt 45104)
matches
Memeriksa apakah nilai permintaan cocok dengan ekspresi reguler yang ditentukan (kompatibel PCRE).
Hanya paket Premium dan Enterprise yang mendukung ekspresi reguler.
Nama operator:
Matches regexJenis nilai:
StringContoh:
(http.host matches "(www|blog)\.example\.com")
ne
Memeriksa apakah nilai permintaan tidak sama dengan nilai yang ditentukan.
Nama operator:
Not equal toJenis nilai:
StringContoh:
(http.host ne "www.example.com")
not ends_with
Memeriksa apakah nilai permintaan tidak diakhiri dengan string yang ditentukan.
Nama operator:
Does not end withJenis nilai:
StringContoh:
(not ends_with(http.host, "cn"))
not exists
Memeriksa apakah bidang atau atribut tertentu tidak ada dalam permintaan.
Nama operator:
Does not existJenis nilai:
StringContoh:
(not exists(http.request.headers["user-agent"]))
not starts_with
Memeriksa apakah nilai permintaan tidak diawali dengan string yang ditentukan.
Nama operator:
Does not start withJenis nilai:
StringContoh:
(not starts_with(http.host, "blog"))
not...contains
Memeriksa apakah nilai permintaan tidak berisi string yang ditentukan.
Nama operator:
Does not containJenis nilai:
StringContoh:
(not http.host contains "example.com")
not...in
Memeriksa apakah nilai permintaan tidak cocok dengan nilai apa pun dalam himpunan yang ditentukan. Gunakan simbol $ untuk mereferensikan daftar.
Nama operator:
Is not inJenis nilai:
ArrayContoh:
(not http.host in {"www.example.com" "blog.example.com"})(not ip.src in $<LIST_NAME>)
not...matches
Memeriksa apakah nilai permintaan tidak cocok dengan ekspresi reguler yang ditentukan (kompatibel PCRE).
Hanya paket Premium dan Enterprise yang mendukung ekspresi reguler.
Nama operator:
Does not match regexJenis nilai:
StringContoh:
(not http.host matches "(www|blog)\.example\.com")
percent
Menyaring permintaan berdasarkan bidang dan nilai persentase yang ditentukan.
Nama operator:
PercentageJenis nilai:
IntRentang nilai: 1 hingga 100
Jika nilai bidang kosong (misalnya, permintaan tidak menyertakan header yang ditentukan), aturan tidak berlaku, dan hasil pencocokan adalah false.
Bidang yang didukung:
Header:
http.request.headers["example"]IP klien:
ip.srcString kueri URI:
http.request.uri.args["example"]Timestamp permintaan:
http.request.timestamp.sec
Contoh:
percent(http.request.headers["example"],80)percent(ip.src,80)percent(http.request.cookies["example"],80)percent(http.request.args["example"],80)percent(http.request.timestamp.sec,80)
starts_with
Memeriksa apakah nilai permintaan diawali dengan string yang ditentukan.
Nama operator:
Starts withJenis nilai:
StringContoh:
(starts_with(http.host, "blog"))
Other operators
lower
Mengonversi nilai permintaan menjadi huruf kecil untuk pencocokan tanpa membedakan huruf besar/kecil.
Nama operator:
Case-insensitiveJenis nilai:
StringContoh:
(lower(http.request.uri))
Logical operators
Logical operators menggabungkan beberapa ekspresi menjadi ekspresi komposit.
and
Mengembalikan true hanya jika semua ekspresi yang digabungkan bernilai true.
Nama operator:
Logical ANDContoh:
((http.host eq "www.example.com") and (ip.geoip.country eq "CN"))
not
Membalikkan hasil ekspresi, mengubah true menjadi false dan sebaliknya.
Nama operator:
Logical NOTContoh:
not (http.host eq "www.example.com")
or
Mengembalikan true jika salah satu ekspresi yang digabungkan bernilai true.
Nama operator:
Logical ORContoh:
((http.host eq "www.example.com") or (ip.geoip.country eq "CN"))
Grouping symbols
Gunakan tanda kurung ( dan ) untuk mengelompokkan bagian ekspresi dan mengontrol urutan evaluasi.
Simbol pengelompokan didukung di editor ekspresi dan API ESA, tetapi tidak didukung di pembuat ekspresi.
Contoh ekspresi bersarang:
(http.host eq "www.example.com" and ((http.referer in {"download.example.com"}) or (http.referer in {"image.example.com"})))