Extension:AbuseFilter/cs

Rozšíření AbuseFilter umožňuje uživatelům s rozšířenými právy nastavovat konkrétní akce, které mají být provedeny, pokud akce uživatelů, jako jsou úpravy, splňují určitá kritéria.

Lze například vytvořit filtr, který zabrání neregistrovaným uživatelům přidávat externí odkazy nebo zablokuje uživatele, který odstraní více než 2000 znaků.

Konfigurace


Uživatelská práva
Jakmile jste naistalovali rozšíření, musíte nastavit uživatelská práva v "LocalSettings.php".

Například následující ukázková konfigurace by umožnila sysopům dělat vše, co chtějí s AbuseFilter, a všem prohlížet protokol a vidět nastavení veřejného filtru:

Parametry


Nouzové omezení
AbuseFilter přichází s funkcí, která automaticky omezuje (vypíná) filtry, které byly nedávno upraveny a odpovídají určitému prahu posledních akcí.

To se provádí, aby se zabránilo škodlivým úpravám na filtrech, které zablokují každého uživatele, který provádí akci na wiki nebo podobně.

Podmínka pro deaktivaci filtru závisí na těchto proměnných:
 * - Procento akcí z celkového počtu akcí ve sledovaném období.
 * - Počet shod filtru ve sledovaném období.
 * - Je třeba vzít v úvahu stáří filtru. Pokud je poslední úprava filtru starší než tento počet sekund, filtr nebude omezen, pokud již není omezen.
 * - Maximální počet nedávných akcí, které se mají započítat do hranice. Všimněte si, že každá akce zvyšuje čítač, a jakmile tento čítač dosáhne této nakonfigurované hodnoty, tento čítač a počet nedávných akcí, které odpovídají všem filtrům, jsou resetovány na 0.

Omezené filtry lze identifikovat v seznamu filtrů (Special:AbuseFilter) se stavem,. Omezení probíhá potichu a není možné zjistit, kdy byl filtr omezen.

Když je filtr omezen, neprovádí žádnou nebezpečnou akci (akce obvykle omezené na speciální práva, jako je blokování uživatele nebo jeho odstranění ze skupin, řízené $wgAbuseFilterActionRestrictions), a jsou povoleny pouze "bezpečné" akce (ty, které mohou varovat nebo zabránit probíhající akci). Omezené filtry se nepovolí automaticky. Chcete-li zakázat omezení, musíte upravit filtr. Všimněte si, že musíte skutečně něco změnit z filtru: Stačí změnit něco z poznámek filtru.

Všimněte si, že úprava filtru aktualizuje jeho stáří a může způsobit jeho deaktivaci, pokud znovu dosáhne podmínek pro omezení během krátké doby od poslední úpravy, což vede k nepoužitelnému filtru, pokud vaše wiki obsahuje více úprav zneužití než legitimních.



Vytváření a správa filtrů
Jakmile bylo rozšíření nainstalováno, filtry mohou být zakládány/testovány/měněny/mazány a záznamy mohou být zpřístupněny z ovládací stránky Special:AbuseFilter.


 * Formát pravidel – Základy psaní filtru
 * Akce
 * Globální pravidla
 * Průvodce optimalizací použití limitu podmínek
 * Chcete-li importovat filtry z Wikipedie: Až nainstalujete rozšíření, přejděte na w:Special:AbuseFilter, vyberte filtr (řekněme w:Special:AbuseFilter/3) a poté klikněte na "Exportovat tento filtr na jinou wiki", zkopírujte text, přejděte na "Special:AbuseFilter/import" na vaší wiki, vložte text.
 * m:Small wiki toolkits/Starter kit/AbuseFilter - Průvodce pro malé wiki komunity na metawiki

API
AbuseFilter přidává dva moduly seznamu API, jeden pro podrobnosti o filtrech zneužití ("abusefilters") a jeden pro protokol zneužití, protože je oddělený od ostatních protokolů MediaWiki ("abuselog"). Pomocí API není možné vytvářet nebo upravovat filtry zneužití.

list = abusefilters
Vypíše informace o filtrech


 * Parametry:
 * - ID filtru, od kterého se má začít výčet
 * - ID filtru, u kterého se má zastavit výčet
 * - Směr, kterým se má provést výčet (starší, novější)
 * - Zobrazit pouze filtry, které splňují tato kritéria (enabled|!enabled|deleted|!deleted|private|!private (povoleno|!povoleno|smazáno|!smazáno|soukromé|!soukromé))
 * - Maximální počet filtrů seznamu
 * - Které vlastnosti získat (id|description|pattern|actions|hits|comments|lasteditor|lastedittime|status|private (id|popis|vzor|akce|požadavky|komentáře|lasteditor|lastedittime|stav|soukromé))

Pokud jsou filtry soukromé, budou některé vlastnosti zadané pomocí  chybět, pokud nemáte příslušná uživatelská práva.


 * Příklady:

list = abuselog
Vypíše případy, kdy akce spustily filtr zneužití.


 * Parametry:
 * - Časové razítko, od kterého se má začít vypočítávat
 * - Časové razítko, ve kterém se má přestat vypočítávat
 * - Směr, kterým se má provést výčet (starší, novější)
 * - Zobrazit pouze záznamy, u kterých se o akci pokusil daný uživatel nebo IP adresa.
 * - Zobrazit pouze záznamy, kde se akce týkala dané stránky.
 * - Zobrazit pouze záznamy, které spustily dané ID filtru
 * - Maximální počet filtrů seznamu
 * - Jaké vlastnosti získat: (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)


 * Příklad:



Možné chyby

 * Někteří uživatelé mohou zaznamenat, že vytváření nových filtrů nebo úprava starých filtrů selže a uživatel bude pouze přesměrován na původní stránku. Pokud Wiki používá certifikáty SSL, může být tato chyba způsobena hodnotou, která může používat "http://" místo "https://". Indikací této chyby bude, že prohlížeč zobrazí upozornění https pro stránky Special:AbuseFilter. (Topic:T23dyyih0ofjada5)



Integrace s dalšími rozšířeními
AbuseFilter můžete integrovat s jiným rozšířením různými způsoby.



Přidání proměnných pro filtrování
Je možné přidat nové proměnné, které budou použity ve filtrech zneužití. Seznam příkladů. Chcete-li to provést, měli byste:


 * Přidat handler pro háček . Chcete-li přidat proměnnou, měli byste použít, kde   je název proměnné a   je fragment klíče i18n. Celý klíč bude.
 * Přidat zprávy i18n, které jste vybrali v předchozím bodě.
 * Vybrat obslužný program háčku, kde se bude proměnná používat. V závislosti na vašem případu použití můžete:
 * Použít háček . Toto je specificky myšleno pro proměnné související se stránkou.
 * Použít háček . Toto je specificky myšleno pro proměnné související s uživatelem.
 * Použít háček . Toto je pro proměnné, které nejsou vázány na konkrétní stránku nebo uživatele.
 * Použít háček . To je o něco flexibilnější než ostatní háčky, ale má to nevýhodu: Vaše proměnná nebude k dispozici při zkoumání minulých položek RecentChanges. Pokud chcete tuto funkci implementovat (a doporučuje se to udělat), měli byste použít jeden z výše uvedených háčků a použít jeho třetí parametr.
 * Uvnitř obslužného programu háčku existují dva způsoby, jak přidat proměnnou:
 * "Přímou" cestou je volání . To je ideální pouze tehdy, když je výpočet hodnoty snadný a rychlý: Hodnota se vypočítá, i když ji nebude používat žádný aktivní filtr.
 * "Líný" způsob je volání . Zde je 'method_name' (jedinečný) identifikátor, který bude použit k výpočtu proměnné (doporučuje se před ním uvést název vašeho rozšíření). Pro registraci metody byste měli přidat handler pro háček . U něj byste měli zkontrolovat, zda předaná $method odpovídá vašemu 'method_name', a pokud ano, vypočítat proměnnou. A konečně, $params je pole parametrů, které budete potřebovat k výpočtu proměnné. Ty jsou předány obslužnému háčku computeVariable. Jako příklad si můžete prohlédnout  CentralAuth.



Přidání vlastních akcí
Můžete přidat vlastní obslužné nástroje akcí, takže každý filtr může provádět další akce. Chcete-li to provést, vyberte název akce (od této chvíle 'my-action' (moje akce)) a poté:


 * Create a class named e.g. MyAction, that should extend \MediaWiki\Extension\AbuseFilter\Consequence, which can also implement HookAborterConsequence or ConsequencesDisablerConsequence
 * Add a subscriber to the AbuseFilterCustomActions hook; the subscriber should provide a callback as documented in the hook documentation, that returns an instance of the class created above, for instance:

Then you should add the following i18n messages; you can replace 'my_action' with e.g. 'block' to see what the messages are for:



Adding rule groups
You can also add extra rule groups, which can be used to group existing abuse filters. Note that, at the moment, each filter can only be in a single group (T116642). Currently, the only known consumer of this feature is. To do that, you should:


 * Append the name of the group to
 * Add some code to run the filters with your group. Note that AbuseFilter won't do that on its own. To do that, you should construct an  object, passing in the name of your group.



Související odkazy

 * Several WMF wikis where it's enabled (and with which configuration)