shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
57 lines (48 loc) • 2.21 kB
JavaScript
const os = require('os');
const path = require('path');
const program = require('commander');
const version = appRequire('package').version;
const log = appRequire('init/log');
const log4js = require('log4js');
const logger = log4js.getLogger('system');
const ssmgrPath = path.resolve(os.homedir(), './.ssmgr/');
program
.version('shadowsocks-manager ' + version)
.option('-c, --config [file]', 'config file, default: ~/.ssmgr/default.yml')
.option('-d, --db [file]', 'sqlite3 file, sample: ~/.ssmgr/db.sqlite')
.option('-t, --type [type]', 'type, s for server side, m for manager side')
.option('-s, --shadowsocks [address]', 'ss-manager address, sample: 127.0.0.1:6001')
.option('-m, --manager [address]', 'manager address, sample: 0.0.0.0:6002')
.option('-p, --password [password]', 'manager password, both server side and manager side must be equals')
.option('-r, --run [type]', 'run shadowsocks from child_process, sample: libev / libev:aes-256-cfb / python / python:aes-256-cfb')
.option('--debug', 'show debug message')
.option('--multiCore', 'multi core')
.option('--isGfwUrl [isGfwUrl]', 'custom gfw status url')
.parse(process.argv);
if(program.config) { global.configFile = program.config; }
if(!program.debug) {
log.setConsoleLevel('ERROR');
}
const config = appRequire('services/config');
let logName = 'uname';
if(program.type) {config.set('type', program.type);}
if(program.shadowsocks) {config.set('shadowsocks.address', program.shadowsocks);}
if(program.manager) {config.set('manager.address', program.manager);}
if(program.password) {config.set('manager.password', program.password);}
if(program.db) {config.set('db', program.db);}
if(program.isGfwUrl) {config.set('isGfwUrl', program.isGfwUrl);}
if (typeof config.get('db') === 'object') {
logName = config.get('db.database');
} else {
const dbpath = config.get('db');
logName = path.basename(dbpath).split('.')[0];
if (dbpath[0] === '/' || dbpath[0] === '.' || dbpath[0] === '~') {
config.set('db', path.resolve(dbpath));
} else {
config.set('db', path.resolve(ssmgrPath, dbpath));
}
}
log.setFileAppenders(logName);
if(program.run) {
config.set('runShadowsocks', program.run);
}