From: Luigi Pinca Date: Sat, 1 Jul 2023 10:38:13 +0000 (+0200) Subject: replaced redis with ioredis X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=a16075e8aaac302465a5a43fd6984e0c5e90f327;p=binbsis50.git replaced redis with ioredis --- diff --git a/lib/middleware/ban-handler.js b/lib/middleware/ban-handler.js index 2f84383..ad4eb3a 100644 --- a/lib/middleware/ban-handler.js +++ b/lib/middleware/ban-handler.js @@ -13,7 +13,7 @@ module.exports = function(req, res, next) { const address = forwarded(req, req.headers); - db.ttl(['ban:' + address.ip], function(err, ttl) { + db.ttl('ban:' + address.ip, function(err, ttl) { if (err) { return next(err); } diff --git a/lib/redis-clients.js b/lib/redis-clients.js index be060a6..0a1773d 100644 --- a/lib/redis-clients.js +++ b/lib/redis-clients.js @@ -1,13 +1,13 @@ 'use strict'; -const redis = require('redis'); +const Redis = require('ioredis'); /** * Setting up redis clients. */ -const songsclient = redis.createClient({ auth_pass: process.env.DB_AUTH }); -const usersclient = redis.createClient({ auth_pass: process.env.DB_AUTH }); +const songsclient = new Redis({ password: process.env.DB_AUTH }); +const usersclient = new Redis({ db: 1, password: process.env.DB_AUTH }); songsclient.on('error', function(err) { console.error(err.message); @@ -17,8 +17,6 @@ usersclient.on('error', function(err) { console.error(err.message); }); -usersclient.select(1); - /** * Expose the clients */ diff --git a/lib/rooms.js b/lib/rooms.js index c955b97..bd40488 100644 --- a/lib/rooms.js +++ b/lib/rooms.js @@ -228,7 +228,7 @@ Room.prototype.gameOver = function() { Room.prototype.initialize = function() { const room = this; - songsdb.zcard([this.roomname], function(err, card) { + songsdb.zcard(this.roomname, function(err, card) { if (err) { throw err; } @@ -343,7 +343,7 @@ Room.prototype.onKick = function(who, why, executor, duration, callback) { duration = 0; } - usersdb.hget(['user:' + executor, 'role'], function(err, role) { + usersdb.hget('user:' + executor, 'role', function(err, role) { if (err) { console.error(err.message); return callback(true); @@ -427,7 +427,7 @@ Room.prototype.join = function(spark, nickname) { } // Check if requested nickname belongs to a registered user - usersdb.exists(['user:' + nickname], function(err, exists) { + usersdb.exists('user:' + nickname, function(err, exists) { if (!primus.spark(spark.id)) { if (err) { console.error(err.message); @@ -516,7 +516,7 @@ Room.prototype.sendLoadTrack = function() { const index = randInt(this.trackscount); const room = this; - songsdb.zrange([this.roomname, index, index], function(err, res) { + songsdb.zrange(this.roomname, index, index, function(err, res) { if (err) { throw err; } @@ -530,14 +530,12 @@ Room.prototype.sendLoadTrack = function() { room.playedtracks.push(id); songsdb.hmget( - [ - 'song:' + id, - 'artistName', - 'trackName', - 'previewUrl', - 'artworkUrl60', - 'trackViewUrl' - ], + 'song:' + id, + 'artistName', + 'trackName', + 'previewUrl', + 'artworkUrl60', + 'trackViewUrl', function(err, replies) { if (err) { throw err; diff --git a/lib/sparks.js b/lib/sparks.js index 535f1a8..b41db74 100644 --- a/lib/sparks.js +++ b/lib/sparks.js @@ -79,7 +79,7 @@ function authorize(req, authorized) { console.error(err.message); return authorized(err); } - db.exists(['ban:' + req.forwarded.ip], function(err, exists) { + db.exists('ban:' + req.forwarded.ip, function(err, exists) { if (err) { console.error(err.message); return authorized(err); diff --git a/lib/stats.js b/lib/stats.js index 2f81f7b..6fc3dfa 100644 --- a/lib/stats.js +++ b/lib/stats.js @@ -50,44 +50,44 @@ module.exports = function(username, stats) { const key = 'user:' + username; const multi = db.multi(); if (stats.guesstime) { - const args = [ + db.hmget( key, 'bestscore', 'bestguesstime', 'worstguesstime', 'totguesstime', - 'guessed' - ]; - db.hmget(args, function(err, replies) { - if (err) { - return console.error(err.message); - } - if (stats.guesstime < 1000) { - stats.guesstime = - replies[4] !== '0' ? Math.round(replies[3] / replies[4]) : 15000; - } - if (stats.userscore > replies[0]) { - // Set personal best - multi.hset(key, 'bestscore', stats.userscore); + 'guessed', + function(err, replies) { + if (err) { + return console.error(err.message); + } + if (stats.guesstime < 1000) { + stats.guesstime = + replies[4] !== '0' ? Math.round(replies[3] / replies[4]) : 15000; + } + if (stats.userscore > replies[0]) { + // Set personal best + multi.hset(key, 'bestscore', stats.userscore); + } + // Update the number of guessed tracks + multi.hincrby(key, 'guessed', 1); + // Update total guess time + multi.hincrby(key, 'totguesstime', stats.guesstime); + // Set best answer time + if (stats.guesstime < replies[1]) { + multi.hset(key, 'bestguesstime', stats.guesstime); + } + // Set worst answer time + if (stats.guesstime > replies[2]) { + multi.hset(key, 'worstguesstime', stats.guesstime); + } + updateStats(key, multi, username, stats); } - // Update the number of guessed tracks - multi.hincrby(key, 'guessed', 1); - // Update total guess time - multi.hincrby(key, 'totguesstime', stats.guesstime); - // Set best answer time - if (stats.guesstime < replies[1]) { - multi.hset(key, 'bestguesstime', stats.guesstime); - } - // Set worst answer time - if (stats.guesstime > replies[2]) { - multi.hset(key, 'worstguesstime', stats.guesstime); - } - updateStats(key, multi, username, stats); - }); + ); return; } if (stats.userscore) { - db.hget([key, 'bestscore'], function(err, bestscore) { + db.hget(key, 'bestscore', function(err, bestscore) { if (err) { return console.error(err.message); } diff --git a/lib/utils.js b/lib/utils.js index 8f2a8d2..0c11e24 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -123,7 +123,7 @@ exports.sortParams = function(offset) { exports.unban = function(ip, spark, callback) { const issuedby = spark.nickname; - db.hget(['user:' + issuedby, 'role'], function(err, role) { + db.hget('user:' + issuedby, 'role', function(err, role) { if (err) { console.error(err.message); // Fail silently in case of error @@ -142,7 +142,7 @@ exports.unban = function(ip, spark, callback) { } // List all banned players - db.keys(['ban:*'], function(err, replies) { + db.keys('ban:*', function(err, replies) { if (err) { return console.error(err.message); } @@ -154,7 +154,7 @@ exports.unban = function(ip, spark, callback) { replies.forEach(function(key) { const bannedip = key.slice(4); - db.get([key], function(err, reply) { + db.get(key, function(err, reply) { if (err) { return console.error(err.message); } diff --git a/package.json b/package.json index c71a3be..b7fc851 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "primus-emitter": "^3.1.1", "primus-rooms": "^3.4.1", "pug": "^3.0.2", - "redis": "^3.0.2", + "ioredis": "^5.3.2", "serve-favicon": "^2.5.0", "uglify-js": "^3.5.4", "ws": "^7.2.1" diff --git a/routes/site.js b/routes/site.js index 7f22f26..f1ce13b 100644 --- a/routes/site.js +++ b/routes/site.js @@ -16,11 +16,11 @@ const rooms = require('../lib/rooms').rooms; const subTask = function(genre) { return function(callback) { const index = randInt(rooms[genre].trackscount); - db.zrange([genre, index, index], function(err, res) { + db.zrange(genre, index, index, function(err, res) { if (err) { return callback(err); } - db.hget(['song:' + res[0], 'artworkUrl100'], callback); + db.hget('song:' + res[0], 'artworkUrl100', callback); }); }; }; diff --git a/routes/user.js b/routes/user.js index d381733..15ce7b3 100644 --- a/routes/user.js +++ b/routes/user.js @@ -22,7 +22,7 @@ for (let i = 0; i < rooms.length; i++) { */ exports.leaderboards = function(req, res, next) { - db.zrevrange(['users', 0, 29, 'withscores'], function(err, pointsresults) { + db.zrevrange('users', 0, 29, 'withscores', function(err, pointsresults) { if (err) { return next(err); } @@ -49,7 +49,7 @@ exports.sliceLeaderboard = function(req, res, next) { } const end = begin + 29; if (by === 'points') { - db.zrevrange(['users', begin, end, 'withscores'], function(err, results) { + db.zrevrange('users', begin, end, 'withscores', function(err, results) { if (err) { return next(err); } @@ -101,7 +101,7 @@ exports.validateChangePasswd = function(req, res, next) { exports.checkOldPasswd = function(req, res, next) { const key = 'user:' + req.session.user; - db.hmget([key, 'salt', 'password'], function(err, data) { + db.hmget(key, 'salt', 'password', function(err, data) { if (err) { return next(err); } @@ -131,7 +131,7 @@ exports.changePasswd = function(req, res, next) { .update(salt + req.body.newpassword) .digest('hex'); - db.hmset([key, 'salt', salt, 'password', digest], function(err) { + db.hmset(key, 'salt', salt, 'password', digest, function(err) { if (err) { return next(err); } @@ -172,7 +172,7 @@ exports.validateLogin = function(req, res, next) { exports.checkUser = function(req, res, next) { const key = 'user:' + req.body.username; - db.exists([key], function(err, exists) { + db.exists(key, function(err, exists) { if (err) { return next(err); } @@ -189,7 +189,7 @@ exports.checkUser = function(req, res, next) { exports.authenticate = function(req, res, next) { const key = 'user:' + req.body.username; - db.hmget([key, 'salt', 'password'], function(err, data) { + db.hmget(key, 'salt', 'password', function(err, data) { if (err) { return next(err); } @@ -278,7 +278,7 @@ exports.validateSignUp = function(req, res, next) { exports.userExists = function(req, res, next) { const key = 'user:' + req.body.username; - db.exists([key], function(err, exists) { + db.exists(key, function(err, exists) { if (err) { return next(err); } @@ -293,7 +293,7 @@ exports.userExists = function(req, res, next) { exports.emailExists = function(req, res, next) { const key = 'email:' + req.body.email; - db.exists([key], function(err, exists) { + db.exists(key, function(err, exists) { if (err) { return next(err); } @@ -369,7 +369,7 @@ exports.validateRecoverPasswd = function(req, res, next) { exports.sendEmail = function(req, res, next) { const key = 'email:' + req.body.email; - db.get([key], function(err, data) { + db.get(key, function(err, data) { if (err) { return next(err); } @@ -379,7 +379,7 @@ exports.sendEmail = function(req, res, next) { // Email exists, generate a secure random token const token = crypto.randomBytes(48).toString('hex'); // Token expires after 4 hours - db.setex(['token:' + token, 14400, data], function(err) { + db.setex('token:' + token, 14400, data, function(err) { if (err) { return next(err); } @@ -431,7 +431,7 @@ exports.resetPasswd = function(req, res, next) { } const key = 'token:' + req.query.token; - db.get([key], function(err, user) { + db.get(key, function(err, user) { if (err) { return next(err); } @@ -443,7 +443,7 @@ exports.resetPasswd = function(req, res, next) { .update(salt + req.body.password) .digest('hex'); - db.hmset([user, 'salt', salt, 'password', digest], function(err) { + db.hmset(user, 'salt', salt, 'password', digest, function(err) { if (err) { return next(err); } @@ -466,12 +466,12 @@ exports.resetPasswd = function(req, res, next) { exports.profile = function(req, res, next) { const key = 'user:' + req.params.username; - db.exists([key], function(err, exists) { + db.exists(key, function(err, exists) { if (err) { return next(err); } if (exists) { - db.hgetall([key], function(err, user) { + db.hgetall(key, function(err, user) { if (err) { return next(err); } diff --git a/util/load_sample_tracks.js b/util/load_sample_tracks.js index 0da15bf..8427a5b 100644 --- a/util/load_sample_tracks.js +++ b/util/load_sample_tracks.js @@ -7,7 +7,8 @@ const limit = 7; // The number of songs to retrieve for each artist const parser = JSONStream.parse(['results', true]); const popIds = artistIds.pop; const rapIds = artistIds.rap; -const rc = require('redis').createClient(); +const Redis = require('ioredis'); +const rc = new Redis(); const rockIds = artistIds.rock; let rooms = require('../config').rooms; let score;