Difference between revisions of "Module:UserLinks/extra"
Jump to navigation
Jump to search
blackwiki>Hut 8.5 m (Changed protection level for "Module:UserLinks/extra": Highly visible template, 20000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))) |
m (22 revisions imported) |
||
| (4 intermediate revisions by 3 users not shown) | |||
| Line 47: | Line 47: | ||
function linkFunctions.http(snippets) | function linkFunctions.http(snippets) | ||
-- To see if an IP is serving a web page | -- 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( | return makeUrlLink( | ||
{ | { | ||
protocol = 'http', | protocol = 'http', | ||
| − | host = | + | host = host |
}, | }, | ||
'http' | 'http' | ||
| Line 151: | Line 163: | ||
{ | { | ||
protocol = 'https', | protocol = 'https', | ||
| − | host = ' | + | host = 'tools.wmflabs.org', |
| − | path = '/ | + | path = '/whois/gateway.py', |
| − | + | query = { | |
| + | lookup = 'true', | ||
| + | ip = snippets.username, | ||
| + | }, | ||
}, | }, | ||
'WHOIS' | 'WHOIS' | ||
Latest revision as of 05:03, 30 September 2020
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 = '/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}