stop relying on netflux-server internals
* create RPC module from inside historyKeeper * stop passing around netflux-server context * update to use newer netflux-server's formal APIs * manage your own cache of indexes instead of storing things in the netflux context
This commit is contained in:
@@ -6,25 +6,15 @@ var Fs = require("fs");
|
||||
|
||||
var Admin = module.exports;
|
||||
|
||||
var getActiveSessions = function (Env, ctx, cb) {
|
||||
var total = ctx.users ? Object.keys(ctx.users).length : '?';
|
||||
|
||||
var ips = [];
|
||||
Object.keys(ctx.users).forEach(function (u) {
|
||||
var user = ctx.users[u];
|
||||
var socket = user.socket;
|
||||
var req = socket.upgradeReq;
|
||||
var conn = req && req.connection;
|
||||
var ip = (req && req.headers && req.headers['x-forwarded-for']) || (conn && conn.remoteAddress);
|
||||
if (ip && ips.indexOf(ip) === -1) {
|
||||
ips.push(ip);
|
||||
}
|
||||
});
|
||||
|
||||
cb (void 0, [total, ips.length]);
|
||||
var getActiveSessions = function (Env, Server, cb) {
|
||||
var stats = Server.getSessionStats();
|
||||
cb(void 0, [
|
||||
stats.total,
|
||||
stats.unique
|
||||
]);
|
||||
};
|
||||
|
||||
var shutdown = function (Env, ctx, cb) {
|
||||
var shutdown = function (Env, Server, cb) {
|
||||
return void cb('E_NOT_IMPLEMENTED');
|
||||
//clearInterval(Env.sessionExpirationInterval);
|
||||
// XXX set a flag to prevent incoming database writes
|
||||
@@ -91,19 +81,18 @@ var getDiskUsage = function (Env, cb) {
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
Admin.command = function (Env, ctx, publicKey, data, cb) {
|
||||
Admin.command = function (Env, Server, publicKey, data, cb) {
|
||||
var admins = Env.admins;
|
||||
if (admins.indexOf(publicKey) === -1) {
|
||||
return void cb("FORBIDDEN");
|
||||
}
|
||||
|
||||
// Handle commands here
|
||||
switch (data[0]) {
|
||||
case 'ACTIVE_SESSIONS':
|
||||
return getActiveSessions(Env, ctx, cb);
|
||||
return getActiveSessions(Env, Server, cb);
|
||||
case 'ACTIVE_PADS':
|
||||
return cb(void 0, ctx.channels ? Object.keys(ctx.channels).length : '?');
|
||||
return cb(void 0, Server.getActiveChannelCount());
|
||||
case 'REGISTERED_USERS':
|
||||
return getRegisteredUsers(Env, cb);
|
||||
case 'DISK_USAGE':
|
||||
@@ -112,7 +101,7 @@ Admin.command = function (Env, ctx, publicKey, data, cb) {
|
||||
Env.flushCache();
|
||||
return cb(void 0, true);
|
||||
case 'SHUTDOWN':
|
||||
return shutdown(Env, ctx, cb);
|
||||
return shutdown(Env, Server, cb);
|
||||
default:
|
||||
return cb('UNHANDLED_ADMIN_COMMAND');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user