mirror of https://github.com/calzoneman/sync.git
more ACP work
This commit is contained in:
parent
bd7a41ce3d
commit
55b5e54d97
|
@ -0,0 +1,131 @@
|
|||
var Server = require("./server");
|
||||
var Auth = require("./auth");
|
||||
var Database = require("./database");
|
||||
|
||||
module.exports = {
|
||||
init: function(user) {
|
||||
user.socket.on("acp-announce", function(data) {
|
||||
Server.announcement = data;
|
||||
Server.io.sockets.emit("announcement", data);
|
||||
});
|
||||
|
||||
user.socket.on("acp-announce-clear", function() {
|
||||
Server.announcement = null;
|
||||
});
|
||||
|
||||
user.socket.on("acp-global-ban", function(data) {
|
||||
Database.globalBanIP(data.ip, data.note);
|
||||
user.socket.emit("acp-global-banlist", Database.refreshGlobalBans());
|
||||
});
|
||||
|
||||
user.socket.on("acp-global-unban", function(ip) {
|
||||
Database.globalUnbanIP(ip);
|
||||
user.socket.emit("acp-global-banlist", Database.refreshGlobalBans());
|
||||
});
|
||||
|
||||
user.socket.emit("acp-global-banlist", Database.refreshGlobalBans());
|
||||
|
||||
user.socket.on("acp-lookup-user", function(name) {
|
||||
var db = Database.getConnection();
|
||||
if(!db) {
|
||||
return;
|
||||
}
|
||||
|
||||
var query = Database.createQuery(
|
||||
"SELECT id,uname,global_rank,profile_image,profile_text,email FROM registrations WHERE uname LIKE ?",
|
||||
["%"+name+"%"]
|
||||
);
|
||||
|
||||
var res = db.querySync(query);
|
||||
if(!res)
|
||||
return;
|
||||
|
||||
var rows = res.fetchAllSync();
|
||||
user.socket.emit("acp-userdata", rows);
|
||||
});
|
||||
|
||||
user.socket.on("acp-reset-password", function(data) {
|
||||
if(Auth.getGlobalRank(data.name) >= user.global_rank)
|
||||
return;
|
||||
try {
|
||||
var hash = Database.generatePasswordReset(user.ip, data.name, data.email);
|
||||
}
|
||||
catch(e) {
|
||||
user.socket.emit("acp-reset-password", {
|
||||
success: false,
|
||||
error: e
|
||||
});
|
||||
return;
|
||||
}
|
||||
if(hash) {
|
||||
user.socket.emit("acp-reset-password", {
|
||||
success: true,
|
||||
hash: hash
|
||||
});
|
||||
}
|
||||
else {
|
||||
user.socket.emit("acp-reset-password", {
|
||||
success: false,
|
||||
error: "Reset failed"
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
user.socket.on("acp-set-rank", function(data) {
|
||||
if(data.rank < 1 || data.rank >= user.global_rank)
|
||||
return;
|
||||
|
||||
if(Auth.getGlobalRank(data.name) >= user.global_rank)
|
||||
return;
|
||||
|
||||
var db = Database.getConnection();
|
||||
if(!db)
|
||||
return;
|
||||
|
||||
var query = Database.createQuery(
|
||||
"UPDATE registrations SET global_rank=? WHERE uname=?",
|
||||
[data.name, data.rank]
|
||||
);
|
||||
|
||||
var res = db.querySync(query);
|
||||
if(!res)
|
||||
return;
|
||||
|
||||
user.socket.emit("acp-set-rank", data);
|
||||
});
|
||||
|
||||
user.socket.on("acp-list-loaded", function() {
|
||||
var chans = [];
|
||||
for(var c in Server.channels) {
|
||||
var chan = Server.channels[c];
|
||||
if(!chan)
|
||||
continue;
|
||||
|
||||
chans.push({
|
||||
name: c,
|
||||
title: chan.opts.pagetitle,
|
||||
usercount: chan.users.length,
|
||||
mediatitle: chan.media ? chan.media.title : "-",
|
||||
is_public: chan.opts.show_public,
|
||||
registered: chan.registered
|
||||
});
|
||||
}
|
||||
|
||||
user.socket.emit("acp-list-loaded", chans);
|
||||
});
|
||||
|
||||
user.socket.on("acp-channel-unload", function(data) {
|
||||
if(data.name in Server.channels) {
|
||||
var c = Server.channels[data.name];
|
||||
if(!c)
|
||||
return;
|
||||
c.initialized = data.save;
|
||||
c.users.forEach(function(u) {
|
||||
c.kick(u, "Channel shutting down");
|
||||
});
|
||||
Server.unload(c);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
17
www/acp.html
17
www/acp.html
|
@ -58,6 +58,7 @@
|
|||
<li id="li_announce"><a href="javascript:void(0)" id="show_announce">Announcement Manager</a></li>
|
||||
<li id="li_gbans"><a href="javascript:void(0)" id="show_gbans">Global Bans</a></li>
|
||||
<li id="li_userlookup"><a href="javascript:void(0)" id="show_userlookup">Users</a></li>
|
||||
<li id="li_chanloaded"><a href="javascript:void(0)" id="show_chanloaded">Loaded Channels</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -157,6 +158,22 @@
|
|||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span12" id="channellist">
|
||||
<h3>Loaded Channels</h3>
|
||||
<button class="btn" id="listloaded_refresh">Refresh</button>
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Title</th>
|
||||
<th>User Count</th>
|
||||
<th>Now Playing</th>
|
||||
<th>Registered</th>
|
||||
<th>Public</th>
|
||||
<th>Force Unload</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- /container -->
|
||||
<div class="push"></div>
|
||||
|
|
|
@ -41,6 +41,13 @@ menuHandler("#show_logview", "#logview");
|
|||
menuHandler("#show_announce", "#announcepanel");
|
||||
menuHandler("#show_gbans", "#gbanpanel");
|
||||
menuHandler("#show_userlookup", "#userlookup");
|
||||
menuHandler("#show_chanloaded", "#channellist");
|
||||
$("#show_chanloaded").click(function() {
|
||||
socket.emit("acp-list-loaded");
|
||||
});
|
||||
$("#listloaded_refresh").click(function() {
|
||||
socket.emit("acp-list-loaded");
|
||||
});
|
||||
|
||||
function getSyslog() {
|
||||
$.ajax(WEB_URL+"/api/plain/readlog?type=sys&"+AUTH).done(function(data) {
|
||||
|
@ -164,7 +171,7 @@ function setupCallbacks() {
|
|||
var tr = $("<tr/>").appendTo($("#userlookup table"));
|
||||
$("<td/>").text(u.id).appendTo(tr);
|
||||
$("<td/>").text(u.uname).appendTo(tr);
|
||||
$("<td/>").text(u.global_rank).appendTo(tr);
|
||||
var rank = $("<td/>").text(u.global_rank).appendTo(tr);
|
||||
$("<td/>").text(u.email).appendTo(tr);
|
||||
(function(name, email) {
|
||||
$("<button/>").addClass("btn btn-mini")
|
||||
|
@ -180,7 +187,44 @@ function setupCallbacks() {
|
|||
}
|
||||
});
|
||||
})(u.uname, u.email);
|
||||
(function(u) {
|
||||
rank.click(function() {
|
||||
if(this.find(".rank-edit").length > 0)
|
||||
return;
|
||||
var r = this.text();
|
||||
this.text("");
|
||||
var edit = $("<input/>").attr("type", "text")
|
||||
.attr("placeholder", r)
|
||||
.addClass("rank-edit")
|
||||
.appendTo(this)
|
||||
.focus();
|
||||
|
||||
function save() {
|
||||
var r = this.val();
|
||||
var r2 = r;
|
||||
if(r.trim() == "")
|
||||
r = this.attr("placeholder");
|
||||
this.parent().text(this.attr("placeholder"));
|
||||
socket.emit("acp-set-rank", {
|
||||
name: u.uname,
|
||||
rank: parseInt(r)
|
||||
});
|
||||
}
|
||||
edit.blur(save.bind(edit));
|
||||
edit.keydown(function(ev) {
|
||||
if(ev.keyCode == 13)
|
||||
save.bind(edit)();
|
||||
});
|
||||
}.bind(rank));
|
||||
})(u);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on("acp-set-rank", function(data) {
|
||||
$("#userlookup tr").each(function() {
|
||||
if($($(this).children()[1]).text() == data.name)
|
||||
$($(this).children()[2]).text(data.rank);
|
||||
});
|
||||
});
|
||||
|
||||
socket.on("acp-reset-password", function(data) {
|
||||
|
@ -190,6 +234,41 @@ function setupCallbacks() {
|
|||
alert("Password reset successful. Reset hash: " + data.hash);
|
||||
});
|
||||
|
||||
socket.on("acp-list-loaded", function(data) {
|
||||
$("#channellist tbody").remove();
|
||||
var total = 0;
|
||||
data.forEach(function(c) {
|
||||
total += c.usercount;
|
||||
var tr = $("<tr/>").appendTo($("#channellist table"));
|
||||
$("<td/>").text(c.title + " (" + c.name + ")").appendTo(tr);
|
||||
$("<td/>").text(c.usercount).appendTo(tr);
|
||||
$("<td/>").text(c.mediatitle).appendTo(tr);
|
||||
$("<td/>").text(c.registered ? "Yes" : "No").appendTo(tr);
|
||||
$("<td/>").text(c.is_public ? "Yes" : "No").appendTo(tr);
|
||||
$("<button/>").addClass("btn btn-danger btn-mini")
|
||||
.text("Force Unload")
|
||||
.appendTo($("<td/>").appendTo(tr))
|
||||
.click(function() {
|
||||
var go = confirm("Really force unload?");
|
||||
if(go) {
|
||||
socket.emit("acp-channel-unload", {
|
||||
name: c.name,
|
||||
save: true
|
||||
});
|
||||
socket.emit("acp-list-loaded");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var tr = $("<tr/>").appendTo($("#channellist table"));
|
||||
$("<td/>").text("Total").appendTo(tr);
|
||||
$("<td/>").text(total).appendTo(tr);
|
||||
$("<td/>").appendTo(tr);
|
||||
$("<td/>").appendTo(tr);
|
||||
$("<td/>").appendTo(tr);
|
||||
$("<td/>").appendTo(tr);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* cookie util */
|
||||
|
|
Loading…
Reference in New Issue