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.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.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 = '/rbls/' .. snippets.username .. '.html',		},		'RBLs'	) end

function linkFunctions.rdns(snippets) -- Reverse DNS lookup return makeUrlLink(		{			protocol = 'http',			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 = 'http',			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}