]> git.example.dev Git - binbsis50.git/commitdiff
replaced redis with ioredis
authorLuigi Pinca <luigipinca@gmail.com>
Sat, 1 Jul 2023 10:38:13 +0000 (12:38 +0200)
committerLuigi Pinca <luigipinca@gmail.com>
Sat, 1 Jul 2023 12:00:42 +0000 (14:00 +0200)
lib/middleware/ban-handler.js
lib/redis-clients.js
lib/rooms.js
lib/sparks.js
lib/stats.js
lib/utils.js
package.json
routes/site.js
routes/user.js
util/load_sample_tracks.js

index 2f843834b436820c7d94a852aa8a21d94c28317d..ad4eb3aefe5de162014298404b6027a105a88170 100644 (file)
@@ -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);
     }
index be060a604044feae5cdd2d5315f455f2aad4c641..0a1773d53f9152898929a431f14f192daf6ccb0b 100644 (file)
@@ -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
  */
index c955b976ea79067112fde5e0e32b5ef68b064107..bd404888d24f1c25d1dec1e87617a97d51886981 100644 (file)
@@ -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;
index 535f1a82f13b81c903149008bebaa2e59b86bee8..b41db74d4086aaf97d67e987c685abcc0b413b52 100644 (file)
@@ -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);
index 2f81f7b2eb1cfa57107e26881430558adc8709c8..6fc3dfa31b25ddb61dae8c2659338f82ae5ebd04 100644 (file)
@@ -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);
       }
index 8f2a8d2cd063bb24dbf4ff7915214a1f9359f1cc..0c11e242281daa61df5b5ab9f7b363028b64b2cb 100644 (file)
@@ -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);
           }
index c71a3bed7dd0dd522a1faae99f23244df10126ce..b7fc8511227f26e52289b808c887a3253d1336ae 100644 (file)
@@ -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"
index 7f22f26e1618c9dbffb0beffe0862a6ce92c0ba6..f1ce13b481d2ba2a18f987a3094be475fe88648b 100644 (file)
@@ -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);
     });
   };
 };
index d3817339b1386c074b6cc3b542dcd347a4848a70..15ce7b34686782c12ca2fb619e7144ee14640af7 100644 (file)
@@ -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);
         }
index 0da15bf348dd9659b41cf93f569c50ea60902a2d..8427a5b8b264e7e5fc6d3660566ca8e699b54f38 100644 (file)
@@ -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;