shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
48 lines (41 loc) • 1.45 kB
JavaScript
;
const inquirer = require('inquirer');
const flow = appRequire('plugins/flowSaver/flow');
const index = appRequire('plugins/cli/index');
const flowSaverServer = appRequire('plugins/flowSaver/server');
const menu = [{
type: 'list',
name: 'flow',
message: 'Select time:',
choices: ['5 mins', '1 hour', '24 hours']
}];
const flowNumber = number => {
if (number < 1000) return number + ' B';else if (number < 1000 * 1000) return number / 1000 + ' KB';else if (number < 1000 * 1000 * 1000) return (number / 1000000).toFixed(2) + ' MB';else if (number < 1000 * 1000 * 1000 * 1000) return (number / 1000000000).toFixed(3) + ' GB';
};
const getFlow = async () => {
try {
const flowTime = await inquirer.prompt(menu);
const managerAddress = index.getManagerAddress();
let startTime = Date.now();
const endTime = Date.now();
if (flowTime.flow === '5 mins') {
startTime -= 5 * 60 * 1000;
} else if (flowTime.flow === '1 hour') {
startTime -= 60 * 60 * 1000;
} else if (flowTime.flow === '24 hours') {
startTime -= 24 * 60 * 60 * 1000;
}
const myFlow = await flow.getFlow(managerAddress.host, managerAddress.port, startTime, endTime);
console.log(myFlow.map(m => {
return {
port: m.port,
flow: flowNumber(m.sumFlow)
};
}));
return;
} catch (err) {
console.log(err);
return Promise.reject(err);
}
};
exports.getFlow = getFlow;