Extension:AbuseFilter/Kural biçimi
Kurallar özel bir dildir. C/Java/Perl benzeri bir dildeki koşullara benzer şekilde biçimlendirilirler.
Dizeler
Tek veya çift tırnak içine yerleştirerek (dizeler için) veya olduğu gibi yazarak (sayılar için hem kayan nokta hem de tamsayı) bir değişmez belirtebilirsiniz.
\n
ile satır sonu, \t
ile sekme karakterleri alabilir ve ayrıca bir ters eğik çizgi ile tırnak karakterinden kaçabilirsiniz.
+
(artı) sembolünü birleştirme iki değişmez dize veya bir dizeyle iki değişken için kullanın.
- Örnekler
"Bu bir dize"
'Buda bir dize'
'Bu dize başarısız olmamalıdır'
"Bu dize\nSatır atlama var"
1234
1.234
-123
Kullanıcı tanımlı değişkenler
Bir koşul içinde bir satırda (;
ile kapatılmış) :=
atama simgesiyle anlaşılması kolay olacak özel değişkenler tanımlayabilirsiniz.
Bu tür değişkenler harf, alt çizgi ve sayı (ilk karakter dışında) kullanabilir ve büyük/küçük harfe duyarlı değildir.
Örnek (w:Special:AbuseFilter/79):
(
line1:="(\{\{(r|R)eflist|\{\{(r|R)efs|<references\s?/>|</references\s?>)";
rcount(line1, removed_lines)
) > (
rcount(line1, added_lines)
)
Diziler
AbuseFilter, aşağıdaki örneklerde olduğu gibi kullanılabilen ilişkisel olmayan dizileri destekler.
Dikkat: | page_namespace in [14, 15] gibi ifadeler beklendiği gibi çalışmayabilir. Bu, page_namespace , 1, 4 veya 5 ise true olarak değerlendirilecektir. Daha fazla bilgi ve olası geçici çözümler için lütfen T181024 sayfasına bakın. |
my_array := [ 5, 6, 7, 10 ];
my_array[0] == 5
length(my_array) == 4
int( my_array ) === 4 // Uzunlukla aynı
float( my_array ) === 4.0 // Öğeleri sayar
string(my_array) == "5\n6\n7\n10\n" // Not: Son satır sonu gelecekte kaldırılabilir
5 in my_array == true
'5' in my_array == true
'5\n6' in my_array == true // Not: Bu, dizilerin dizeye nasıl dönüştürüldüğünden, yani onları satır kesmeleriyle doldurduğundan kaynaklanmaktadır.
1 in my_array == true // Not: Bu, 'in' dizgelerine argümanlar attığı için, 1 '10' da yakalandığı ve true döndürdüğü için olur.
my_array[] := 57; // Bu, dizinin sonuna bir öğe ekler
my_array === [ 5, 6, 7, 10, 57 ]
my_array[2] := 42; // Ve bu, dizideki bir öğeyi değiştirmek içindir
my_array === [ 5, 6, 42, 10, 57 ]
Yorumlar
Aşağıdaki sözdizimini kullanarak yorumları belirtebilirsiniz:
/* Bu bir yorum */
Aritmetik
Aşağıdaki sözdizimi ile değişkenler ve değişmezler üzerinde aritmetik yapmak için temel aritmetik sembolleri kullanabilirsiniz:
-
– Sağ-el işleneni sol-el işlenenden çıkar.+
– Sağ-el işleneni sol-el işlenene ekleyin.*
– Sol el operandını sağ taraf operandıyla çarpın./
– Soldaki işleneni sağ el işlenene bölün.**
– Sol-el işleneni sağ-el işleneni tarafından belirtilen üssel kuvvete yükseltin.%
– Soldaki işlenen sağ taraftaki işlenene bölündüğünde verilen kalanı döndür.
Döndürülen sonucun türü, PHP tarafından döndürülecek olanla aynıdır ve bunun için birçok belge çevrimiçi bulunabilir. Bu AF ayrıştırıcı testinde daha kapsamlı örnekler bulunabilir.
Örnek | Sonuç |
---|---|
1 + 1 |
2 |
2 * 2 |
4 |
1 / 2 |
0.5 |
9 ** 2 |
81 |
6 % 5 |
1 |
Boole işletmeleri
Sadece ve ancak birkaç koşulun tümü true ise, birkaç koşuldan biri true ise veya tüm koşullardan biri ve yalnızca biri true ise eşleşebilirsiniz.
x | y
— OR – koşullardan biri veya daha fazlası true ise true döndürür.x & y
— AND – her iki koşul da true ise true döndürür.x ^ y
— XOR – biri true ise ve iki koşuldan yalnızca biri true ise true döndürür.!x
— NOT – koşul true değilse true döndürür.
Örnekler
Kod | Sonuç |
---|---|
1 | 1
|
true |
1 | 0
|
true |
0 | 0
|
false |
1 & 1
|
true |
1 & 0
|
false |
0 & 0
|
false |
1 ^ 1
|
false |
1 ^ 0
|
true |
0 ^ 0
|
false |
!1
|
false |
!0
|
true |
Basit karşılaştırmalar
Değişkenleri diğer değişkenlerle ve değişmezleri aşağıdaki sözdizimi ile karşılaştırabilirsiniz:
<
,>
– * $1 — Sol el işlenen sağ taraftaki işlenenden küçük/büyükse true döndür. Dikkat edin: işlenenler dizelere dönüştürülür ve PHP'de olduğu gibinull < herhangi bir sayı === true
venull > herhangi bir sayı === false
olur.<=
,>=
– * $1 — Sol taraftaki işlenen, sağ taraftaki işlenenden küçük veya ona eşit/büyük ise true döndürür. Dikkat edin: işlenenler dizelere dönüştürülür ve PHP'de olduğu gibinull <= herhangi bir sayı === true
venull >= herhangi bir sayı $4 === false
.==
(veya=
),!=
— Soldaki işlenen, sırasıyla sağdaki işlenen eşit/eşit değil ise true döndürür.===
,!==
– * $1 — Soldaki işlenen, sağ el işlenene eşit/eşit değil ise VE sol el işlenen, sağ el işleneni için sırasıyla aynı/aynı değil veri türündeyse true döndür.
Örnek | Sonuç |
---|---|
1 == 2 |
false |
1 <= 2 |
true |
1 >= 2 |
false |
1 != 2 |
true |
1 < 2 |
true |
1 > 2 |
false |
2 = 2 |
true |
'' == false |
true |
'' === false |
false |
1 == true |
true |
1 === true |
false |
['1','2','3'] == ['1','2','3'] |
true |
[1,2,3] === [1,2,3] |
true |
['1','2','3'] == [1,2,3] |
true |
['1','2','3'] === [1,2,3] |
false |
[1,1,''] == [true, true, false] |
true |
[] == false & [] == null |
true |
['1'] == '1' |
false[1] |
Yerleşik değişkenler
Kötüye kullanım filtresi, çeşitli değişkenleri adlarına göre ayrıştırıcıya aktarır. Bu değişkenlere, harflerin çalışacağı bir yere isimlerini yazarak erişilebilir. Kötüye kullanım günlüğünde her bir taleple ilişkili değişkenleri görüntüleyebilirsiniz.
AbuseFilter'deki değişkenler
Değişkenler her zaman kullanılabilir
Dikkat: | Kullanıcıyla ilgili değişkenler, tek bir durum dışında her zaman mevcuttur: oluşturucu oturum açamadığında hesap oluşturma. user_ ile başlayan tüm değişkenler etkilenir. |
Açıklama | Ad | Veri türü | Notlar |
---|---|---|---|
Eylem | action |
dize | Aşağıdakilerden biri: edit, move, createaccount, autocreateaccount, delete, upload[2], stashupload[3] |
Unix zaman damgası | timestamp |
dize | int(timestamp) size tarihi, saati, haftanın gününü vb. hesaplayabileceğiniz bir sayı verir. |
Vikinin veritabanı adı | wiki_name |
dize | Örneğin, bu İngilizce Vikipedi'de "enwiki" ve İtalyanca Vikisöz'de "itwikiquote". |
Vikinin dil kodu | wiki_language |
dize | Örneğin, bu İngilizce Vikipedi'de "en" ve İtalyanca Vikisöz'de "it". Commons, Meta ve Vikiveri gibi çok dilli vikiler de "en" olarak raporlanır. |
Kullanıcının değişiklik sayısı | user_editcount |
tamsayı/boş | Yalnızca kayıtsız kullanıcılar için boş. |
Kullanıcı hesabının adı (IP in case the user is not registered) | user_name |
dize | "createaccount" ve "autocreateaccount" eylemleri için, oluşturulmakta olan hesabın adını istiyorsanız
accountname kullanın. |
Kullanıcı hesabının türü | user_type |
string | The type of the user, which will be one of ip , temp (if the user is using a temporary account ), named , external , or unknown .
|
E-posta adresinin doğrulanma zamanı | user_emailconfirm |
dize/boş | Biçimde: YYYYMMDDHHMMSS. E-posta onaylanmadıysa boş. |
Kullanıcı hesabının yaşı | user_age |
tamsayı | Saniyeler içinde. Kayıtlı olmayan kullanıcılar için 0. |
Kullanıcının engelli olup olmadığı | user_blocked |
boole | Engellenen kayıtlı kullanıcılar için True. Düzenleyici, engellenmemiş kayıtlı bir kullanıcı olsa bile, engellenen IP adreslerinden yapılan düzenlemeler için de geçerlidir. Aksi takdirde False. Bu, kısmi ve site genelindeki engeller arasında ayrım yapmaz.
|
Kullanıcının olduğu gruplar (içinde oldukları dahil) | user_groups |
dizi dizesi | Special:ListGroupRights sayfasına bakın |
Kullanıcının sahip olduğu haklar | user_rights |
dizi dizesi | Special:ListGroupRights sayfasına bakın |
Sayfa kimliği | article_articleid |
tamsayı | (kaldırıldı) Bunun yerine page_id kullanın.
|
Sayfa kimliği (kenar çubuğundaki "sayfa bilgileri" bağlantısından görülebilir) | page_id |
tamsayı | Teorik olarak bu, yeni sayfalar için 0'dır, ancak bu güvenilir değildir. Tam bir sonuca ihtiyacınız varsa, yeni sayfa oluşturmayı belirlemek için "page_age == 0" kullanın. (bunun daha yavaş olduğuna dikkat edin.) This issue has been fixed in 9369d08, merged on September 11th 2023. |
Sayfa ad alanı | article_namespace |
tamsayı | (kaldırıldı) Bunun yerine page_namespace kullanın.
|
Sayfa ad alanı | page_namespace |
tamsayı | ad alanı dizi ile ilgilidir "page_namespace == 2" veya "equals_to_any(page_namespace, 1, 3)" gibi ifadeler kullanarak ad alanlarını kontrol edin |
Sayfa yaşı (saniyelerle) | page_age |
tamsayı | ilk düzenlemeden bu yana geçen saniye sayısı (veya yeni sayfalar için 0). Bu güvenilirdir, ancak yavaş olma eğilimindedir; Çok fazla hassasiyete ihtiyacınız yoksa page_id kullanmayı düşünün.
|
Sayfa başlığı (ad alanı olmadan) | article_text |
dize | (kaldırıldı) Bunun yerine page_title kullanın.
|
Sayfa başlığı (ad alanı olmadan) | page_title |
dize | |
Tam sayfa başlığı | article_prefixedtext |
dize | (kaldırıldı) Bunun yerine page_prefixedtitle kullanın.
|
Tam sayfa başlığı | page_prefixedtitle |
dize | |
Sayfanın koruma düzeyini değiştir | article_restrictions_edit |
dize | (kaldırıldı) Bunun yerine page_restrictions_edit kullanın.
|
Sayfanın koruma düzeyini değiştir | page_restrictions_edit |
dizi dizesi | |
Sayfanın koruma düzeyini taşı | article_restrictions_move |
dize | (kaldırıldı) Bunun yerine page_restrictions_move kullanın.
|
Sayfanın koruma düzeyini taşı | page_restrictions_move |
dizi dizesi | |
Dosyanın korumasını yükle | article_restrictions_upload |
dize | (kaldırıldı) Bunun yerine page_restrictions_upload kullanın.
|
Dosyanın korumasını yükle | page_restrictions_upload |
dizi dizesi | |
Sayfayı koruma altına al | article_restrictions_create |
dize | (kaldırıldı) Bunun yerine page_restrictions_create kullanın.
|
Sayfayı koruma altına al | page_restrictions_create |
dizi dizesi | |
Sayfaya katkıda bulunan son on kullanıcı | article_recent_contributors |
array of strings | (kaldırıldı) Bunun yerine page_recent_contributors kullanın.
|
Sayfaya katkıda bulunan son on kullanıcı | page_recent_contributors |
dizi dizesi | Bu, yavaş olma eğilimindedir (#Performans bölümüne bakın). Sorguyu gereksiz yere çalıştırmamak için bundan önce yanlış olarak değerlendirilme olasılığı daha yüksek koşullar koymaya çalışın. Kullanıcı sayfaya tek katkıda bulunan kişi ise(?) ve yalnızca son 100 revizyonu tarıyorsa bu değer boştur |
Sayfada ilk katkıda bulunan kullanıcı | article_first_contributor |
dize | (kaldırıldı) Bunun yerine page_first_contributor kullanın.
|
Sayfada ilk katkıda bulunan kullanıcı | page_first_contributor |
dize | Bu, yavaş olma eğilimindedir (#Performans bölümüne bakın).[4] Sorguyu gereksiz yere çalıştırmamak için bundan önce yanlış olarak değerlendirilme olasılığı daha yüksek koşullar koymaya çalışın. |
Bazı eylemler için mevcut değişkenler
Açıklama | Ad | Veri türü | Notlar |
---|---|---|---|
Değişiklik özeti/sebebi | summary |
dize | MediaWiki tarafından otomatik olarak oluşturulan özetler ("Yeni bölüm", "Sayfayı boşalttı", vb.), filtre düzenlemeyi kontrol ettikten sonra oluşturulur, böylece hata ayıklayıcı olması gerektiğini gösterse bile, asla yakalayamazlar. The variable contains whatever the user sees in the edit summary window, which may include MediaWiki preloaded section titles.[5] |
minor_edit |
Devre dışı bırakıldı ve 2016 ile 2018 arasındaki tüm girişler için false olarak ayarlandı.[6] | ||
Eski sayfa vikimetin, düzenlemeden önce | old_wikitext |
dize | Bu değişken çok büyük olabilir. Performansı artırmak için mümkünse removed_lines kullanmayı düşünün.
|
Yeni sayfa vikimetin, düzenlemeden sonra | new_wikitext |
dize | Bu değişken çok büyük olabilir. Performansı artırmak için mümkünse added_lines kullanmayı düşünün.
|
Değişiklik tarafından yapılan değişikliklerin birleşik farkı | edit_diff |
dize | |
Düzenleme tarafından yapılan değişikliklerin birleştirilmiş fark, dönüştürülmüş ön-kaydet | edit_diff_pst |
dize | Bu, yavaş olma eğilimindedir (#Performans bölümüne bakın). Hem added_lines hem de removed_lines kontrol etmek muhtemelen daha etkilidir.[7]
|
Yeni sayfa boyutu | new_size |
tamsayı | |
Eski sayfa boyutu | old_size |
tamsayı | |
Değişiklikteki boyut değişimi | edit_delta |
tamsayı | |
Düzenlemeye eklenen satırlar, önceden kaydedilmiş dönüştürülmüş | added_lines_pst |
dizi dizesi | Mümkünse added_lines kullanın, bu daha etkilidir.
|
Değişiklikte eklenen satırlar | added_lines |
dizi dizesi | + ile başlayan son farktaki tüm satırları içerir |
Değişiklikte çıkarılan satırlar | removed_lines |
dizi dizesi | |
Yeni metindeki tüm dış bağlantılar | all_links |
dizi dizesi | This tends to be slow (see #Performance). |
Düzenlemeden önceki sayfadaki bağlantılar | old_links |
dizi dizesi | This tends to be slow (see #Performance). |
Değişiklikte eklenen tüm dış bağlantılar | added_links |
dizi dizesi | Bu, yavaş olma eğilimindedir (#Performans bölümüne bakın). Önce added_lines kontrol etmeyi düşünün, ardından daha az düzenlemenin yavaşlaması için added_links kontrol edin. Bu, MediaWiki'nin dış bağlantılar için kurallarına uygundur. Diziye yalnızca benzersiz bağlantılar eklenir. Bir bağlantının değiştirilmesi 1 eklenen ve 1 kaldırılan bağlantı olarak sayılacaktır.
|
Değişiklikte çıkarılan tüm dış bağlantılar | removed_links |
dizi dizesi | Bu, yavaş olma eğilimindedir (#Performans bölümüne bakın). Önce removed_lines kontrol etmeyi düşünün, ardından daha az düzenlemenin yavaşlaması için removed_links kontrol edin. Bu, MediaWiki'nin dış bağlantılar için kurallarına uygundur. Diziye yalnızca benzersiz bağlantılar eklenir. Bir bağlantının değiştirilmesi 1 eklenen ve 1 kaldırılan bağlantı olarak sayılacaktır.
|
Yeni sayfa vikimetni, ön kayıt dönüştürüldü | new_pst |
dize | This variable can be very large. |
Yeni revizyonun derlenmiş HTML kaynağı | new_html |
dize | Bu değişken çok büyük olabilir. Performansı artırmak için mümkünse added_lines kullanmayı düşünün.
|
Yeni sayfa metni, herhangi bir biçimlendirme olmadan | new_text |
dize | Bu değişken çok büyük olabilir. Performansı artırmak için mümkünse added_lines kullanmayı düşünün.
|
old_html |
Performans nedenleriyle devre dışı bırakıldı. | ||
old_text |
Performans nedenleriyle devre dışı bırakıldı. | ||
Son sayfa değişikliğinden beri geçen süre (saniye cinsinden) | page_last_edit_age |
integer or null |
null when the page does not exist
|
Dosya içeriklerinin SHA1 hash'i | file_sha1 |
dize | [2] |
Dosyanın bayt cinsinden boyutu | file_size |
tamsayı | Bayt cinsinden dosya boyutu[2] |
Dosyanın piksel cinsinden genişliği | file_width |
tamsayı | Piksel cinsinden genişlik[2] |
Dosyanın piksel cinsinden yüksekliği | file_height |
tamsayı | Piksel cinsinden yükseklik[2] |
Dosyanın renk kanalı başına bit | file_bits_per_channel |
tamsayı | Renk kanalı başına bit miktarı[2] |
Dosyanın MIME türü | file_mime |
dize | MIME türü dosyası.[2] |
Dosyanın medya türü | file_mediatype |
dize | Dosya ortam türü.[8][2] |
Hedef taşıma sayfasının sayfa limliği | moved_to_articleid |
tamsayı | (kaldırıldı) Bunun yerine moved_to_id kullanın.
|
Hedef taşıma sayfasının sayfa limliği | moved_to_id |
tamsayı | |
Hedef taşıma sayfasının başlığı | moved_to_text |
dize | (kaldırıldı) Bunun yerine moved_to_title kullanın.
|
Hedef taşıma sayfasının başlığı | moved_to_title |
dize | |
Hedef taşıma sayfasının tam başlığı | moved_to_prefixedtext |
dize | (kaldırıldı) Bunun yerine moved_to_prefixedtitle kullanın.
|
Hedef taşıma sayfasının tam başlığı | moved_to_prefixedtitle |
dize | |
Hedef taşıma sayfasının ad alanı | moved_to_namespace |
tamsayı | |
Hedef sayfa yaşını taşı (saniye olarak) | moved_to_age |
tamsayı | |
Taşımanın hedef sayfasındaki son düzenlemeden geçen süre (saniye cinsinden) | moved_to_last_edit_age
|
integer or null |
null when the target page does not exist
|
Hedef sayfanın taşınma koruma düzeyini değiştir | moved_to_restrictions_edit |
dizi dizesi | page_restrictions_edit ile aynı, ancak taşımanın hedefi için.
|
Hedef sayfanın taşınmasını koruma düzeyini taşı | moved_to_restrictions_move |
dizi dizesi | page_restrictions_move ile aynı, ancak taşımanın hedefi için.
|
Taşıma hedefi dosyasının koruma koruması | moved_to_restrictions_upload |
dizi dizesi | page_restrictions_upload ile aynı, ancak taşımanın hedefi için.
|
Hedef sayfayı taşı koruma oluştur | moved_to_restrictions_create |
dizi dizesi | page_restrictions_create ile aynı, ancak taşımanın hedefi için.
|
Hedef sayfayı taşımak için katkıda bulunan son on kullanıcı | moved_to_recent_contributors |
dizi dizesi | page_recent_contributors ile aynı, ancak taşımanın hedefi için.
|
Hedef sayfayı taşımaya katkıda bulunan ilk kullanıcı | moved_to_first_contributor |
dize | page_first_contributor ile aynı, ancak taşımanın hedefi için.
|
Kaynak taşıma sayfasının ad alanı | moved_from_namespace |
tamsayı | |
Kaynak taşıma sayfası başlığı | moved_from_text |
dize | (kaldırıldı) Bunun yerine moved_from_title kullanın.
|
Kaynak taşıma sayfası başlığı | moved_from_title |
dize | |
Kaynak taşıma sayfasının tam başlığı | moved_from_prefixedtext |
dize | (kaldırıldı) Bunun yerine moved_from_prefixedtitle kullanın.
|
Kaynak taşıma sayfasının tam başlığı | moved_from_prefixedtitle |
dize | |
Kaynak taşıma sayfasının sayfa kimliği | moved_from_articleid |
tamsayı | (kaldırıldı) Bunun yerine moved_from_id kullanın.
|
Kaynak taşıma sayfasının sayfa kimliği | moved_from_id |
tamsayı | |
Kaynak sayfa yaşını taşı (saniye olarak) | moved_from_age |
tamsayı | |
Taşımanın kaynak sayfasındaki son düzenlemeden geçen süre (saniye cinsinden) | moved_from_last_edit_age |
integer | |
Kaynak sayfasının koruma düzeyini değiştir | moved_from_restrictions_edit |
dizi dizesi | page_restrictions_edit ile aynı, ancak taşımanın hedefi için.
|
Kayna sayfasının koruma düzeyini taşı | moved_from_restrictions_move |
dizi dizesi | page_restrictions_move ile aynı, ancak taşımanın hedefi için.
|
Taşıma kaynak dosyasının korumasını yükleyin | moved_from_restrictions_upload |
dizi dizesi | page_restrictions_upload ile aynı, ancak taşımanın hedefi için.
|
Taşıma kaynak sayfasının koruması oluşturun | moved_from_restrictions_create |
dizi dizesi | page_restrictions_create ile aynı, ancak taşımanın hedefi için.
|
Kaynak sayfayı taşımak için katkıda bulunan son on kullanıcı | moved_from_recent_contributors |
dizi dizesi | page_recent_contributors ile aynı, ancak taşımanın hedefi için.
|
Kaynak sayfayı taşımaya katkıda bulunan ilk kullanıcı | moved_from_first_contributor |
dize | page_first_contributor ile aynı, ancak taşımanın hedefi için.
|
Hesap adı (hesap oluşturulduğunda) | accountname |
dize | |
Eski revizyonun içerik modeli | old_content_model
|
dize | İçerik modeli değişiklikleri hakkında bilgi için Help:ChangeContentModel sayfasına bakın |
Yeni revizyonun içerik modeli | new_content_model
|
dize | İçerik modeli değişiklikleri hakkında bilgi için Help:ChangeContentModel sayfasına bakın |
Protected variables
A variable can be considered protected. For instance, on wikis with temporary accounts enabled, IPs are considered PII and access to them must be restricted.
Protected variables and filters that use them are only accessible to maintainers with the abusefilter-access-protected-vars
right.
Using a protected variable flags the filter as protected as well.
The filter subsequently cannot be unprotected, even if it no longer actively uses a protected variable, as its historical logs will remain available.
The default protected variables are defined in AbuseFilterProtectedVariables
in extension.json
.
user_unnamed_ip
is null
when examining past edits.Description | Name | Data type | Notes |
---|---|---|---|
IP of the user account (for logged-out users and temporary accounts only) ($1) | user_unnamed_ip
|
string | User IP for anonymous users/temporary accounts This returns
null for registered users. |
Diğer uzantılardan gelen değişkenler
Açıklama | Ad | Veri türü | Değerler | Ekleyen |
---|---|---|---|---|
Kullanıcının ($1) bulunduğu küresel gruplar | global_user_groups
|
dizi | CentralAuth | |
Kullanıcının ($1) küresel düzenleme sayısı | global_user_editcount
|
tamsayı | CentralAuth | |
Hesap oluşturma sırasında kullanıcının ($1) içinde bulunduğu küresel gruplar | global_account_groups
|
array | Available only when action is createaccount (then it is always empty) or autocreateaccount .
|
CentralAuth |
Hesap oluşturma sırasında kullanıcının ($1) küresel değişiklik sayısı | global_account_editcount
|
integer | Available only when action is createaccount (then it is always zero) or autocreateaccount .
|
CentralAuth |
OAuth consumer used to perform this change ($1) | oauth_consumer
|
tamsayı | OAuth | |
Yapısal Tartışmalar panosunun sayfa kimliği | board_articleid
|
tamsayı | (kaldırıldı) Bunun yerine board_id kullanın.
|
StructuredDiscussions |
Yapısal Tartışmalar panosunun sayfa kimliği | board_id
|
tamsayı | StructuredDiscussions | |
Yapısal Tartışmalar panosunun ad alanı | board_namespace
|
tamsayı | ad alanı dizi ile ilgilidir | StructuredDiscussions |
Yapısal Tartışmalar panosunun başlığı (ad alanı olmadan) | board_text
|
dize | (kaldırıldı) Bunun yerine board_title kullanın.
|
StructuredDiscussions |
Yapısal Tartışmalar panosunun başlığı (ad alanı olmadan) | board_title
|
dize | StructuredDiscussions | |
Yapısal Tartışmalar kurulunun tam başlığı | board_prefixedtext
|
dize | (kaldırıldı) Bunun yerine board_prefixedtitle kullanın.
|
StructuredDiscussions |
Yapısal Tartışmalar kurulunun tam başlığı | board_prefixedtitle
|
dize | StructuredDiscussions | |
Çeviri biriminin kaynak metni | translate_source_text
|
dize | Translate | |
Çeviri için hedef dil | translate_target_language
|
dize | Bu, İngilizce için en gibi dil kodudur.
|
Translate |
Değişikliğin bir Tor çıkış düğümünden yapılıp yapılmadığı ($1) | tor_exit_node
|
boole | eylem bir tor çıkış düğümünden geliyorsa true. | TorBlock |
Bir kullanıcının mobil arayüz üzerinden değişiklik yapıp yapmadığı ($1) | user_mobile
|
boole | mobil kullanıcılar için true, aksi takdirde false. | MobileFrontend |
Kullanıcının mobil uygulamadan düzenleme yapıp yapmayacağı | user_app
|
boole | Kullanıcı mobil uygulamadan düzenleme yapıyorsa true, aksi takdirde false. | MobileApp |
Sayfa görüntüleri[1] | article_views
|
tamsayı | (kaldırıldı) Bunun yerine page_views kullanın.
|
HitCounters |
Sayfa görüntülemeri[2] | page_views
|
tamsayı | sayfa görüntülemelerinin miktarı | HitCounters |
Kaynak sayfa görüntülemeleri[3] | moved_from_views
|
tamsayı | kaynak sayfanın sayfa görüntülemelerinin miktarı | HitCounters |
Hedef sayfa görüntülemeleri[4] | moved_to_views
|
tamsayı | hedef sayfanın sayfa görüntülenme miktarı | HitCounters |
IP adresinin stopforumspam.com listesi kullanılarak engellenip engellenmediği[5] | sfs_blocked
|
boole | IP adresinin stopforumspam.com listesi kullanılarak engellenip engellenmediği | StopForumSpam |
Notlar
action='move'
olduğunda, yalnızca summary
, action
, timestamp
ve user_*
değişkenleri kullanılabilir.
page_*
değişkenleri de mevcuttur, ancak önek, sırasıyla orijinal makale adının ve hedef olanın değerlerini temsil eden moved_from_
ve moved_to_
ile değiştirilir.
Örneğin, page_title
yerine moved_from_title
ve moved_to_title
.
MediaWiki 1.28 (gerrit:295254) sürümünden beri, action='upload'
yalnızca bir karşıya yükleme yayınlanırken kullanılır ve saklanacak yüklemeler için kullanılmaz.
Depolamaya yapılan yüklemeler de dahil olmak üzere tüm yüklemeler için kullanılan yeni bir action='stashupload'
tanıtıldı.
Bu, eskiden action='upload'
gibi davranır ve yalnızca dosya meta veri değişkenlerini (file_*
) sağlar.
summary
, new_wikitext
ve diğerleri dahil olmak üzere sayfa düzenlemeyle ilgili değişkenler artık action='upload'
için mevcuttur.
Her dosya yüklemesi için, filtreler action='stashupload'
ile çağrılabilir (yüklemelerin saklanması için) ve her zaman action='upload'
; action='edit'
ile çağrılmazlar.
Filtre yazarları, bir dosya yalnızca dosya içeriğine dayalı olarak kontrol edilebildiğinde (örneğin, düşük çözünürlüklü dosyaları reddetmek için) filtre kodunda action='stashupload' | action='upload'
ve yalnızca düzenlemenin vikimetin bölümlerinin de incelenmesi gerektiğinde action='upload'
kullanmalıdır. Örneğin, açıklaması olmayan dosyaları reddetmek için.
Bu, yükleme ayrıntılarını doldurmak için zaman harcamadan önce kullanıcıyı hata konusunda bilgilendirmek için dosyayı karşıya yüklemeyi ve dosyayı yayınlamayı ayıran araçlara (örneğin UploadWizard veya upload dialog) izin verecektir.
Performans
Yukarıdaki tabloda belirtildiği gibi, bu değişkenlerden bazıları çok yavaş olabilir.
Filtreleri yazarken, koşul sınırının filtrelerin ne kadar ağır olduğuna dair iyi bir ölçüt olmadığını unutmayın.
Örneğin, *_recent_contributors
veya *_links
gibi değişkenler her zaman hesaplanacak bir DB sorgusuna ihtiyaç duyarken, *_pst
değişkenleri metni ayrıştırmak zorunda kalacak, ki bu yine ağır bir işlemdir; tüm bu değişkenler çok dikkatli kullanılmalıdır.
Örneğin, İtalyanca Vikipedi'de 135 aktif filtre ve ortalama 450 kullanım koşuluyla, filtrelerin uygulama süresinin 500 ms civarında olduğu ve piklerin 15 saniyeye ulaştığı gözlemlendi.
Tek bir filtreden added_links
değişkeni kaldırmak ve başka bir filtrenin added_lines_pst
kullandığı durumları yarıya indirmek, ortalama yürütme süresini 50 ms'ye getirdi.
Daha spesifik olarak:
- Yüksek doğruluğa ihtiyaç duyduğunuzda
_links
değişkenleri kullanın ve diğer değişkenlerde (örneğin,added_lines
) "http://..." ile kontrol etmek ağır arızalara yol açabilir; - PST olmayan değişkenlerin yeterli olmadığından gerçekten emin olduğunuzda
_pst
değişken kullanın. Hangisini kontrol edeceğinize koşullu olarak da karar verebilirsiniz: örneğin, bir imzayı incelemek istiyorsanız, önceadded_lines
,~~~
içerip içermediğini kontrol edin; - Genel olarak, bu değişkenlerle uğraşırken, daha fazla koşulu tüketmek, ancak ağır şeyleri hesaplamaktan kaçınmak her zaman çok daha iyidir. Bunu başarmak için her zaman ağır değişkenleri son koşullar olarak koyun.
Son olarak, belirli bir filtre için bir değişken her hesaplandığında, kaydedileceğini ve diğer herhangi bir filtrenin onu hemen alacağını unutmayın. Bu değişkeni hesaplayan tek bir filtrenin onu kullanan düzinelerce filtre olarak saydığı anlamına gelir.
Anahtar kelimeleri
Aşağıdaki özel anahtar sözcükler, sık kullanılan işlevler için dahil edilmiştir:
like
(veyamatches
), soldaki işlenen, sağ taraftaki işlenende glob kalıbı ile eşleşirse doğru döndürür.- Sağdaki işlenen (bir dizge) sol taraf işleneni içeriyorsa
in
true döndürür. Not: boş dizeler başka herhangi bir dizede yer almaz veya içermez (boş dizenin kendisi bile). contains
,in
gibi çalışır, ancak sol ve sağ el işlenenleri değiştirildiğinde. Not: boş dizeler başka herhangi bir dizede yer almaz veya içermez (boş dizenin kendisi bile).rlike
(veyaregex
) veirlike
3, soldaki işlenen, sağ taraftaki işlenendeki düzenli ifade kalıbıyla eşleşiyorsa (içeriyorsa) (irlike
, büyük/küçük harf duyarsızdır).- Sistem PCRE kullanır.
- Etkinleştirilen tek PCRE seçeneği
PCRE_UTF8
(değiştiriciu
[$url PHP'de]);irlike
için hemPCRE_CASELESS
hem dePCRE_UTF8
etkinleştirilir (değiştiriciiu
)
if ... then ... end
if ... then ... else ... end
... ? ... : ...
true
,false
,null
Örnekler
Kod | Sonuç | Yorum |
---|---|---|
"1234" like "12?4"
|
True | |
"1234" like "12*"
|
True | |
"foo" in "foobar"
|
True | |
"foobar" contains "foo"
|
True | |
"o" in ["foo", "bar"]
|
True | Dize dökümü nedeniyle |
"foo" regex "\w+"
|
True | |
"a\b" regex "a\\\\b"
|
True | Normal ifade kullanarak kaçış karakteri ters eğik çizgiyi aramak için dört ters eğik çizgi veya iki \x5C kullanmanız gerekir. (Her ikisi de iyi çalışıyor.)
|
"a\b" regex "a\x5C\x5Cb"
|
True |
İşlevler
Bazı genel sorunları hafifletmek için bir dizi yerleşik işlev dahil edilmiştir.
functionName( arg1, arg2, arg3 )
genel biçiminde yürütülürler ve herhangi bir değişmez değer veya değişken yerine kullanılabilirler.
Argümanları değişmez değerler, değişkenler ve hatta diğer işlevler olarak verilebilir.
ad | açıklama |
---|---|
lcase |
Küçük harfe dönüştürülmüş bağımsız değişkeni döndürür. |
ucase |
Büyük harfe dönüştürülmüş bağımsız değişkeni döndürür. |
length |
Bağımsız değişken olarak verilen dizenin uzunluğunu döndürür. Argüman bir diziyse, öğe sayısını döndürür. |
string |
Dize veri türüne dönüştürür. Eğer argüman bir diziyse, onu satır sonu ile yerleştirir. |
int |
Tamsayı veri türüne dönüştürür. |
float |
Kayan noktalı veri türüne dönüştürür. |
bool |
Boole veri türüne dönüştürür. |
norm |
rmwhitespace(rmspecials(rmdoubles(ccnorm(arg1)))) ile eşittir.
|
ccnorm
|
Bağımsız değişkendeki kafa karıştırıcı/benzer karakterleri normalleştirir ve kanonik bir biçim döndürür. Karakterlerin ve değiştirmelerinin bir listesi Git'te bulunabilir, ör. ccnorm( "Eeèéëēĕėęě3ƐƷ" ) === "EEEEEEEEEEEEE" .[9] Bu işlevin çıkışı her zaman büyük harftir. Pahalı olmasa da, bu işlev de ucuz değildir ve birçok kez çağrıldığında bir filtreyi yavaşlatabilir.
|
ccnorm_contains_any
|
Bağımsız değişkenlerdeki kafa karıştırıcı/benzer karakterleri normalleştirir ve ilk dize aşağıdaki bağımsız değişkenlerden herhangi bir dizesi içeriyorsa (sınırsız sayıda bağımsız değişken, mantık OR modu) doğru döndürür. Karakterlerin ve değiştirmelerinin bir listesi Git'te bulunabilir. ccnorm kullanımı nedeniyle, çok fazla bağımsız değişken iletilirse bu işlev yavaş olabilir.
|
ccnorm_contains_all
|
Bağımsız değişkenlerdeki kafa karıştırıcı/benzer karakterleri normalleştirir ve ilk dize aşağıdaki bağımsız değişkenlerden herhangi bir dizesini içeriyorsa (sınırsız sayıda bağımsız değişken, mantık AND modu) true döndürür. Karakterlerin ve değiştirmelerinin bir listesi Git'te bulunabilir. ccnorm kullanımı nedeniyle, çok fazla bağımsız değişken iletilirse bu işlev yavaş olabilir.
|
specialratio |
Alfasayısal olmayan karakterlerin sayısının bağımsız değişkendeki toplam karakter sayısına bölünmesiyle elde edilen değeri döndürür. |
rmspecials |
Bağımsız değişkendeki özel karakterleri kaldırır ve sonucu döndürür. Boşluğu kaldırmaz. (s/[^\p{L}\p{N}\s]//g ile eşdeğerdir.) |
rmdoubles |
Bağımsız değişkendeki tekrarlanan karakterleri kaldırır ve sonucu döndürür. |
rmwhitespace |
Beyaz boşlukları (boşluklar, sekmeler, yeni satırlar) kaldırır. |
count |
İğnenin (ilk dize) samanlıkta (ikinci dize) kaç kez göründüğünü döndürür. Yalnızca bir bağımsız değişken verilmişse, onu virgülle böler ve parça sayısını döndürür. |
rcount
|
count ile benzer, ancak iğne bunun yerine normal bir ifade kullanır. Normal ifadenin "(?i)" ile başlamasına izin verilerek büyük/küçük harfe duyarlı hale getirilebilir. Lütfen, düz dizeler için bu işlevin count [10] üzerinden 50 kat daha yavaş olabileceğini unutmayın, bu nedenle mümkün olduğunda onu kullanın.
|
get_matches
|
MW 1.31+ Samanlıktaki (ikinci dize) normal ifade iğnesinin (ilk dize) eşleşmelerini arar. 0 öğesinin tam eşleşme olduğu ve her [n] öğesinin iğnenin n'inci yakalama grubunun eşleştiği bir dizi döndürür. Normal ifadenin "(?i)" ile başlamasına izin verilerek büyük/küçük harfe duyarlı hale getirilebilir. Bir yakalama grubu eşleşmezse, bu dizi konumu "false" değerini alacaktır.
|
ip_in_range |
Kullanıcının IP'si (ilk dize) belirtilen IP aralığıyla eşleşirse true döndürür (ikinci dize CIDR gösterimi, "1.1.1.1-2.2.2.2" gibi açık gösterim veya tek bir IP olabilir). Yalnızca anonim kullanıcılar için çalışır. Hem IPv4 hem de IPv6 adreslerini destekler. |
ip_in_ranges |
Kullanıcının IP'si (ilk dize) belirtilen IP aralıklarının herhangi bir değeriyle eşleşirse true döndürür (aşağıdaki dizeler mantık VEYA modunda, CIDR gösterimi olabilir, açık gösterimde "1.1" .1.1-2.2.2.2" veya tek bir IP). Yalnızca anonim kullanıcılar için çalışır. Hem IPv4 hem de IPv6 adreslerini destekler.
|
contains_any |
İlk dize aşağıdaki bağımsız değişkenlerden herhangi bir dizesi içeriyorsa true döndürür (mantık OR modunda sınırsız sayıda bağımsız değişken). İlk argüman bir diziyse, dizeye dönüştürülür. |
contains_all |
İlk dize aşağıdaki bağımsız değişkenlerden her dizesini içeriyorsa true döndürür (mantık AND modunda sınırsız sayıda bağımsız değişken). İlk argümanın dönüşü bir dizi ise, dizgeye dönüştürülür. |
equals_to_any |
İlk bağımsız değişken aşağıdakilerden herhangi biriyle aynıysa (=== ) (sınırsız sayıda bağımsız değişken) true döndürür. Temel olarak, equals_to_any(a, b, c) , a===b | a===c ile aynıdır, ancak daha kapsamlı ve koşulları kaydeder.
|
substr |
İlk dizenin bölümünü ikinci bağımsız değişkenden uzaklığa (0'dan başlar) ve üçüncü bağımsız değişkenden maksimum uzunluğa (isteğe bağlı) göre döndürür. |
strlen |
length ile aynıdır.
|
strpos
|
Samanlıktaki (birinci dize) ilk iğne (ikinci dize) oluşumunun sayısal konumunu, üçüncü bağımsız değişkenden uzaklıktan başlayarak döndürür (isteğe bağlı, varsayılan 0'dır). Bu işlev, iğne samanlığın başında bulunduğunda 0 döndürebilir, bu nedenle başka bir karşılaştırmalı işleç tarafından "false" değer olarak false yorumlanabilir. Daha iyi bir yol, bulunup bulunmadığını test etmek için === veya !== kullanmaktır. Differently from PHP's strpos(), which returns false when the needle is not found, this function returns -1 when the needle is not found.
|
str_replace |
Arama dizesinin tüm yinelemelerini yedek dizeyle değiştirir. İşlev şu sırayla 3 bağımsız değişken alır: aramanın gerçekleştirileceği metin, bulunacak metin, değiştirilecek metin. |
str_replace_regexp |
Normal ifadeler kullanarak arama dizesinin tüm oluşumlarını değiştirme dizesiyle değiştirir. İşlev, şu sırayla 3 bağımsız değişken alır: aramayı gerçekleştirecek metin, eşleşecek normal ifade, değiştirme ifadesi. |
rescape |
Dize, özel bir anlamı olmayan karakterlerin normal ifadede kullanılabilmesi için, önünde bazı karakterlerin "\" olduğu argümanı döndürür. |
set |
Filtrede daha sonra kullanılmak üzere belirli bir değere (ikinci bağımsız değişken) sahip bir değişken (ilk dize) ayarlar. Başka bir sözdizimi: name := value .
|
set_var |
set ile aynıdır.
|
Örnekler
Kod | Sonuç | Yorum |
---|---|---|
length( "Wikipedia" )
|
9 | |
lcase( "WikiPedia" )
|
wikipedia | |
ccnorm( "w1k1p3d14" )
|
WIKIPEDIA | ccnorm çıkışı her zaman büyük harftir
|
ccnorm( "ωɨƙɩᑭƐƉ1α" )
|
WIKIPEDIA | |
ccnorm_contains_any( "w1k1p3d14", "wiKiP3D1A", "foo", "bar" )
|
true | |
ccnorm_contains_any( "w1k1p3d14", "foo", "bar", "baz" )
|
false | |
ccnorm_contains_any( "w1k1p3d14 is 4w3s0me", "bar", "baz", "some" )
|
true | |
ccnorm( "ìíîïĩїį!ľ₤ĺľḷĿ" )
|
IIIIIII!LLLLLL | |
norm( "!!ω..ɨ..ƙ..ɩ..ᑭᑭ..Ɛ.Ɖ@@1%%α!!" )
|
WIKIPEDAIA | |
norm( "F00 B@rr" )
|
FOBAR | norm boşlukları, özel karakterleri ve kopyaları kaldırır, ardından ccnorm kullanır
|
rmdoubles( "foobybboo" )
|
fobybo | |
specialratio( "Wikipedia!" )
|
0.1 | |
count( "foo", "foofooboofoo" )
|
3 | |
count( "foo,bar,baz" )
|
3 | |
rmspecials( "FOOBAR!!1" )
|
FOOBAR1 | |
rescape( "abc* (def)" )
|
abc\* \(def\) | |
str_replace( "foobarbaz", "bar", "-" )
|
foo-baz | |
str_replace_regexp( "foobarbaz", "(.)a(.)", "$2a$1" )
|
foorabzab | |
ip_in_range( "127.0.10.0", "127.0.0.0/12" )
|
true | |
ip_in_ranges( "127.0.10.0", "10.0.0.0/8", "127.0.0.0/12" )
|
true | |
contains_any( "foobar", "x", "y", "f" )
|
true | |
get_matches( "(foo?ba+r) is (so+ good)", "fobaaar is soooo good to eat" )
|
['fobaaar is soooo good', 'fobaaar', 'soooo good'] |
İşlem sırası
İşlemler genellikle soldan sağa yapılır, ancak çözüldükleri bir sıra vardır. Filtre koşullardan birinde başarısız olur olmaz, geri kalanını kontrol etmeyi durdurur (kısa devre değerlendirmesi nedeniyle) ve bir sonraki filtreye geçer. Değerlendirme sırası şöyledir:
- Parantez içine alınan her şey (
(
ve)
) tek bir birim olarak değerlendirilir. - Değişkenleri/değişmezleri ilgili verilerine dönüştürmek. (ör.
page_namespace
- 0) - İşlev çağrıları (
norm
,lcase
, vb.) - Birli
+
ve-
(pozitif veya negatif değeri tanımlar, ör.-1234
,+1234
) - Anahtar kelimeleri (
in
,rlike
, vb.) - Boole çevirmesi (
!x
) - Üs (
2**3 → 8
) - Çarpma ile ilgili (çarpma, bölme, modulo)
- Toplama ve çıkarma (
3-2 → 1
) - Karşılaştırmalar. (
<
,>
,==
) - Boole işlemleri. (
&
,|
,^
) - Ternary operator (
... ? ... : ...
) - Assignments (
:=
)
Örnekler
A & B | C
,A & (B | C)
değil,(A & B) | C
ile eşdeğerdir. Özellikle, hemfalse & true | true
hem defalse & false | true
,true
olarak değerlendirilir.A | B & C
,A | (B & C)
değil,(A | B) & C
ile eşdeğerdir. Özellikle, hemtrue | true & false
hem detrue | false & false
,false
olarak değerlendirilir.added_lines rlike "foo" + "|bar"
yanlış, bunun yerineadded_lines rlike ("foo" + "|bar")
kullanın.
Koşul sayımı
Koşul sınırı (aşağı yukarı) karşılaştırma operatörlerinin sayısı + girilen işlev çağrılarının sayısıdır.
Kullanılan koşulların nasıl azaltılacağına ilişkin daha fazla açıklaması Extension:AbuseFilter/Conditions sayfasında bulunabilir.
Hariç tutulanlar
AbuseFilter inceleme işlevi "geri alma" işlemlerini düzenleme olarak tanımlasa da, AbuseFilter eşleştirme için geri alma işlemlerini değerlendirmez.[11]
Yararlı bağlantılar
Notlar
- ↑ Dizileri diğer türlerle karşılaştırmak, yukarıdaki örnek dışında her zaman false döndürür.
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Şu anda dosya yüklemeleri için mevcut olan tek değişken (action='upload') user_*, page_*, file_sha1, file_size, file_mime, file_mediatype, file_width, file_height, file_bits_per_channel (son beş tanesi yalnızca MediaWiki 1.27 gerrit:281503 sürümden bu yana eklenmiştir). Tüm file_* değişkenleri diğer işlemler için kullanılamaz (action='edit' dahil).
- ↑ MediaWiki 1.28 (gerrit:295254) sürümünden beri
- ↑ Bu değişkeni kullanan birkaç filtre (12) AbuseFilterSlow Grafana kontrol panelinde gösterildi (görüntülemek için logstash erişimi gerektirir). Bu değişkeni filtrenin sonuna doğru taşımak yardımcı olmuş görünüyordu.
- ↑ phabricator:T191722 sayfasına bakın
- ↑ Bu işlem ile kullanımdan kaldırıldı ve bununla devre dışı bırakıldı.
- ↑ Bu değişkeni kullanan bazı filtreler AbuseFilterSlow Grafana kontrol panelinde göründü (örneği, logstash erişimi gerektirir). Örneğin,
"text" in edit_diff_pst
(hattaedit_diff
) kullanmak yerine"text" in added_lines & !("text" in removed_lines)
gibi bir şey düşünün - ↑ Türlerin listesi için kaynak koduna bakın.
- ↑ phab:T27619 farkında olun. Hangi karakterlerin dönüştürüldüğünü görmek için
ccnorm( "your string" )
değerlendirmek için Special:AbuseFilter/tools kullanabilirsiniz. - ↑ https://3v4l.org/S6IGP
- ↑ T24713 - geri alma AF ile eşleşmiyor