Extension:TitleBlacklist
Stav rozšíření: stabilní |
|
|---|---|
| Implementace | Uživatelská práva, API |
| Popis | Blokuje vytváření stránek odpovídajících černé listině regulárních výrazů. |
| Autoři | Victor Vasiliev (VasilievVVdiskuse) |
| Nejnovější verze | 1.5.0 (Průběžně aktualizováno) |
| Zásady kompatibility | Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní. |
| MediaWiki | 1.35+ |
| PHP | 7.0+ |
|
|
|
|
|
| Licence | GNU General Public License 2.0 nebo novější |
| Stáhnout | |
| Přeložte rozšíření TitleBlacklist, používá-li lokalizaci z translatewiki.net | |
| Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření TitleBlacklist umožňuje administrátorům wiki blokovat vytváření, přesun a nahrávání stránek, jejichž název odpovídá jednomu nebo více regulárním výrazům, a také blokovat vytváření účtů se shodnými uživatelskými jmény.
Instalace
- Stáhněte soubor/y a vložte je do adresáře pojmenovaného
TitleBlacklistve vaší složceextensions/.
Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist
- Na konec vašeho souboru LocalSettings.php přidejte následující kód:
wfLoadExtension( 'TitleBlacklist' );
- Konfigurace zdrojů černé listiny (viz níže)
Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.
$wgGroupPermissions['sysop']['tboverride'] = false;.
Konfigurace
| Name | Default | Description |
|---|---|---|
$wgTitleBlacklistSources
|
[]
|
Pole zdrojů černé listiny titulů.
Mělo by být ve formátu pole (název => popis zdroje). |
$wgTitleBlacklistUsernameSources
|
'*'
|
Nastaví zdroje, které mohou fungovat jako filtr uživatelských jmen.
" |
$wgTitleBlacklistLogHits
|
false
|
Pokud je hodnota true, zaznamenává do Special:Log/titleblacklist všechny pokusy o vytvoření lokálního účtu, které odpovídají černým listinám. Upozorňujeme, že i když je tato možnost zakázána, protokol bude stále viditelný pro skupiny uživatelů s právem titleblacklistlog.
|
$wgTitleBlacklistCaching
|
[
"warningchance" => 100,
"expiry" => 900,
"warningexpiry" => 600
]
|
? |
$wgTitleBlacklistBlockAutoAccountCreation
|
true
|
Také blokuje automaticky vytvořené účty, které odpovídají černým listinám. |
- Více zdrojů černé listiny
Seznam zakázaných titulků lze získat z více zdrojů mimo lokální zprávu. Pro konfiguraci zdrojů zakázaných titulků použijte kód popsaný níže:
wfLoadExtension( 'TitleBlacklist' );
$wgTitleBlacklistSources = [
[
'type' => 'localpage',
'src' => 'MediaWiki:Titleblacklist'
],
[
'type' => 'url',
'src' => 'https://meta.wikimedia.org/w/index.php?title=Title_blacklist&action=raw'
],
[
'type' => 'file',
'src' => '/home/wikipedia/blacklists/titles',
]
];
Další informace získáte na stránce T113864.
Použití
Černá listina
Černá listina titulů se nachází na stránce MediaWiki:Titleblacklist.
Tato stránka se skládá z regulárních výrazů, každý na samostatném řádku. Každý z nich zakazuje vytváření stránek, jejichž názvy se s ním shodují.
Každý záznam může také obsahovat jeden nebo více atributů.
Seznam atributů musí být uzavřen do proměnné <> a oddělen proměnnou |.
Možné atributy jsou:
autoconfirmed– povolit automaticky potvrzeným uživatelům obejít omezenícasesensitive– omezení aplikovat pouze tehdy, když se velká a malá písmena přesně shodují s textemnoedit– také zakázat úpravy odpovídajících stránek, které již existujímoveonly– zakázat pouze přesuny stránek do odpovídajících nadpisů a povolit běžné vytváření stráneknewaccountonly– zakázat pouze vytváření odpovídajících účtů a povolit další akcereupload– povolit nahrávání nových verzí odpovídajících souborů, které již existujíerrmsg=X– pokud je akce zablokována, zobrazte chybovou zprávu s názvemXnamísto standardní zprávy.
Pokud je nainstalováno rozšíření AntiSpoof, lze atribut antispoof použít k normalizaci titulků před jejich kontrolou podle pravidel.
Například:
Foo <autoconfirmed|noedit|errmsg=blacklisted-testpage> # Tento název stránky není povolen [Bb]ar # Nikdo by o tom neměl psát článek. .*pandora.* # Toto slovo není povoleno v žádné části názvu stránky.
To, co se zde označuje jako regulární výrazy, nejsou vlastní regulární výrazy, ale spíše dílčí vzory, které jsou vloženy do pevně zakódovaného regulárního výrazu. Tj. dílčí vzor Foo z výše uvedeného příkladu by vytvořil regulární výraz jako /^Foo$/usi.
Podtržítka ("_") v regulárních výrazech budou rozšířením převedena na mezery, protože názvy se porovnávají s jejich textovou formou ("Název stránky" místo "Název_stránky").
Whitelist (bílá listina)
Na adrese MediaWiki:Titlewhitelist je také k dispozici bílá listina.
Nejprve se použije černá listina, poté bílá listina.
Takže vstup uživatele, který odpovídá položce na černé listině, je blokován, s výjimkou případů, kdy odpovídá položce na bílé listině.
Pro použití bílé listiny nemusíte v LocalSettings.php nic konfigurovat.
Některé z výše uvedených volitelných atributů pro černou listinu fungují i pro bílou listinu, např. casesensitive.
Přizpůsobení
- Varovné zprávy
Pokud je pokus o vytvoření stránky zablokován kvůli zakázanému názvu, zobrazí se uživateli varovná zpráva. Tu lze přizpůsobit pomocí následujících systémových zpráv definovaných v jmenném prostoru Mediawiki:
- MediaWiki:Titleblacklist-forbidden-edit – pro tvorbu a úpravu stránek,
- MediaWiki:Titleblacklist-forbidden-move – pro přesuny stránek,
- MediaWiki:Titleblacklist-forbidden-upload – pro nahrávání obrázků,
- MediaWiki:Titleblacklist-forbidden-new-account – pro nové účty.
Vlastní zprávy lze definovat pomocí atributu errmsg.
Příklad: Použití TitleBlacklistu k řízení vytváření uživatelských účtů
Koncepční přehled
Uživatelské jméno pro nové účty bude tímto rozšířením považováno odlišně od uživatelského jména pro nové články.
Toto rozšíření přidá před řetězec, který uživatel zadá do pole Uživatelské_jméno na stránce pro vytvoření účtu, řetězec "Uživatel:" (nebo jeho lokalizovaný ekvivalent).
Takže když toto rozšíření provádí porovnávání s vašimi regulárními výrazy, jak je znázorněno na MediaWiki:Titleblacklist nebo MediaWiki:Titlewhitelist, bude porovnávat "User:" + <userinput>.
Představte si například, že chcete zablokovat uživatele "jill" jako nového uživatele. Představte si, že máte regulární výraz "jill.* <newaccountonly>" na černé listině a uživatel na stránce pro vytvoření účtu zadá jako uživatelské jméno "jill". Toto projde, protože porovnání, které toto rozšíření provede, bude mezi "jill.*" (regulární výraz) a "User:jill" (konstruovaný vstupní řetězec). Tyto se neshodují, takže je povoleno "jill" (a pravděpodobně jste to nezamýšleli). Pro provedení zamýšleného bloku použijte regulární výraz jako ".*jill.* <newaccountonly>" nebo "User:jill.* <newaccountonly>" pro MediaWiki:Titleblacklist.
Pokud chcete blokovat všechny uživatele kromě těch, kteří odpovídají regulárnímu výrazu, zablokujte všechny uživatele v MediaWiki:Titleblacklist a povolený regulární výraz zapište do MediaWiki:Titlewhitelist.
Jak na to
Pokud chcete, aby všechna uživatelská jména při vytváření účtu sestávala přesně ze dvou jmen oddělených mezerami a s velkým písmenem, postupujte takto:
1. Nainstalujte si TitleBlacklist.
2. Přidejte následující do svého souboru LocalSettings.php
wfLoadExtension( 'TitleBlacklist' );
$wgGroupPermissions['sysop']['tboverride'] = false;
$wgTitleBlacklistSources = [
[
'type' => 'localpage',
'src' => 'MediaWiki:Titleblacklist'
]
];
3. V https://www.example.com/mywiki/MediaWiki:Titleblacklist přidejte
# Blokujte všechny uživatelské účty a povolte pouze ty, které odpovídají MediaWiki:Titlewhitelistregex
.* <newaccountonly>
4. V https://www.example.com/mywiki/MediaWiki:Titlewhitelist přidejte
# Povolte pouze dvě jména oddělená mezerou a každé z nich s velkým písmenem, např. "Fred Mew" OK, "Fred mew" selže, "Fredmew" selže.
# Záleží na .* <newaccountonly> na černé listině
User:[A-Z][a-z]+\s[A-Z][a-z]+ <casesensitive>
5. V https://www.example.com/mywiki/MediaWiki:Titleblacklist-forbidden-new-account edit
Vytvoření uživatelského jména "$2" bylo zablokováno. Odpovídá následující položce na černé listině: <code>$1</code>. Použijte prosím skutečné uživatelské jméno. Uživatelská jména se musí skládat ze dvou jmen oddělených mezerou. Každé jméno musí být napsáno velkým písmenem. Například: * "Mary Smith". OK. * "MarySmith". Neplatné. * "Mary smith". Neplatné. * "marysmith". Neplatné.
Pravidla blokování vytváření uživatelských jmen (a vytváření článků) jsou řízena parametry MediaWiki:Titleblacklist a MediaWiki:Titlewhitelist. Tuto zprávu lze upravit na adrese MediaWiki:Titleblacklist-forbidden-new-account.
Testování shod
Modul API action=titleblacklist lze použít k otestování názvu a akce (např. upravit, vytvořit, nový účet) na černé listině.
Uživatelé s oprávněním 'tboverride' by měli zajistit, aby zadali parametr tbnooverride.
Například pokud černá listina obsahovala filtr:
.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Zakazuje jedenáct nebo více opakujících se stejných znaků v uživatelských jménech
můžete použít API požadavek jako
| Výsledek |
|---|
{
"titleblacklist": {
"result": "blacklisted",
"reason": "<table class=\"plainlinks fmbox\nfmbox-system \" style=\"\" role=\"presentation\" dir=\"ltr\">\n<tr>\n<td class=\"mbox-image\">\n [[File:Imbox notice.png|40x40px|link=|alt=]]</td>\n<td class=\"mbox-text\" style=\"\"> The user name \"AAAAAAAAAAA\" [[Mediawiki talk:Titleblacklist|has been blocklisted]] from creation. </td>\n\n</tr>\n</table>",
"message": "titleblacklist-forbidden-new-account-invalid",
"line": ".*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Disallows eleven or more of the same character repeated in usernames"
}
}
|
Pokud je nainstalován Scribunto, TitleBlacklist umožňuje testovat, zda konkrétní tituly a akce odpovídají položce v černé listině, pomocí funkce mw.ext.TitleBlacklist.test.
Pokud je nalezena shoda, vrátí se podrobnosti o odpovídající položce.
Například pokud černá listina obsahovala filtr:
.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Zakazuje jedenáct nebo více opakujících se stejných znaků v uživatelských jménech
spuštění funkce:
mw.ext.TitleBlacklist.test("new-account", "AAAAAAAAAAA")
by vrátilo následující tabulku s podrobnostmi o odpovídající položce:
{
custommessage = "titleblacklist-forbidden-new-account-invalid",
message = "titleblacklist-forbidden-new-account-invalid",
params = {
errmsg = "titleblacklist-forbidden-new-account-invalid",
newaccountonly = true
},
raw = " .*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Zakazuje jedenáct nebo více opakujících se stejných znaků v uživatelských jménech",
regex = ".*(.)\1{10}.*",
version = 3
}
Vymazání mezipaměti
Obsah černých listin je uložen v mezipaměti. Změny v černých seznamech nakonfigurovaných na adrese URL nebo v souboru na serveru se neprojeví okamžitě. Chcete-li vynutit vymazání mezipaměti, upravte a uložte stránku MediaWiki:Titleblacklist (i když nic nezměníte). Nezáleží na tom, jestli je to nakonfigurované jako blacklist nebo ne. Podívejte se na stránku includes/Hooks.php.
Zdroje informací o regulárních výrazech
- Stručný úvod do regulárních výrazů
- 30 minutový tutoriál regulárních výrazů
- PHP: PCRE regex syntax, syntaxe regulárních výrazů používaná PHP a proto toto rozšíření
Související odkazy
| Toto rozšíření se používá na jednom nebo více projektech Wikimedia. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version. |
| Toto rozšíření je zahrnuto v následujících wiki farmách/hostitelích a/nebo balíčcích: |
- Stable extensions/cs
- User rights extensions/cs
- API extensions/cs
- Extensions which add rights/cs
- EditFilter extensions/cs
- MovePageCheckPermissions extensions/cs
- PageSaveComplete extensions/cs
- ScribuntoExternalLibraries extensions/cs
- TitleGetEditNotices extensions/cs
- GetUserPermissionsErrorsExpensive extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions bundled with MediaWiki 1.21/cs
- Extensions used on Wikimedia/cs
- Extensions included in BlueSpice/cs
- Extensions included in Canasta/cs
- Extensions available as Debian packages/cs
- Extensions included in Fandom/cs
- Extensions included in Miraheze/cs
- Extensions included in MyWikis/cs
- Extensions included in ProWiki/cs
- Extensions included in semantic::core/cs
- Extensions included in ShoutWiki/cs
- Extensions included in wiki.gg/cs
