Add channels ACP interface
This commit is contained in:
parent
bde57973c3
commit
0998e89f5d
4 changed files with 173 additions and 6 deletions
54
lib/acp.js
54
lib/acp.js
|
|
@ -188,6 +188,58 @@ function handleResetPassword(user, data) {
|
|||
});
|
||||
}
|
||||
|
||||
function handleListChannels(user, data) {
|
||||
var field = data.field;
|
||||
var value = data.value;
|
||||
if (typeof field !== "string" || typeof value !== "string") {
|
||||
return;
|
||||
}
|
||||
|
||||
var dbfunc;
|
||||
if (field === "owner") {
|
||||
dbfunc = db.channels.searchOwner;
|
||||
} else {
|
||||
dbfunc = db.channels.search;
|
||||
}
|
||||
|
||||
dbfunc(value, function (err, rows) {
|
||||
if (err) {
|
||||
user.socket.emit("errMessage", {
|
||||
msg: err
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
user.socket.emit("acp-list-channels", rows);
|
||||
});
|
||||
}
|
||||
|
||||
function handleDeleteChannel(user, data) {
|
||||
var name = data.name;
|
||||
if (typeof data.name !== "string") {
|
||||
return;
|
||||
}
|
||||
|
||||
var sv = Server.getServer();
|
||||
if (sv.isChannelLoaded(name)) {
|
||||
sv.getChannel(name).users.forEach(function (u) {
|
||||
u.kick("Channel shutting down");
|
||||
});
|
||||
}
|
||||
|
||||
db.channels.drop(name, function (err) {
|
||||
if (err) {
|
||||
user.socket.emit("errMessage", {
|
||||
msg: err
|
||||
});
|
||||
} else {
|
||||
user.socket.emit("acp-delete-channel", {
|
||||
name: name
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function init(user) {
|
||||
var s = user.socket;
|
||||
s.on("acp-announce", handleAnnounce.bind(this, user));
|
||||
|
|
@ -197,6 +249,8 @@ function init(user) {
|
|||
s.on("acp-list-users", handleListUsers.bind(this, user));
|
||||
s.on("acp-set-rank", handleSetRank.bind(this, 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));
|
||||
|
||||
db.listGlobalBans(function (err, bans) {
|
||||
if (err) {
|
||||
|
|
|
|||
|
|
@ -175,6 +175,25 @@ module.exports = {
|
|||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Searches for a channel by owner
|
||||
*/
|
||||
searchOwner: function (name, callback) {
|
||||
if (typeof callback !== "function") {
|
||||
return;
|
||||
}
|
||||
|
||||
db.query("SELECT * FROM `channels` WHERE owner LIKE ?",
|
||||
["%" + name + "%"],
|
||||
function (err, rows) {
|
||||
if (err) {
|
||||
callback(err, null);
|
||||
return;
|
||||
}
|
||||
callback(null, rows);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Validates and registers a new channel
|
||||
*/
|
||||
|
|
@ -266,7 +285,7 @@ module.exports = {
|
|||
|
||||
fs.unlink(path.join(__dirname, "..", "..", "chandump", name),
|
||||
function (err) {
|
||||
if (err) {
|
||||
if (err && err.code !== "ENOENT") {
|
||||
Logger.errlog.log("Deleting chandump failed:");
|
||||
Logger.errlog.log(err);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue