diff --git a/package.json b/package.json index 1b9a0fae..5b5b4a8d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Calvin Montgomery", "name": "CyTube", "description": "Online media synchronizer and chat", - "version": "3.37.0", + "version": "3.38.0", "repository": { "url": "http://github.com/calzoneman/sync" }, diff --git a/src/acp.js b/src/acp.js index 5f7e1333..15a1b6d7 100644 --- a/src/acp.js +++ b/src/acp.js @@ -278,22 +278,18 @@ function init(user) { s.on("acp-force-unload", handleForceUnload.bind(this, user)); s.on("acp-list-stats", handleListStats.bind(this, user)); - db.listGlobalBans(function (err, bans) { - if (err) { - user.socket.emit("errMessage", { - msg: err - }); - return; - } - - var flat = []; - for (var ip in bans) { - flat.push({ - ip: ip, - note: bans[ip].reason - }); - } - user.socket.emit("acp-gbanlist", flat); + const globalBanDB = db.getGlobalBanDB(); + globalBanDB.listGlobalBans().then(bans => { + // Why is it called reason in the DB and note in the socket frame? + // Who knows... + const mappedBans = bans.map(ban => { + return { ip: ban.ip, note: ban.reason }; + }); + user.socket.emit("acp-gbanlist", mappedBans); + }).catch(error => { + user.socket.emit("errMessage", { + msg: error.message + }); }); Logger.eventlog.log("[acp] Initialized ACP for " + eventUsername(user)); } diff --git a/src/database.js b/src/database.js index 72cad045..a42e6b34 100644 --- a/src/database.js +++ b/src/database.js @@ -11,7 +11,6 @@ import { GlobalBanDB } from './db/globalban'; const LOGGER = LoggerFactory.getLogger('database'); -var global_ipbans = {}; let db = null; let globalBanDB = null; @@ -64,7 +63,6 @@ module.exports.init = function (newDB) { process.nextTick(legacySetup); }); - global_ipbans = {}; module.exports.users = require("./database/accounts"); module.exports.channels = require("./database/channels"); }; @@ -89,8 +87,6 @@ function legacySetup() { require("./database/update").checkVersion(); module.exports.loadAnnouncement(); }); - // Refresh global IP bans - module.exports.listGlobalBans(); } /** @@ -130,92 +126,6 @@ function blackHole() { } -/* REGION global bans */ - -/** - * Check if an IP address is globally banned - */ -module.exports.isGlobalIPBanned = function (ip, callback) { - var range = util.getIPRange(ip); - var wrange = util.getWideIPRange(ip); - var banned = ip in global_ipbans || - range in global_ipbans || - wrange in global_ipbans; - - if (callback) { - callback(null, banned); - } - return banned; -}; - -/** - * Retrieve all global bans from the database. - * Cache locally in global_bans - */ -module.exports.listGlobalBans = function (callback) { - if (typeof callback !== "function") { - callback = blackHole; - } - - module.exports.query("SELECT * FROM global_bans WHERE 1", function (err, res) { - if (err) { - callback(err, null); - return; - } - - global_ipbans = {}; - for (var i = 0; i < res.length; i++) { - global_ipbans[res[i].ip] = res[i]; - } - - callback(null, global_ipbans); - }); -}; - -/** - * Globally ban by IP - */ -module.exports.globalBanIP = function (ip, reason, callback) { - if (typeof callback !== "function") { - callback = blackHole; - } - - var query = "INSERT INTO global_bans (ip, reason) VALUES (?, ?)" + - " ON DUPLICATE KEY UPDATE reason=?"; - module.exports.query(query, [ip, reason, reason], function (err, res) { - if(err) { - callback(err, null); - return; - } - - module.exports.listGlobalBans(); - callback(null, res); - }); -}; - -/** - * Remove a global IP ban - */ -module.exports.globalUnbanIP = function (ip, callback) { - if (typeof callback !== "function") { - callback = blackHole; - } - - - var query = "DELETE FROM global_bans WHERE ip=?"; - module.exports.query(query, [ip], function (err, res) { - if(err) { - callback(err, null); - return; - } - - module.exports.listGlobalBans(); - callback(null, res); - }); -}; - -/* END REGION */ - /* password recovery */ /**