# 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
return makeUrlLink(
{
protocol = 'http',
host = snippets.username
},
'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 = 'www.robtex.com',
path = '/ip/' .. snippets.username .. '.html',
fragment = 'whois'
},
'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}