Add ACP list active channels

This commit is contained in:
calzoneman 2014-02-06 23:31:47 -06:00
parent 359a228d5f
commit afa17165f7
3 changed files with 72 additions and 1 deletions

View file

@ -14,6 +14,7 @@ var Server = require("./server");
var db = require("./database");
var util = require("./utilities");
var Config = require("./config");
var Server = require("./server");
function handleAnnounce(user, data) {
var sv = Server.getServer();
@ -240,6 +241,29 @@ function handleDeleteChannel(user, data) {
});
}
function handleListActiveChannels(user) {
user.socket.emit("acp-list-activechannels", Server.getServer().packChannelList(false));
}
function handleForceUnload(user, data) {
var name = data.name;
if (typeof name !== "string") {
return;
}
var sv = Server.getServer();
if (!sv.isChannelLoaded(name)) {
return;
}
var chan = sv.getChannel(name);
var users = Array.prototype.slice.call(chan.users);
chan.emit("empty");
users.forEach(function (u) {
u.kick("Channel shutting down");
});
}
function init(user) {
var s = user.socket;
s.on("acp-announce", handleAnnounce.bind(this, user));
@ -251,6 +275,8 @@ function init(user) {
s.on("acp-reset-password", handleResetPassword.bind(this, user));
s.on("acp-list-channels", handleListChannels.bind(this, user));
s.on("acp-delete-channel", handleDeleteChannel.bind(this, user));
s.on("acp-list-activechannels", handleListActiveChannels.bind(this, user));
s.on("acp-force-unload", handleForceUnload.bind(this, user));
db.listGlobalBans(function (err, bans) {
if (err) {

View file

@ -195,7 +195,9 @@ Server.prototype.packChannel = function (c) {
usercount: c.users.length,
voteskip_eligible: c.calcVoteskipMax(),
users: [],
chat: Array.prototype.slice.call(c.chatbuffer)
chat: Array.prototype.slice.call(c.chatbuffer),
registered: c.registered,
public: c.opts.show_public
};
for (var i = 0; i < c.users.length; i++) {