Module:UserLinks/extra
Jump to navigation
Jump to search
Documentation for this module may be created at Module:UserLinks/extra/doc
-------------------------------------------------------------------------------- -- 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 = '/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}