-------------------------------------------------------------------------------- -- 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', 		}, 		'留言' 	) 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', 		'沙盒' 	) 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 			} 		}, 		'全域貢獻' 	) 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, 		'變更權限' 	) end  return {linkFunctions = linkFunctions}