Wiki Article
Module:Checkuser
Nguồn dữ liệu từ Wikipedia, hiển thị bởi DefZone.Net
| This module is rated as ready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned on help pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed through sandbox testing rather than repeated trial-and-error editing. |
| This module is currently protected from editing. See the protection policy and protection log for more details. Please discuss any changes on the talk page; you may submit an edit request to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected. |
| This Lua module is used on approximately 88,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
| This module depends on the following other modules: |
local p = {}
local getArgs = function(fr)
return require('Module:Arguments').getArgs(fr, {
trim = true,
removeBlanks = true
})
end
local noping = function(name)
return require('Module:No ping')._main({name})
end
local middot = ' <b>·</b> '
local spi = 'Wikipedia:Sockpuppet investigations'
local extlink = function(url, text)
return '[' .. tostring(url) .. (text and ' ' .. text or '') .. ']'
end
local link = function(page, param, text)
return extlink(mw.uri.fullUrl(page, param), text)
end
function p.user(frame)
local args = getArgs(frame)
return p._user(args['User'] or args[1], args['master name'], args['master'])
end
function p._user(sock, mastername, master)
if not sock then
return (
'<strong class="error">No username provided.</strong>' ..
'[[Category:Checkuser with no specified user]]'
)
end
local span = mw.html.create('span'):attr('class', 'plainlinks cuEntry')
local curtitle = mw.title.getCurrentTitle()
local links = {
'[[User talk:' .. sock .. '|talk]]' ..
'<sup><span style="font-size: 120%;">' ..
link('User talk:' .. sock, {
action = 'edit',
section = 'new'
}, '<span style="color: grey;">+</span>') ..
'</span></sup>',
link('User:' .. sock, (function()
local param = {
action = 'edit',
preload = 'Template:Checkuser/Preload' .. (master == 'yes' and ' master' or '')
}
if master ~= 'yes' then
param['preloadparams[]'] = (
mastername and
mastername or
'<!-- insert sock master here -->'
)
end
return param
end)(), 'tag'),
'[[Special:Contributions/' .. sock .. '|contribs]]' ..
'<span class="sysop-show">',
'[[Special:DeletedContributions/' .. sock .. '|deleted contribs]]' ..
'</span>',
link('Special:Log', {
user = sock
}, 'logs'),
link('Special:AbuseLog', {
wpSearchUser = sock
}, 'filter log') ..
'<span class="sysop-show">',
'[[Special:Block/' .. sock .. '|block user]]' ..
(function()
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpBlockAddress = sock,
wpExpiry = 'indefinite',
wpReason = 'Abusing [[WP:Sock puppetry|multiple accounts]]',
['wpReason-other'] = 'Please see: [[:w:en:' .. spi .. '/' ..
mw.text.split(curtitle.text, '/')[2] ..
']]'
}, 'spi block')
)
else
return ''
end
end)() ..
'</span>',
link('Special:Log/block', {
page = 'User:' .. sock
}, 'block log'),
'[[:m:Special:CentralAuth/' .. sock .. '|CA]]' ..
'<span class="cuLink checkuser-show">',
link('Special:CheckUser', (function()
local param = {
user = sock
}
if mw.text.split(curtitle.prefixedText, '/')[1] == spi then
param['reason'] = sock .. ' from [[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'CheckUser') ..
'(' .. link('Special:CheckUserLog', {
cuSearch = sock
}, 'log') .. ')',
link('Special:Investigate', (function()
local param = {
targets = sock
}
if curtitle.prefixedText == spi .. '/' .. table.concat({
mw.text.split(curtitle.prefixedText, '/')[2],
mw.text.split(curtitle.prefixedText, '/')[3]
}, '/') then
param['reason'] = sock .. ' from [[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'investigate'),
extlink(
tostring(mw.uri.new('https://checkuser.wikimedia.org/w/index.php'):extend({
title = 'Special:Search',
search = sock,
ns0 = 1,
ns2 = 1,
ns14 = 1
})),
'cuwiki'
) .. middot .. ' ' .. link(
'Special:SuggestedInvestigations',
'username=' .. sock,
'SI'
) .. '</span>'
}
span = span:wikitext(table.concat({
noping(sock),
'(' .. table.concat(links, middot) .. ')'
}, ' '))
return tostring(span) .. '__NOINDEX__'
end
function p.ip(frame)
local args = getArgs(frame)
return p._ip(args['User'] or args[1], args['master name'])
end
function p._ip(ip, mastername)
if not ip then
return (
'<strong class="error">No username provided.</strong>' ..
'[[Category:Checkip with no specified IP]]'
)
end
local span = mw.html.create('span'):attr('class', 'plainlinks neverexpand cuEntry')
local curtitle = mw.title.getCurrentTitle()
local links = {
'[[User talk:' .. ip .. '|talk]]' ..
'<sup><span style="font-size: 120%;">' ..
link('User talk:' .. ip, {
action = 'edit',
section = 'new'
}, '<span style="color: grey">+</span>') ..
'</span></sup>',
link('User:' .. ip, {
action = 'edit',
preload = 'Template:Checkip/Preload',
['preloadparams[]'] = (
mastername and
mastername or
'<!-- Insert sock master name here -->'
)
}, 'tag'),
'[[Special:Contributions/' .. ip .. '|contribs]]',
link('Special:AbuseLog', {
wpSearchUser = ip
}, 'filter log'),
extlink(
tostring(mw.uri.new('https://whois-referral.toolforge.org/gateway.py'):extend({
lookup = 'true',
ip = ip
})),
'WHOIS'
),
extlink(
tostring(mw.uri.new('https://www.robtex.com/rbls/' .. ip .. '.html')),
'RBLs'
),
extlink(
tostring(mw.uri.new('https://ipcheck.toolforge.org/index.php'):extend({
ip = ip
})),
'proxy check'
) ..
'<span class="sysop-show">',
'[[Special:Block/' .. ip .. '|block user]]' .. (function()
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpTarget = ip,
wpReason = 'Abusing [[WP:Sock puppetry|multiple accounts]]',
['wpReason-other'] = 'Please see: [[:w:en:' .. spi .. '/' ..
mw.text.split(curtitle.text, '/')[2] ..
']]'
}, 'spi block')
)
else
return ''
end
end)() ..
'</span>',
link('Special:Log/block', {
page = 'User:' .. ip
}, 'block log'),
extlink(
tostring(mw.uri.new('https://guc.toolforge.org/'):extend({
by = 'date',
user = ip
})),
'cross-wiki contribs'
) ..
'<span class="cuLink checkuser-show">',
link('Special:CheckUser', (function()
local param = {
ip = ip
}
if curtitle.prefixedText == spi .. '/' .. table.concat({
mw.text.split(curtitle.prefixedText, '/')[2],
mw.text.split(curtitle.prefixedText, '/')[3]
}, '/') then
param['reason'] = '[[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'CheckUser') .. ' ' ..
'(' .. link('Special:CheckUserLog', {
cuSearch = ip
}, 'log') .. ')' ..
'</span>'
}
span = span:wikitext(table.concat({
noping(ip),
'(' .. table.concat(links, middot) .. ')'
}, ' '))
return tostring(span)
end
return p