# Module:Checkuser

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 = '&nbsp;<b>&middot;</b>&#32;'
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
local args = getArgs
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>No username provided.</strong>' ..
''
end
local span = mw.html.create('span'):attr('class', 'plainlinks cuEntry')
local curtitle = mw.title.getCurrentTitle
local links = {
'பேச்சு' ..
'<sup><span>' ..
link('User talk:' .. sock, {
action = 'edit',
section = 'new'
}, '<span>+</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
''
end
return param
end), 'tag'),
'பங்களிப்புகள்' ..
'<span>',
'நீக்கப்பட்ட பங்களிப்புகள்' ..
'</span>',
link('Special:Log', {
user = sock
}, 'logs'),
link('Special:AbuseLog', {
wpSearchUser = sock
}, 'filter log') ..
'<span>',
'பயனரைத் தடு' ..
(function
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpBlockAddress = sock,
wpExpiry = 'indefinite',
wpReason = 'Abusing 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'),
'CA' ..
'<span>',
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('//checkuser.wikimedia.org/w/index.php'):extend({
title = 'Special:Search',
search = sock,
ns0 = 1,
ns2 = 1,
ns14 = 1
})),
'cuwiki'
) ..
'</span>'
}
span = span:wikitext(table.concat({
noping(sock),
'(' .. table.concat(links, middot) .. ')'
}, ' '))
return tostring(span) .. '__NOINDEX__'
end  
function p.ip
local args = getArgs
return p._ip(args['User'] or args[1], args['master name'])
end  
function p._ip(ip, mastername)
if not ip then
return (
'<strong>No username provided.</strong>' ..
''
end
local span = mw.html.create('span'):attr('class', 'plainlinks neverexpand cuEntry')
local curtitle = mw.title.getCurrentTitle
local links = {
'talk' ..
'<sup><span>' ..
link('User talk:' .. ip, {
action = 'edit',
section = 'new'
}, '<span>+</span>') ..
'</span></sup>',
link('User:' .. ip, {
action = 'edit',
preload = 'Template:Checkip/Preload',
['preloadparams[]'] = (
mastername and
mastername or
''
}, 'tag'),
'பங்களிப்புகள்',
link('Special:AbuseLog', {
wpSearchUser = ip
}, 'filter log'),
extlink(
tostring(mw.uri.new('//tools.wmflabs.org/whois/gateway.py'):extend({
lookup = 'true',
ip = ip
})),
'WHOIS'
),
extlink(
tostring(mw.uri.new('//www.robtex.com/rbls/' .. ip .. '.html')),
'RBLs'
),
extlink(
tostring(mw.uri.new('//ipcheck.toolforge.org/index.php'):extend({
ip = ip
})),
'proxy check'
) ..
'<span>',
'பயனரைத் தடு' .. (function
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpTarget = ip,
wpReason = 'Abusing 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('//guc.toolforge.org/'):extend({
by = 'date',
user = ip
})),
'cross-wiki contribs'
) ..
'<span>',
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