diff --git a/client/multiplayer/room.js b/client/multiplayer/room.js index 8cec8787..7c8a6643 100644 --- a/client/multiplayer/room.js +++ b/client/multiplayer/room.js @@ -38,6 +38,7 @@ socket.onmessage = function (event) { switch (data.type) { case 'error': socket.close(3000); + alert(data.error); window.location.href = '/multiplayer'; break; diff --git a/server/banned-usernames.js b/server/banned-usernames.js index 22245eab..a9e612e6 100644 --- a/server/banned-usernames.js +++ b/server/banned-usernames.js @@ -1,7 +1,7 @@ // source: https://gist.github.com/theskumar/54be20713e53d418bf02 // can add to this list in the future -const banList1 = [ +export const reservedNames = [ 'about', 'access', 'account', 'accounts', 'add', 'address', 'adm', 'admin', 'administration', 'adult', 'advertising', 'affiliate', 'affiliates', 'ajax', 'analytics', 'android', 'anon', 'anonymous', 'api', 'app', 'apps', 'archive', 'atom', 'auth', 'authentication', 'avatar', 'backup', 'banner', 'banners', 'bin', 'billing', 'blog', 'blogs', 'board', 'bot', 'bots', 'business', 'chat', 'cache', 'cadastro', 'calendar', 'campaign', 'careers', 'cgi', 'client', 'cliente', 'code', 'comercial', 'compare', 'config', 'connect', 'contact', 'contest', 'create', 'code', 'compras', 'css', @@ -28,10 +28,29 @@ const banList1 = [ 'yourusername', 'yoursite', 'yourdomain', ]; -const banList2 = [ - 'anal', 'anus', 'arse', 'ass', 'ballsack', 'balls', 'bastard', 'bitch', 'biatch', 'bloody', 'blowjob', 'bollock', 'bollok', 'boner', 'boob', 'bugger', 'bum', 'butt', 'buttplug', 'clitoris', 'cock', 'coon', 'crap', 'cunt', 'damn', 'dick', 'dildo', 'dyke', 'fag', 'feck', 'fellate', 'fellatio', 'felching', 'fuck', 'fudgepacker', 'fudge', 'packer', 'flange', 'Goddamn', 'God', 'damn', 'hell', 'homo', 'jerk', 'jizz', 'knobend', 'knob', 'end', 'labia', 'lmao', 'lmfao', 'muff', 'nigger', 'nigga', 'omg', 'penis', 'piss', 'poop', 'prick', 'pube', 'pussy', 'queer', 'scrotum', 'sex', 'shit', 'sh1t', 'slut', 'smegma', 'spunk', 'tit', 'tosser', 'turd', 'twat', 'vagina', 'wank', 'whore', 'wtf', '', +export const inappropriateNames = [ + 'anal', 'anus', 'arse', 'ass', + 'ballsack', 'balls', 'bastard', 'bbc', + 'bitch', 'biatch', 'bloody', 'blowjob', + 'bollock', 'bollok', 'boner', 'boob', + 'bugger', 'bum', 'butt', 'buttplug', + 'clitoris', 'cock', 'coon', 'crap', 'cum', + 'cunt', 'damn', 'dick', 'dildo', 'dyke', + 'edge', 'fag', 'feck', 'fellate', 'fellatio', + 'felching', 'fuck', 'fudgepacker', 'fudge', + 'packer', 'flange', 'Goddamn', 'God', 'gyat', + 'hell', 'homo', 'horn', 'jerk', 'jizz', + 'knobend', 'knob', 'labia', 'lmao', + 'lmfao', 'muff', 'nigg', 'niqq', 'omg', + 'penis', 'piss', 'poop', 'prick', 'pube', + 'pussy', 'queer', 'rizz', 'scrotum', 'sex', + 'sigma', 'shit', 'sh1t', 'slut', 'smegma', + 'spunk', 'tiktok', 'tit', 'toilet', 'tosser', + 'turd', 'twat', 'vagina', 'wank', 'whore', + 'wtf', ]; -const banList = banList1.concat(banList2); +const banList = reservedNames.concat(inappropriateNames); +banList.push(''); export default banList; diff --git a/server/server.js b/server/server.js index d288050f..802ecae9 100644 --- a/server/server.js +++ b/server/server.js @@ -1,5 +1,6 @@ import 'dotenv/config'; +import { inappropriateNames } from './banned-usernames.js'; import { ipFilterMiddleware, ipFilterError } from './ip-filter.js'; import { createAndReturnRoom } from './TossupRoom.js'; @@ -41,6 +42,11 @@ wss.on('connection', (ws, req) => { isPrivate = (isPrivate === 'true'); userId = (userId === 'unknown') ? uuid.v4() : userId; + if (inappropriateNames.some((name) => roomName.toLowerCase().includes(name.toLowerCase()))) return ws.send(JSON.stringify({ + type: 'error', + error: 'The room name contains an inappropriate word', + })); + const room = createAndReturnRoom(roomName, isPrivate); if (room.settings.lock === false) { room.connection(ws, userId, username);