Merge changes from master

This commit is contained in:
Calvin Montgomery 2013-06-15 16:07:38 -04:00
parent 00abe7ced1
commit 565759decf
3 changed files with 21 additions and 12 deletions

View File

@ -27,6 +27,7 @@ var Filter = require("./filter.js").Filter;
var Channel = function(name) { var Channel = function(name) {
Logger.syslog.log("Opening channel " + name); Logger.syslog.log("Opening channel " + name);
this.initialized = false;
this.name = name; this.name = name;
// Initialize defaults // Initialize defaults
@ -135,6 +136,8 @@ Channel.prototype.hasPermission = function(user, key) {
Channel.prototype.loadDump = function() { Channel.prototype.loadDump = function() {
fs.readFile("chandump/" + this.name, function(err, data) { fs.readFile("chandump/" + this.name, function(err, data) {
if(err) { if(err) {
Logger.errlog.log("Failed to open channel dump " + this.name);
Logger.errlog.log(err);
return; return;
} }
try { try {
@ -207,6 +210,7 @@ Channel.prototype.loadDump = function() {
this.css = data.css || ""; this.css = data.css || "";
this.js = data.js || ""; this.js = data.js || "";
this.sendAll("channelCSSJS", {css: this.css, js: this.js}); this.sendAll("channelCSSJS", {css: this.css, js: this.js});
this.initialized = true;
setTimeout(function() { incrementalDump(this); }.bind(this), 300000); setTimeout(function() { incrementalDump(this); }.bind(this), 300000);
} }
catch(e) { catch(e) {
@ -217,6 +221,8 @@ Channel.prototype.loadDump = function() {
} }
Channel.prototype.saveDump = function() { Channel.prototype.saveDump = function() {
if(!this.initialized)
return;
var filts = new Array(this.filters.length); var filts = new Array(this.filters.length);
for(var i = 0; i < this.filters.length; i++) { for(var i = 0; i < this.filters.length; i++) {
filts[i] = this.filters[i].pack(); filts[i] = this.filters[i].pack();
@ -309,10 +315,15 @@ Channel.prototype.saveRank = function(user) {
} }
Channel.prototype.getIPRank = function(ip) { Channel.prototype.getIPRank = function(ip) {
var names = this.logins[ip] || []; var names = [];
if(names.length == 0) { if(this.logins[ip] === undefined || this.logins[ip].length == 0) {
return 0; return 0;
} }
this.logins[ip].forEach(function(name) {
names.push(name);
});
var ranks = Database.getChannelRank(this.name, names); var ranks = Database.getChannelRank(this.name, names);
var rank = 0; var rank = 0;
for(var i = 0; i < ranks.length; i++) { for(var i = 0; i < ranks.length; i++) {
@ -395,7 +406,7 @@ Channel.prototype.tryIPBan = function(actor, data) {
if(!this.hasPermission(actor, "ban")) { if(!this.hasPermission(actor, "ban")) {
return false; return false;
} }
if(typeof data.id != "string" || data.id.length != 15) { if(typeof data.id != "string") {
return false; return false;
} }
if(typeof data.name != "string") { if(typeof data.name != "string") {
@ -628,16 +639,9 @@ Channel.prototype.kick = function(user, reason) {
} }
Channel.prototype.hideIP = function(ip) { Channel.prototype.hideIP = function(ip) {
while(ip.length < 15) {
ip += "X";
}
var chars = new Array(15); var chars = new Array(15);
for(var i = 0; i < ip.length; i++) { for(var i = 0; i < ip.length; i++) {
chars[i] = String.fromCharCode(ip.charCodeAt(i) ^ this.ipkey.charCodeAt(i)); chars[i] = String.fromCharCode(ip.charCodeAt(i) ^ this.ipkey.charCodeAt(i));
if(chars[i] == "X") {
chars[i] = "";
break;
}
} }
return chars.join(""); return chars.join("");
} }
@ -707,6 +711,9 @@ Channel.prototype.sendRankStuff = function(user) {
this.sendACL(user); this.sendACL(user);
} }
Channel.prototype.sendSeenLogins = function(user) {
}
Channel.prototype.sendACL = function(user) { Channel.prototype.sendACL = function(user) {
if(Rank.hasPermission(user, "acl")) { if(Rank.hasPermission(user, "acl")) {
user.socket.emit("acl", Database.listChannelRanks(this.name)); user.socket.emit("acl", Database.listChannelRanks(this.name));

View File

@ -180,5 +180,6 @@ exports.unload = function(chan) {
if(chan.registered) { if(chan.registered) {
chan.saveDump(); chan.saveDump();
} }
exports.channels[chan.name] = null;
delete exports.channels[chan.name]; delete exports.channels[chan.name];
} }

View File

@ -93,7 +93,7 @@ User.prototype.initCallbacks = function() {
return; return;
data.name = data.name.toLowerCase(); data.name = data.name.toLowerCase();
// Channel already loaded // Channel already loaded
if(data.name in Server.channels) { if(data.name in Server.channels && Server.channels[data.name] != null) {
this.channel = Server.channels[data.name]; this.channel = Server.channels[data.name];
} }
// Channel not loaded // Channel not loaded
@ -391,7 +391,8 @@ User.prototype.initCallbacks = function() {
if(this.noflood("requestSeenLogins", 0.25)) { if(this.noflood("requestSeenLogins", 0.25)) {
return; return;
} }
this.channel.sendRankStuff(this); // does nothing
this.channel.sendSeenLogins(this);
} }
}.bind(this)); }.bind(this));