diff --git a/client/styles/game.css b/client/styles/game.css index f6950b3..ecdddc9 100644 --- a/client/styles/game.css +++ b/client/styles/game.css @@ -38,6 +38,10 @@ h1 { } #game-link { + user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/server/config/globals.js b/server/config/globals.js index 3fbaf20..a943580 100644 --- a/server/config/globals.js +++ b/server/config/globals.js @@ -24,6 +24,13 @@ const globals = { ENVIRONMENT: { LOCAL: "local", PRODUCTION: "production" + }, + LOG_LEVEL: { + INFO: "info", + DEBUG: "debug", + ERROR: "error", + WARN: "warn", + TRACE: "trace" } }; diff --git a/server/main.js b/server/main.js index 53640eb..5bf5dc8 100644 --- a/server/main.js +++ b/server/main.js @@ -15,23 +15,30 @@ app.use(bodyParser.urlencoded({ // to support URL-encoded bodies extended: true })); - let main, environment; -const debugMode = Array.from(process.argv.map((arg) => arg.trim().toLowerCase())).includes('debug'); -const localServer = Array.from(process.argv.map((arg) => arg.trim().toLowerCase())).includes('local'); -const useHttps = Array.from(process.argv.map((arg) => arg.trim().toLowerCase())).includes('https'); -const port = process.env.PORT || Array - .from(process.argv.map((arg) => { - return arg.trim().toLowerCase(); - })) +let args = Array.from(process.argv.map((arg) => arg.trim().toLowerCase())); + +const localServer = args.includes('local'); +const useHttps = args.includes('https'); +const port = process.env.PORT || args .filter((arg) => { return /port=\d+/.test(arg); }) .map((arg) => { return /port=(\d+)/.exec(arg)[1]; })[0] || 5000; -const logger = require('./modules/Logger')(debugMode); +const logLevel = process.env.LOG_LEVEL || args + .filter((arg) => { + return /loglevel=[a-zA-Z]+/.test(arg); + }) + .map((arg) => { + return /loglevel=([a-zA-Z]+)/.exec(arg)[1]; + })[0] || globals.LOG_LEVEL.INFO; + +const logger = require('./modules/Logger')(logLevel); + +logger.log('LOG LEVEL IS: ' + logLevel) if (localServer) { environment = globals.ENVIRONMENT.LOCAL; @@ -99,5 +106,5 @@ inGame.on('connection', function (socket) { }); main.listen(port, function () { - logger.log(`Starting server on port ${port} http://localhost:${port}` ); + logger.log(`Starting server on port ${port}` ); }); diff --git a/server/model/Person.js b/server/model/Person.js index 878d1d2..1df969e 100644 --- a/server/model/Person.js +++ b/server/model/Person.js @@ -7,6 +7,7 @@ class Person { this.gameRole = gameRole; this.gameRoleDescription = gameRoleDescription; this.assigned = assigned; + this.out = false; } } diff --git a/server/modules/GameManager.js b/server/modules/GameManager.js index 6676de8..348fbab 100644 --- a/server/modules/GameManager.js +++ b/server/modules/GameManager.js @@ -164,11 +164,11 @@ function handleRequestForGameState(namespace, logger, gameRunner, accessCode, pe } if (matchingPerson) { if (matchingPerson.socketId === socket.id) { - logger.debug("matching person found with an established connection to the room: " + matchingPerson.name); + logger.trace("matching person found with an established connection to the room: " + matchingPerson.name); ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson)); } else { if (!roomContainsSocketOfMatchingPerson(namespace, matchingPerson, logger, accessCode)) { - logger.debug("matching person found with a new connection to the room: " + matchingPerson.name); + logger.trace("matching person found with a new connection to the room: " + matchingPerson.name); socket.join(accessCode); matchingPerson.socketId = socket.id; ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson)); @@ -179,14 +179,14 @@ function handleRequestForGameState(namespace, logger, gameRunner, accessCode, pe } else { let personWithMatchingSocketId = findPersonWithMatchingSocketId(game.people, socket.id); if (personWithMatchingSocketId) { - logger.debug("matching person found whose cookie got cleared after establishing a connection to the room: " + personWithMatchingSocketId.name); + logger.trace("matching person found whose cookie got cleared after establishing a connection to the room: " + personWithMatchingSocketId.name); ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, personWithMatchingSocketId)); } else { let unassignedPerson = game.moderator.assigned === false ? game.moderator : game.people.find((person) => person.assigned === false); if (unassignedPerson) { - logger.debug("completely new person with a first connection to the room: " + unassignedPerson.name); + logger.trace("completely new person with a first connection to the room: " + unassignedPerson.name); socket.join(accessCode); unassignedPerson.assigned = true; unassignedPerson.socketId = socket.id; diff --git a/server/modules/Logger.js b/server/modules/Logger.js index 0e8ce41..d0d1a5c 100644 --- a/server/modules/Logger.js +++ b/server/modules/Logger.js @@ -1,26 +1,44 @@ -module.exports = function (debugMode = false) { +const globals = require('../config/globals'); + +module.exports = function (logLevel = globals.LOG_LEVEL.INFO) { return { log (message = '') { const now = new Date(); console.log('LOG ', now.toGMTString(), ': ', message); }, + warn (message = '') { + if (logLevel === globals.LOG_LEVEL.INFO) return; + const now = new Date(); + console.error('WARN ', now.toGMTString(), ': ', message); + }, + debug (message = '') { - if (!debugMode) return; + if (logLevel === globals.LOG_LEVEL.INFO || logLevel === globals.LOG_LEVEL.WARN) return; const now = new Date(); console.debug('DEBUG ', now.toGMTString(), ': ', message); }, error (message = '') { - if (!debugMode) return; + if ( + logLevel === globals.LOG_LEVEL.INFO + || logLevel === globals.LOG_LEVEL.WARN + || logLevel === globals.LOG_LEVEL.DEBUG + ) { return; } const now = new Date(); console.error('ERROR ', now.toGMTString(), ': ', message); }, - warn (message = '') { - if (!debugMode) return; + trace(message = '') { + if ( + logLevel === globals.LOG_LEVEL.INFO + || logLevel === globals.LOG_LEVEL.WARN + || logLevel === globals.LOG_LEVEL.DEBUG + || logLevel === globals.LOG_LEVEL.ERROR + ) { return; } + const now = new Date(); - console.error('WARNING ', now.toGMTString(), ': ', message); + console.error('TRACE ', now.toGMTString(), ': ', message); } }; };