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)

Integration with other extensions
You can integrate AbuseFilter with other extension in various ways.

Adding variables for filtering
It is possible to add new variables, to be used in abuse filters. A list of examples. To do that, you should:


 * Add a handler for the hook. To add a variable, you should use , where   is the name of the variable, and   is the fragment of an i18n key. The full key will be.
 * Add the i18n messages you chose at the previous point.
 * Choose a hook handler where the variable will be computed. Depending on your use case, you could:
 * Implement the hook; this is specifically thought for page-related variables;
 * Implement the hook; this is specifically thought for user-related variables;
 * Implement the hook; this is for variables not bound to a specific page or user;
 * Implement the hook; this is a bit more flexible than the other hooks, but it has a downside: your variable will not be available when examining past RecentChanges entries. If you want to implement that feature (and it's recommended to do so), you should use one of the hooks listed above, and use its third parameter.
 * Inside the hook handler, there are two ways to add a variable:
 * The "direct" way is calling . This is ideal only when the value is easy and quick to compute: the value is computed even if no active filter will use it.
 * The "lazy" way is calling . Here, 'method_name' is a (unique) identifier that will be used to compute the variable (it's recommended to prefix it with the name of your extension). To register the method, you should add a handler for the hook; therein, you should check if the $method passed matches your 'method_name', and if so, compute the variable. Lastly, $params is an array of parameters that you'll need to compute the variable; these are passed to the computeVariable hook handler. For an example of this, you can check out CentralAuth's.

Adding custom actions
You can add custom action handlers, so that each filter may perform further actions. To do that, you choose a name for the action ('my-action' from now on), and then:


 * 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)