扩展:标题黑名单

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:TitleBlacklist and the translation is 33% complete.

Other languages:
Deutsch • ‎English • ‎Tiếng Việt • ‎dansk • ‎español • ‎polski • ‎português do Brasil • ‎беларуская (тарашкевіца)‎ • ‎中文 • ‎日本語 • ‎한국어
此扩展已绑定在MediaWiki 1.21及以上版本 因此您不需要再次下载。 然而,您仍需要跟随提供的其他指导。
MediaWiki扩展手册
OOjs UI icon advanced.svg
TitleBlacklist
发布状态: 稳定版
TitleBlacklist demonstration.png
实现 User rights , API
描述 Blocks the creation of pages matching a regular expression blacklist
作者 Victor Vasiliev (VasilievVVtalk)
最新版本 1.5.0 (2014-03-29)
兼容性方针 发行分支
MediaWiki 1.27+
PHP 5.4+
数据更新
许可协议 GNU General Public License 2.0 or later
下载

  • $wgTitleBlacklistSources
  • $wgTitleBlacklistUsernameSources
  • $wgTitleBlacklistLogHits
  • $wgTitleBlacklistCaching
  • $wgTitleBlacklistBlockAutoAccountCreation

  • tboverride
  • tboverride-account
  • titleblacklistlog
翻译TitleBlacklist扩展如果在translatewiki.net可用
检查使用和版本矩阵。
问题 开放的工作 · 报告错误

使用标题黑名单扩展,维基管理员可以以若干条正则表达式的形式来设立一个标题黑名单。如果一个页面的标题与黑名单中的规则相匹配,用户将不能创建此页面、上传文件至此页面,或将其他页面移动至此页面。此外,该扩展程序还能设立用户名黑名单,阻止用户创建特定名称的新用户。

安装

  • 下载文件,并将其放置在您extensions/文件夹中的TitleBlacklist目录内。
  • 将下列代码放置在您的LocalSettings.php的底部:
    wfLoadExtension( 'TitleBlacklist' );
    
    设置黑名单来源(见下文
  • Yes 完成 – 在您的wiki上导航至Special:Version,以验证扩展已成功安装。
默认情况下,该扩展仅对非管理员用户有效。要使该扩展对所有用户有效,请设置$wgGroupPermissions['sysop']['tboverride'] = false;

配置

$wgTitleBlacklistSources
Array of title blacklist sources.
Should be in array( name => source description ) format. Defaults to an empty array.
$wgTitleBlacklistUsernameSources
Sets the sources which may work as a username filter.
'*' is for all; false disables all.
If you want to limit it to particular sources, use array( source name 1, source name 2 ). This may be useful when you have shared account creation system in order to avoid blacklist fragmentation.
$wgTitleBlacklistLogHits
When true, logs on Special:Log/Titleblacklist all attempts of local account creation that match the blacklists. 默认为false. Note that even disabled, the log will still be visible for users groups with the titleblacklistlog right.
$wgTitleBlacklistCaching
 ?
$wgTitleBlacklistBlockAutoAccountCreation
Also blocks account created automatically that match the blacklists. Defaults to true.

多个黑名单来源

The Title blacklist can be gathered from multiple sources outside the local message. For configuring blacklist sources use code as described below:

wfLoadExtension( 'TitleBlacklist' );
$wgTitleBlacklistSources = array(
    array(
         'type' => 'localpage',
         'src'  => 'MediaWiki:Titleblacklist',
    ),
    array(
         'type' => 'url',
         'src'  => 'https://meta.wikimedia.org/w/index.php?title=Title_blacklist&action=raw',
    ),
    array(
         'type' => 'file',
         'src'  => '/home/wikipedia/blacklists/titles',
    ),
);

参见问题T113864以获取详细信息

用法

黑名单

The title blacklist is found on the MediaWiki:Titleblacklist page.

This page consists of regular expressions, each on a separate line, for example:

Foo <autoconfirmed|noedit|errmsg=blacklisted-testpage> #This page name is not allowed
[Bb]ar #No one should create article about it
.*pandora.* #This word is not allowed in any part of a page name

Each entry may also contain optional attributes, enclosed in <> and separated with |

  • autoconfirmed - also allows autoconfirmed users to perform such actions
  • casesensitive - don't ignore case when checking title for being blacklisted
  • noedit - users are also unable to edit these pages
  • moveonly - forbid moves but allow ordinary creation (rev:35163)
  • newaccountonly - forbid creation of matching usernames, but allow page creation (rev:38977)
  • reupload - allow reuploads of existing blacklisted files (rev:33656)
  • errmsg - the name of the message that should be displayed instead of standard

If the AntiSpoof extension is installed, you can also use the <antispoof> attribute.

What is referred to here as regular expressions are not proper regular expressions, but rather subpatterns that are inserted into a hard-coded regular expression. i.e. the subpattern Foo from above would create a regular expression like /^Foo$/usi.

Underscores ("_") in regular expressions will be converted to spaces by the extension, because titles are matched against its text form ("Page title" instead of "Page_title").

白名单

There is also a whitelist at MediaWiki:Titlewhitelist. The blacklist is applied first, then the whitelist. So user input that matches an entry on the blacklist is blocked, except if it matches an entry on the whitelist. You don't have to configure anything in LocalSettings.php in order to use the whitelist. Some of the optional attributes listed above, for the blacklist, also work for the whitelist, e.g. casesensitive.

自定义

警告消息

When an attempt to create a page is blocked due to a blacklisted title, a warning message is shown to the user. This can be customized via system messages

Custom messages can be defined by using the errmsg attribute.

範例:使用此扩展来限制新用户的创建

概念概览

The username for new accounts will be regarded by Titleblacklist differently to the way it regards new articles. Titleblacklist will prepend "User:" (or its localized equivalent) to the string that a user enters at Username on the create account page. So when Titleblacklist is performing matches with your Regex's, as found on MediaWiki:Titleblacklist or MediaWiki:Titlewhitelist, it will match against "User:" + <userinput>.

For example, imagine you want to block "jill" as a new user. Imagine you had a blacklist regex "jill.* <newaccountonly>" and a user enters "jill" as the username on the create account page. This will pass as the comparison Titleblacklist will make will be between "jill.*" (the regex) and "User:jill" (the constructed input string). These don't match and so "jill" is allowed (and you probably didn't intend this). To effect the intended block use a regex like ".*jill.* <newaccountonly>" or "User:jill.* <newaccountonly>" on MediaWiki:Titleblacklist.

If you want to block all users except for all those that do match a regex then block all users in MediaWiki:Titleblacklist and write the permissible regex in the MediaWiki:Titlewhitelist.

如何使用

If you would like to force all usernames, during account creation, to consist of exactly two names, space separated, with each name capitalized then do the following:

1. 安装TitleBlacklist.

2. 将以下内容添加至您的LocalSettings.php

wfLoadExtension( 'TitleBlacklist' );
$wgGroupPermissions['sysop']['tboverride'] = false; 
$wgTitleBlacklistSources = array(
  array(
    'type' => 'localpage',
    'src'  => 'MediaWiki:Titleblacklist'
  )
);

3. 在https://www.example.com/mywiki/MediaWiki:Titleblacklist中添加

# Block all user accounts, and only permit those that match the MediaWiki:Titlewhitelistregex 
.* <newaccountonly>

4. 在https://www.example.com/mywiki/MediaWiki:Titlewhitelist中添加

# Only allow two names, separated by a space, with each name capitalized. E.g "Fred Mew" OK, "Fred mew" fails, "Fredmew" fails.
# Depends on .* <newaccountonly> in blacklist
User:[A-Z][a-z]+\s[A-Z][a-z]+ <casesensitive>

5. 在https://www.example.com/mywiki/MediaWiki:Titleblacklist-forbidden-new-account中编辑

The user name "$2" has been blocked from creation. It matches the following blacklist entry: <code>$1</code>.

Please use a real name for the user name. User names need to be comprised of two names separated by a space. Each name must be capitalized.

E.g.:
* "Mary Smith". OK.
* "MarySmith". Invalid.
* "Mary smith". Invalid.
* "marysmith". Invalid.

User name creation (and article creation) blocking rules are controlled by MediaWiki:Titleblacklist and MediaWiki:Titlewhitelist. This message can be customized at MediaWiki:Titleblacklist-forbidden-new-account

Testing for matches

The API module action=titleblacklist can be used to test a title and action (e.g. edit, create, new-account) against the blacklist. Users with the 'tboverride' right should be sure to supply the tbnooverride parameter.

For example, if the blacklist contained the filter:

.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Disallows eleven or more of the same character repeated in usernames

you could use an API request like

If Scribunto is installed, TitleBlacklist allows for testing if particular titles and actions will match an entry in the blacklist using the mw.ext.TitleBlacklist.test function. If a match is found, the details for the matched entry are returned.

For example, if the blacklist contained the filter:

.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Disallows eleven or more of the same character repeated in usernames

running the function:

mw.ext.TitleBlacklist.test("new-account", "AAAAAAAAAAA")

would return the following table containing details about the matched entry:

{
	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> # Disallows eleven or more of the same character repeated in usernames",
	regex = ".*(.)\1{10}.*",
	version = 3
}


Resources on regular expressions

参见