Module:UserLinks/extra

--------------------------------------------------------------------------------

-- This module holds extra link functions for use with Module:UserLinks.

--

-- It is intended for experimenting with new link functions that will eventually

-- be added to the main module code.

--

-- Since this module is transcluded in only a small number of pages, changes

-- should cause little server overhead and should propagate quickly.

--

-- Link functions using the same link code as a function in the main module will

-- be ignored; please give your function a unique code.

--------------------------------------------------------------------------------

-- Load shared helper functions

local mShared = require('Module:UserLinks/shared')

local raiseError = mShared.raiseError

local makeWikitextError = mShared.makeWikitextError

local makeWikilink = mShared.makeWikilink

local makeUrlLink = mShared.makeUrlLink

local makeFullUrlLink = mShared.makeFullUrlLink

local message = mShared.message

local linkFunctions = {}

function linkFunctions.coibot(snippets)

-- COIBot report

return makeWikilink(

nil,

4,

'WikiProject Spam/UserReports/' .. snippets.username,

'COIBot'

)

end

function linkFunctions.fa(snippets)

-- Former admin label

return message('display-formeradmin')

end

function linkFunctions.ggl(snippets)

-- Google search for the username

return makeUrlLink(

{

host = 'www.google.com',

path = '/search',

query = {q = snippets.username},

},

'Google'

)

end

function linkFunctions.http(snippets)

-- To see if an IP is serving a web page

local host = snippets.username

if not host:match('^%d+%.%d+%.%d+%.%d+$') then

if host:match('^[%x:]+$') then

-- It's IPv6, use RFC 3986 IP-Literal syntax

host = '[' .. host .. ']'

else

-- It's neither IPv4 nor IPv6, return nothing

return ''

end

end

return makeUrlLink(

{

protocol = 'http',

host = host

},

'http'

)

end

function linkFunctions.lr(snippets)

-- Local rights

return makeFullUrlLink(

snippets.interwiki,

-1,

'Log',

{page = 'User:' .. snippets.username},

message('display-localrights')

)

end

function linkFunctions.mr(snippets)

-- Meta user rights

return makeFullUrlLink(

'meta',

-1,

'Log',

{page = 'User:' .. snippets.username .. '@enwiki'},

message('display-metarights')

)

end

function linkFunctions.msg(snippets)

-- New message on user talk page

return makeFullUrlLink(

snippets.interwiki,

3,

snippets.username,

{

action = 'edit',

section = 'new',

},

'message'

)

end

function linkFunctions.rbl(snippets)

-- Realtime blacklists

return makeUrlLink(

{

protocol = 'https',

host = 'www.robtex.com',

path = '/ip-lookup/' .. snippets.username .. '#dnsbl',

},

'RBLs'

)

end

function linkFunctions.rdns(snippets)

-- Reverse DNS lookup

return makeUrlLink(

{

protocol = 'https',

host = 'www.dnswatch.info',

path = '/dns/dnslookup',

query = {

la = 'en',

host = snippets.username,

submit = 'Resolve'

}

},

'RDNS'

)

end

function linkFunctions.sbx(snippets)

-- User sandbox

return makeWikilink(

snippets.interwiki,

2,

snippets.username .. '/sandbox',

'sandbox'

)

end

function linkFunctions.sfs(snippets)

-- StopForumSpam

return makeUrlLink(

{

protocol = 'https',

host = 'www.stopforumspam.com',

path = '/search/' .. snippets.username,

},

'StopForumSpam'

)

end

function linkFunctions.sul2(snippets)

-- Global contribs, Luxo's tool

return makeUrlLink(

{

host = 'tools.wmflabs.org',

path = '/guc/index.php',

query = {

user = snippets.username,

lang = snippets.toolLang

}

},

'global contribs'

)

end

function linkFunctions.uc(snippets)

-- User creation

return makeWikilink(

snippets.interwiki,

-1,

'Log/newusers/' .. snippets.username,

'user creation'

)

end

function linkFunctions.whois(snippets)

-- WHOIS information for IPs

return makeUrlLink(

{

protocol = 'https',

host = 'tools.wmflabs.org',

path = '/whois/gateway.py',

query = {

lookup = 'true',

ip = snippets.username,

},

},

'WHOIS'

)

end

function linkFunctions.wlh(snippets)

-- Links to user page (what links here)

return makeWikilink(

snippets.interwiki,

-1,

'WhatLinksHere/'

.. mw.site.namespaces[2].name

.. ':'

.. snippets.username,

'links to user page'

)

end

function linkFunctions.cr(snippets)

-- Change rights

return makeWikilink(

snippets.interwiki,

-1,

'UserRights/' .. snippets.username,

'change rights'

)

end

return {linkFunctions = linkFunctions}