125 lines
4.6 KiB
Lua
125 lines
4.6 KiB
Lua
|
|
-- No guests mod.
|
|
-- By VanessaE, sfan5, and kaeza.
|
|
-- more disallowed by crazyginger72
|
|
|
|
|
|
--added profanity filter to list
|
|
local disallowed = {
|
|
|
|
["[s]+[u]+[k]+[a4]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[s]+[u]+[c]+[a4]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[s]+[u]+[c]+[k]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[d]+[1il]+[c]+[k]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
["[c]+[u]+[n]+[t]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[n]+[1il]+[g]+[e3]+[r]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[s]+[h]+[1li]+[t]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[p]+[u]+[s]+[y]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[f]+[u]+[c]+[k]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[n]+[i1l]+[g]+[a4]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[t]+[w]+[4a]+[t]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[c]+[o0]+[c]+[k]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[b]+[i1l]+[t]+[c]+[h]+"] = "profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[p]+[u]+[s]+"] = "close to profanity names are not allowed" ..
|
|
"please choose a proper name",
|
|
|
|
["[c]+[r]+[4a]+[z]+[y]+[g]+[i1l]+[n]+[g]+[3e]+[r]+"] = "that is too close to the server owners name"..
|
|
"pick a new name",
|
|
|
|
["guest"] = "Guest accounts are disallowed on this server. "..
|
|
"Please choose a proper username and try again.",
|
|
["[4a]dm[1il]n"] = "That is a clearly false, misleading, or otherwise disallowed username. "..
|
|
"Please choose a unique username and try again.",
|
|
["^[0-9]+$"] = "All-numeric usernames are disallowed on this server. "..
|
|
"Please choose a proper username and try again.",
|
|
["[0-9].-[0-9].-[0-9].-[0-9].-[0-9]"] = "Too many numbers in your username. "..
|
|
"Please try again with less than five digits in your username."
|
|
}
|
|
|
|
-- Original implementation (in Python) by sfan5
|
|
local function judge(msg)
|
|
local numspeakable = 0
|
|
local numnotspeakable = 0
|
|
local cn = 0
|
|
local lastc = '____'
|
|
for c in msg:gmatch(".") do
|
|
c = c:lower()
|
|
if c:find("[aeiou0-9_-]") then
|
|
if cn > 2 and not c:find("[0-9]") then
|
|
numnotspeakable = numnotspeakable + 1
|
|
elseif not c:find("[0-9]") then
|
|
numspeakable = numspeakable + 1
|
|
end
|
|
cn = 0
|
|
else
|
|
if (cn == 1) and (lastc == c) and (lastc ~= 's') then
|
|
numnotspeakable = numnotspeakable + 1
|
|
cn = 0
|
|
end
|
|
if cn > 2 then
|
|
numnotspeakable = numnotspeakable + 1
|
|
cn = 0
|
|
end
|
|
if lastc:find("[aeiou]") then
|
|
numspeakable = numspeakable + 1
|
|
cn = 0
|
|
end
|
|
if not ((lastc:find("[aipfom]") and c == "r") or (lastc == "c" and c == "h")) then
|
|
cn = cn + 1
|
|
end
|
|
end
|
|
lastc = c
|
|
end
|
|
if cn > 0 then
|
|
numnotspeakable = numnotspeakable + 1
|
|
end
|
|
return (numspeakable >= numnotspeakable)
|
|
end
|
|
|
|
minetest.register_on_prejoinplayer(function(name, ip)
|
|
local lname = name:lower()
|
|
|
|
if name ~= "crazyginger72" then
|
|
for re, reason in pairs(disallowed) do
|
|
if lname:find(re) then
|
|
return reason
|
|
end
|
|
end
|
|
|
|
if #name < 2 then
|
|
return "Too short of a username. "..
|
|
"Please pick a name with at least two letters and try again."
|
|
end
|
|
|
|
if not judge(name) and #name > 5 then
|
|
return "Your username just plain looks like gibberish. "..
|
|
"Please pick something readable and try again."
|
|
end
|
|
end
|
|
end)
|