Module:Checkuser
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Checkuser/doc
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' ) .. '</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