From 6e18e251396399799d9c0b1453e45f43b18b8914 Mon Sep 17 00:00:00 2001 From: calzoneman Date: Thu, 26 Sep 2013 13:29:36 -0500 Subject: [PATCH] Code style cleanup on user.js --- changelog | 3 + lib/user.js | 327 ++++++++++++++++++++++++++-------------------------- 2 files changed, 166 insertions(+), 164 deletions(-) diff --git a/changelog b/changelog index bb513835..6a2742f5 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +Thu Sep 26 13:29 2013 CDT + * lib/user.js: Some code style cleanup + Thu Sep 26 13:17 2013 CDT * lib/user.js: A few minor cleanups to login functions * lib/api.js: Pass the login failure reason to the action log diff --git a/lib/user.js b/lib/user.js index 308e1558..45030d5b 100644 --- a/lib/user.js +++ b/lib/user.js @@ -15,7 +15,7 @@ var Logger = require("./logger.js"); var $util = require("./utilities"); // Represents a client connected via socket.io -var User = function(socket, Server) { +var User = function (socket, Server) { this.ip = socket._ip; this.server = Server; this.socket = socket; @@ -42,7 +42,7 @@ var User = function(socket, Server) { this.autoAFK(); this.initCallbacks(); - if(Server.announcement != null) { + if (Server.announcement !== null) { this.socket.emit("announcement", Server.announcement); } }; @@ -52,27 +52,25 @@ User.prototype.inChannel = function () { }; // Throttling/cooldown -User.prototype.noflood = function(name, hz) { +User.prototype.noflood = function (name, hz) { var time = new Date().getTime(); - if(!(name in this.throttle)) { + if (!(name in this.throttle)) { this.throttle[name] = [time]; return false; - } - else if(name in this.flooded && time < this.flooded[name]) { + } else if (name in this.flooded && time < this.flooded[name]) { this.socket.emit("noflood", { action: name, msg: "You're still on cooldown!" }); return true; - } - else { + } else { this.throttle[name].push(time); var diff = (time - this.throttle[name][0]) / 1000.0; // Twice might be an accident, more than that is probably spam - if(this.throttle[name].length > 2) { + if (this.throttle[name].length > 2) { var rate = this.throttle[name].length / diff; this.throttle[name] = [time]; - if(rate > hz) { + if (rate > hz) { this.flooded[name] = time + 5000; this.socket.emit("noflood", { action: name, @@ -83,17 +81,17 @@ User.prototype.noflood = function(name, hz) { return false; } } -} +}; User.prototype.setAFK = function (afk) { - if(!this.inChannel()) + if (!this.inChannel()) return; - if(this.meta.afk === afk) + if (this.meta.afk === afk) return; var chan = this.channel; this.meta.afk = afk; - if(afk) { - if(chan.voteskip) + if (afk) { + if (chan.voteskip) chan.voteskip.unvote(this.ip); } else { this.autoAFK(); @@ -103,34 +101,35 @@ User.prototype.setAFK = function (afk) { name: this.name, afk: afk }); -} +}; User.prototype.autoAFK = function () { - if(this.awaytimer) - clearTimeout(this.awaytimer); + var self = this; + if (self.awaytimer) + clearTimeout(self.awaytimer); - if(!this.inChannel() || this.channel.opts.afk_timeout == 0) + if (!self.inChannel() || self.channel.opts.afk_timeout === 0) return; - this.awaytimer = setTimeout(function () { - this.setAFK(true); - }.bind(this), this.channel.opts.afk_timeout * 1000); -} + self.awaytimer = setTimeout(function () { + self.setAFK(true); + }, self.channel.opts.afk_timeout * 1000); +}; -User.prototype.initCallbacks = function() { +User.prototype.initCallbacks = function () { var self = this; - self.socket.on("disconnect", function() { + self.socket.on("disconnect", function () { self.awaytimer && clearTimeout(self.awaytimer); - if(self.inChannel()) + if (self.inChannel()) self.channel.userLeave(self); }); - self.socket.on("joinChannel", function(data) { - if(self.inChannel()) + self.socket.on("joinChannel", function (data) { + if (self.inChannel()) return; - if(typeof data.name != "string") + if (typeof data.name != "string") return; - if(!data.name.match(/^[\w-_]{1,30}$/)) { + if (!data.name.match(/^[\w-_]{1,30}$/)) { self.socket.emit("errorMsg", { msg: "Invalid channel name. Channel names may consist of"+ " 1-30 characters in the set a-z, A-Z, 0-9, -, and _" @@ -143,9 +142,9 @@ User.prototype.initCallbacks = function() { } data.name = data.name.toLowerCase(); self.channel = self.server.getChannel(data.name); - if(self.loggedIn) { + if (self.loggedIn) { self.channel.getRank(self.name, function (err, rank) { - if(!err && rank > self.rank) + if (!err && rank > self.rank) self.rank = rank; }); } @@ -153,11 +152,11 @@ User.prototype.initCallbacks = function() { self.autoAFK(); }); - self.socket.on("login", function(data) { + self.socket.on("login", function (data) { var name = data.name || ""; var pw = data.pw || ""; var session = data.session || ""; - if(pw.length > 100) + if (pw.length > 100) pw = pw.substring(0, 100); if (self.loggedIn) @@ -183,51 +182,51 @@ User.prototype.initCallbacks = function() { } }); - self.socket.on("assignLeader", function(data) { - if(self.inChannel()) { + self.socket.on("assignLeader", function (data) { + if (self.inChannel()) { self.channel.tryChangeLeader(self, data); } }); - self.socket.on("promote", function(data) { - if(self.inChannel()) { + self.socket.on("promote", function (data) { + if (self.inChannel()) { self.channel.tryPromoteUser(self, data); } }); - self.socket.on("demote", function(data) { - if(self.inChannel()) { + self.socket.on("demote", function (data) { + if (self.inChannel()) { self.channel.tryDemoteUser(self, data); } }); - self.socket.on("setChannelRank", function(data) { - if(self.inChannel()) { + self.socket.on("setChannelRank", function (data) { + if (self.inChannel()) { self.channel.trySetRank(self, data); } }); - self.socket.on("banName", function(data) { - if(self.inChannel()) { + self.socket.on("banName", function (data) { + if (self.inChannel()) { self.channel.banName(self, data.name || ""); } }); - self.socket.on("banIP", function(data) { - if(self.inChannel()) { + self.socket.on("banIP", function (data) { + if (self.inChannel()) { self.channel.tryIPBan(self, data); } }); - self.socket.on("unban", function(data) { - if(self.inChannel()) { + self.socket.on("unban", function (data) { + if (self.inChannel()) { self.channel.tryUnban(self, data); } }); - self.socket.on("chatMsg", function(data) { - if(self.inChannel()) { - if(data.msg.indexOf("/afk") != 0) { + self.socket.on("chatMsg", function (data) { + if (self.inChannel()) { + if (data.msg.indexOf("/afk") !== 0) { self.setAFK(false); self.autoAFK(); } @@ -235,96 +234,96 @@ User.prototype.initCallbacks = function() { } }); - self.socket.on("newPoll", function(data) { - if(self.inChannel()) { + self.socket.on("newPoll", function (data) { + if (self.inChannel()) { self.channel.tryOpenPoll(self, data); } }); - self.socket.on("playerReady", function() { - if(self.inChannel()) { + self.socket.on("playerReady", function () { + if (self.inChannel()) { self.channel.sendMediaUpdate(self); } }); - self.socket.on("requestPlaylist", function() { - if(self.inChannel()) { + self.socket.on("requestPlaylist", function () { + if (self.inChannel()) { self.channel.sendPlaylist(self); } }); - self.socket.on("queue", function(data) { - if(self.inChannel()) { + self.socket.on("queue", function (data) { + if (self.inChannel()) { self.channel.tryQueue(self, data); } }); - self.socket.on("setTemp", function(data) { - if(self.inChannel()) { + self.socket.on("setTemp", function (data) { + if (self.inChannel()) { self.channel.trySetTemp(self, data); } }); - self.socket.on("delete", function(data) { - if(self.inChannel()) { + self.socket.on("delete", function (data) { + if (self.inChannel()) { self.channel.tryDequeue(self, data); } }); - self.socket.on("uncache", function(data) { - if(self.inChannel()) { + self.socket.on("uncache", function (data) { + if (self.inChannel()) { self.channel.tryUncache(self, data); } }); - self.socket.on("moveMedia", function(data) { - if(self.inChannel()) { + self.socket.on("moveMedia", function (data) { + if (self.inChannel()) { self.channel.tryMove(self, data); } }); - self.socket.on("jumpTo", function(data) { - if(self.inChannel()) { + self.socket.on("jumpTo", function (data) { + if (self.inChannel()) { self.channel.tryJumpTo(self, data); } }); - self.socket.on("playNext", function() { - if(self.inChannel()) { + self.socket.on("playNext", function () { + if (self.inChannel()) { self.channel.tryPlayNext(self); } }); - self.socket.on("clearPlaylist", function() { - if(self.inChannel()) { + self.socket.on("clearPlaylist", function () { + if (self.inChannel()) { self.channel.tryClearqueue(self); } }); - self.socket.on("shufflePlaylist", function() { - if(self.inChannel()) { + self.socket.on("shufflePlaylist", function () { + if (self.inChannel()) { self.channel.tryShufflequeue(self); } }); - self.socket.on("togglePlaylistLock", function() { - if(self.inChannel()) { + self.socket.on("togglePlaylistLock", function () { + if (self.inChannel()) { self.channel.tryToggleLock(self); } }); - self.socket.on("mediaUpdate", function(data) { - if(self.inChannel()) { + self.socket.on("mediaUpdate", function (data) { + if (self.inChannel()) { self.channel.tryUpdate(self, data); } }); - self.socket.on("searchMedia", function(data) { - if(self.inChannel()) { - if(data.source == "yt") { - var searchfn = self.server.infogetter.Getters["ytSearch"]; + self.socket.on("searchMedia", function (data) { + if (self.inChannel()) { + if (data.source == "yt") { + var searchfn = self.server.infogetter.Getters.ytSearch; searchfn(data.query.split(" "), function (e, vids) { - if(!e) { + if (!e) { self.socket.emit("searchResults", { source: "yt", results: vids @@ -342,119 +341,118 @@ User.prototype.initCallbacks = function() { } }); - self.socket.on("closePoll", function() { - if(self.inChannel()) { + self.socket.on("closePoll", function () { + if (self.inChannel()) { self.channel.tryClosePoll(self); } }); - self.socket.on("vote", function(data) { - if(self.inChannel()) { + self.socket.on("vote", function (data) { + if (self.inChannel()) { self.channel.tryVote(self, data); } }); - self.socket.on("registerChannel", function(data) { - if(!self.inChannel()) { + self.socket.on("registerChannel", function (data) { + if (!self.inChannel()) { self.socket.emit("channelRegistration", { success: false, error: "You're not in any channel!" }); - } - else { + } else { self.channel.tryRegister(self); } }); - self.socket.on("unregisterChannel", function() { - if(!self.inChannel()) { + self.socket.on("unregisterChannel", function () { + if (!self.inChannel()) { return; } self.channel.unregister(self); }); - self.socket.on("setOptions", function(data) { - if(self.inChannel()) { + self.socket.on("setOptions", function (data) { + if (self.inChannel()) { self.channel.tryUpdateOptions(self, data); } }); - self.socket.on("setPermissions", function(data) { - if(self.inChannel()) { + self.socket.on("setPermissions", function (data) { + if (self.inChannel()) { self.channel.tryUpdatePermissions(self, data); } }); - self.socket.on("setChannelCSS", function(data) { - if(self.inChannel()) { + self.socket.on("setChannelCSS", function (data) { + if (self.inChannel()) { self.channel.trySetCSS(self, data); } }); - self.socket.on("setChannelJS", function(data) { - if(self.inChannel()) { + self.socket.on("setChannelJS", function (data) { + if (self.inChannel()) { self.channel.trySetJS(self, data); } }); - self.socket.on("updateFilter", function(data) { - if(self.inChannel()) { + self.socket.on("updateFilter", function (data) { + if (self.inChannel()) { self.channel.tryUpdateFilter(self, data); } }); - self.socket.on("removeFilter", function(data) { - if(self.inChannel()) { + self.socket.on("removeFilter", function (data) { + if (self.inChannel()) { self.channel.tryRemoveFilter(self, data); } }); - self.socket.on("moveFilter", function(data) { - if(self.inChannel()) { + self.socket.on("moveFilter", function (data) { + if (self.inChannel()) { self.channel.tryMoveFilter(self, data); } }); - self.socket.on("setMotd", function(data) { - if(self.inChannel()) { + self.socket.on("setMotd", function (data) { + if (self.inChannel()) { self.channel.tryUpdateMotd(self, data); } }); - self.socket.on("requestLoginHistory", function() { - if(self.inChannel()) { + self.socket.on("requestLoginHistory", function () { + if (self.inChannel()) { self.channel.sendLoginHistory(self); } }); - self.socket.on("requestBanlist", function() { - if(self.inChannel()) { + self.socket.on("requestBanlist", function () { + if (self.inChannel()) { self.channel.sendBanlist(self); } }); - self.socket.on("requestChatFilters", function() { - if(self.inChannel()) { + self.socket.on("requestChatFilters", function () { + if (self.inChannel()) { self.channel.sendChatFilters(self); } }); - self.socket.on("requestChannelRanks", function() { - if(self.inChannel()) { - if(self.noflood("requestChannelRanks", 0.25)) + self.socket.on("requestChannelRanks", function () { + if (self.inChannel()) { + if (self.noflood("requestChannelRanks", 0.25)) return; self.channel.sendChannelRanks(self); } }); - self.socket.on("voteskip", function(data) { - if(self.inChannel()) { + self.socket.on("voteskip", function (data) { + if (self.inChannel()) { self.channel.tryVoteskip(self); } }); - self.socket.on("listPlaylists", function(data) { - if(self.name == "" || self.rank < 1) { + self.socket.on("listPlaylists", function (data) { + if (self.name === "" || self.rank < 1) { self.socket.emit("listPlaylists", { pllist: [], error: "You must be logged in to manage playlists" @@ -463,19 +461,19 @@ User.prototype.initCallbacks = function() { } self.server.db.listUserPlaylists(self.name, function (err, list) { - if(err) + if (err) list = []; for(var i = 0; i < list.length; i++) { list[i].time = $util.formatTime(list[i].time); } self.socket.emit("listPlaylists", { - pllist: list, + pllist: list }); }); }); - self.socket.on("savePlaylist", function(data) { - if(self.rank < 1) { + self.socket.on("savePlaylist", function (data) { + if (self.rank < 1) { self.socket.emit("savePlaylist", { success: false, error: "You must be logged in to manage playlists" @@ -483,7 +481,7 @@ User.prototype.initCallbacks = function() { return; } - if(!self.inChannel()) { + if (!self.inChannel()) { self.socket.emit("savePlaylist", { success: false, error: "Not in a channel" @@ -491,14 +489,14 @@ User.prototype.initCallbacks = function() { return; } - if(typeof data.name != "string") { + if (typeof data.name != "string") { return; } var pl = self.channel.playlist.items.toArray(); self.server.db.saveUserPlaylist(pl, self.name, data.name, function (err, res) { - if(err) { + if (err) { self.socket.emit("savePlaylist", { success: false, error: err @@ -512,26 +510,26 @@ User.prototype.initCallbacks = function() { self.server.db.listUserPlaylists(self.name, function (err, list) { - if(err) + if (err) list = []; for(var i = 0; i < list.length; i++) { list[i].time = $util.formatTime(list[i].time); } self.socket.emit("listPlaylists", { - pllist: list, + pllist: list }); }); }); }); - self.socket.on("queuePlaylist", function(data) { - if(self.inChannel()) { + self.socket.on("queuePlaylist", function (data) { + if (self.inChannel()) { self.channel.tryQueuePlaylist(self, data); } }); - self.socket.on("deletePlaylist", function(data) { - if(typeof data.name != "string") { + self.socket.on("deletePlaylist", function (data) { + if (typeof data.name != "string") { return; } @@ -539,42 +537,42 @@ User.prototype.initCallbacks = function() { function () { self.server.db.listUserPlaylists(self.name, function (err, list) { - if(err) + if (err) list = []; for(var i = 0; i < list.length; i++) { list[i].time = $util.formatTime(list[i].time); } self.socket.emit("listPlaylists", { - pllist: list, + pllist: list }); }); }); }); self.socket.on("readChanLog", function () { - if(self.inChannel()) { + if (self.inChannel()) { self.channel.tryReadLog(self); } }); - self.socket.on("acp-init", function() { - if(self.global_rank >= Rank.Siteadmin) + self.socket.on("acp-init", function () { + if (self.global_rank >= Rank.Siteadmin) self.server.acp.init(self); }); - self.socket.on("borrow-rank", function(rank) { - if(self.global_rank < 255) + self.socket.on("borrow-rank", function (rank) { + if (self.global_rank < 255) return; - if(rank > self.global_rank) + if (rank > self.global_rank) return; self.rank = rank; self.socket.emit("rank", rank); - if(self.inChannel()) + if (self.inChannel()) self.channel.broadcastUserUpdate(self); }); -} +}; var lastguestlogin = {}; User.prototype.guestLogin = function (name) { @@ -587,13 +585,13 @@ User.prototype.guestLogin = function (name) { success: false, error: "Guest logins are restricted to one per IP address "+ "per " + self.server.cfg["guest-login-delay"] + - " seconds.", + " seconds." }); return false; } } - if(!$util.isValidUserName(name)) { + if (!$util.isValidUserName(name)) { self.socket.emit("login", { success: false, error: "Invalid username. Usernames must be 1-20 characters "+ @@ -607,7 +605,7 @@ User.prototype.guestLogin = function (name) { self.loggingIn = true; self.server.db.isUsernameTaken(name, function (err, taken) { self.loggingIn = false; - if(err) { + if (err) { self.socket.emit("login", { success: false, error: "Internal error: " + err @@ -615,7 +613,7 @@ User.prototype.guestLogin = function (name) { return; } - if(taken) { + if (taken) { self.socket.emit("login", { success: false, error: "That username is registered and protected." @@ -623,9 +621,9 @@ User.prototype.guestLogin = function (name) { return; } - if(self.inChannel()) { + if (self.inChannel()) { for(var i = 0; i < self.channel.users.length; i++) { - if(self.channel.users[i].name == name) { + if (self.channel.users[i].name == name) { self.socket.emit("login", { success: false, error: "That name is already in use on this channel" @@ -645,22 +643,23 @@ User.prototype.guestLogin = function (name) { name: name }); self.socket.emit("rank", self.rank); - if(self.inChannel()) { + if (self.inChannel()) { self.channel.logger.log(self.ip + " signed in as " + name); self.channel.broadcastNewUser(self); } }); -} +}; + // Attempt to login -User.prototype.login = function(name, pw, session) { +User.prototype.login = function (name, pw, session) { var self = this; // No password => try guest login - if(pw == "" && session == "") { + if (pw === "" && session === "") { this.guestLogin(name); } else { self.loggingIn = true; self.server.db.userLogin(name, pw, session, function (err, row) { - if(err) { + if (err) { self.loggingIn = false; self.server.actionlog.record(self.ip, name, "login-failure", err); @@ -670,10 +669,10 @@ User.prototype.login = function(name, pw, session) { }); return; } - if(self.inChannel()) { + if (self.inChannel()) { var n = name.toLowerCase(); for(var i = 0; i < self.channel.users.length; i++) { - if(self.channel.users[i].name.toLowerCase() === n) { + if (self.channel.users[i].name.toLowerCase() === n) { if (self.channel.users[i] === self) { Logger.errlog.log("Wat: user.login() but user "+ "already logged in on channel"); @@ -685,7 +684,7 @@ User.prototype.login = function(name, pw, session) { } } // Record logins for administrator accounts - if(self.global_rank >= 255) + if (self.global_rank >= 255) self.server.actionlog.record(self.ip, name, "login-success"); self.loggedIn = true; self.loggingIn = false; @@ -704,15 +703,15 @@ User.prototype.login = function(name, pw, session) { var afterRankLookup = function () { self.socket.emit("rank", self.rank); self.name = name; - if(self.inChannel()) { + if (self.inChannel()) { self.channel.logger.log(self.ip + " logged in as " + name); self.channel.broadcastNewUser(self); } }; - if(self.inChannel()) { + if (self.inChannel()) { self.channel.getRank(name, function (err, rank) { - if(!err) { + if (!err) { self.saverank = true; self.rank = rank; } else { @@ -729,6 +728,6 @@ User.prototype.login = function(name, pw, session) { } }); } -} +}; module.exports = User;