-- 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:ব্যবহারকারী সংযোগ/শেয়ারকৃত') 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.bd', 			path = '/search', 			query = {q = snippets.username}, 		}, 		'গুগল' 	) 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', 		}, 		'বার্তা' 	) 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 .. '/খেলাঘর', 		'খেলাঘর' 	) 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, 		'ব্যবহারকারী সৃষ্টি' 	) 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, 		'ব্যবহারকারী পাতায় সংযোগসমূহ' 	) end  function linkFunctions.cr(snippets) 	-- Change rights 	return makeWikilink( 		snippets.interwiki, 		-1, 		'UserRights/' .. snippets.username, 		'অধিকার পরিবর্তন' 	) end  return {linkFunctions = linkFunctions}