anyproxy/bin/anyproxy

55 lines
1.5 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
const program = require('commander'),
color = require('colorful'),
co = require('co'),
packageInfo = require('../package.json'),
util = require('../lib/util'),
rootCACheck = require('./rootCACheck'),
startServer = require('./startServer'),
logUtil = require('../lib/log');
program
.version(packageInfo.version)
.option('-p, --port [value]', 'proxy port, 8001 for default')
.option('-w, --web [value]', 'web GUI port, 8002 for default')
.option('-r, --rule [value]', 'path for rule file,')
.option('-l, --throttle [value]', 'throttle speed in kb/s (kbyte / sec)')
.option('-i, --intercept', 'intercept(decrypt) https requests when root CA exists')
.option('-s, --silent', 'do not print anything into terminal')
.option('-c, --clear', 'clear all the certificates and temp files')
.option('--ws-intercept', 'intercept websocket')
.option('--ignore-unauthorized-ssl', 'ignore all ssl error')
.parse(process.argv);
if (program.clear) {
require('../lib/certMgr').clearCerts(() => {
util.deleteFolderContentsRecursive(util.getAnyProxyPath('cache'));
console.log(color.green('done !'));
process.exit(0);
});
} else if (program.root) {
require('../lib/certMgr').generateRootCA(() => {
process.exit(0);
});
} else {
co(function *() {
if (program.silent) {
logUtil.setPrintStatus(false);
}
if (program.intercept) {
try {
yield rootCACheck();
} catch (e) {
console.error(e);
}
}
return startServer(program);
})
}