update eslint config

This commit is contained in:
xiaofeng.mxf 2020-01-01 16:45:58 +08:00
parent f653718dc4
commit 8951fb68ef
10 changed files with 160 additions and 163 deletions

View File

@ -87,7 +87,7 @@ class Recorder extends events.EventEmitter {
this.cachePath = getCacheDir();
this.db = new Datastore();
this.recordBodyMap = []; // id - body
this.recordBodyMap = []; // id - body
}
setDbAutoCompact() {

View File

@ -365,7 +365,7 @@ function getUserReqHandler(userRule, recorder) {
if (!global._throttle
&& transferEncoding !== 'chunked'
&& !(responseBody instanceof CommonReadableStream)
) {
) {
resHeader['Content-Length'] = util.getByteSize(responseBody);
}
@ -550,142 +550,142 @@ function getConnectReqHandler(userRule, recorder, httpsServerMgr) {
shouldIntercept = reqHandlerCtx.forceProxyHttps;
}
})
.then(() => {
return new Promise((resolve) => {
.then(() => {
return new Promise((resolve) => {
// mark socket connection as established, to detect the request protocol
cltSocket.write('HTTP/' + req.httpVersion + ' 200 OK\r\n\r\n', 'UTF-8', resolve);
});
})
.then(() => {
return new Promise((resolve, reject) => {
let resolved = false;
cltSocket.on('data', (chunk) => {
requestStream.push(chunk);
if (!resolved) {
resolved = true;
try {
const chunkString = chunk.toString();
if (chunkString.indexOf('GET ') === 0) {
shouldIntercept = false; // websocket, do not intercept
// if there is '/do-not-proxy' in the request, do not intercept the websocket
// to avoid AnyProxy itself be proxied
if (reqHandlerCtx.wsIntercept && chunkString.indexOf('GET /do-not-proxy') !== 0) {
interceptWsRequest = true;
}
}
} catch (e) {
console.error(e);
}
resolve();
}
cltSocket.write('HTTP/' + req.httpVersion + ' 200 OK\r\n\r\n', 'UTF-8', resolve);
});
cltSocket.on('error', (error) => {
logUtil.printLog(util.collectErrorLog(error), logUtil.T_ERR);
co.wrap(function *() {
try {
yield userRule.onClientSocketError(requestDetail, error);
} catch (e) { }
})
.then(() => {
return new Promise((resolve, reject) => {
let resolved = false;
cltSocket.on('data', (chunk) => {
requestStream.push(chunk);
if (!resolved) {
resolved = true;
try {
const chunkString = chunk.toString();
if (chunkString.indexOf('GET ') === 0) {
shouldIntercept = false; // websocket, do not intercept
// if there is '/do-not-proxy' in the request, do not intercept the websocket
// to avoid AnyProxy itself be proxied
if (reqHandlerCtx.wsIntercept && chunkString.indexOf('GET /do-not-proxy') !== 0) {
interceptWsRequest = true;
}
}
} catch (e) {
console.error(e);
}
resolve();
}
});
cltSocket.on('error', (error) => {
logUtil.printLog(util.collectErrorLog(error), logUtil.T_ERR);
co.wrap(function *() {
try {
yield userRule.onClientSocketError(requestDetail, error);
} catch (e) { }
});
});
cltSocket.on('end', () => {
requestStream.push(null);
});
});
cltSocket.on('end', () => {
requestStream.push(null);
});
});
})
.then((result) => {
})
.then((result) => {
// log and recorder
if (shouldIntercept) {
logUtil.printLog('will forward to local https server');
} else {
logUtil.printLog('will bypass the man-in-the-middle proxy');
}
if (shouldIntercept) {
logUtil.printLog('will forward to local https server');
} else {
logUtil.printLog('will bypass the man-in-the-middle proxy');
}
//record
if (recorder) {
resourceInfo = {
host,
method: req.method,
path: '',
url: 'https://' + host,
req,
startTime: new Date().getTime()
};
resourceInfoId = recorder.appendRecord(resourceInfo);
}
})
.then(() => {
//record
if (recorder) {
resourceInfo = {
host,
method: req.method,
path: '',
url: 'https://' + host,
req,
startTime: new Date().getTime()
};
resourceInfoId = recorder.appendRecord(resourceInfo);
}
})
.then(() => {
// determine the request target
if (!shouldIntercept) {
if (!shouldIntercept) {
// server info from the original request
const originServer = {
host,
port: (targetPort === 80) ? 443 : targetPort
}
const localHttpServer = {
host: 'localhost',
port: reqHandlerCtx.httpServerPort
}
// for ws request, redirect them to local ws server
return interceptWsRequest ? localHttpServer : originServer;
} else {
return httpsServerMgr.getSharedHttpsServer(host).then(serverInfo => ({ host: serverInfo.host, port: serverInfo.port }));
}
})
.then((serverInfo) => {
if (!serverInfo.port || !serverInfo.host) {
throw new Error('failed to get https server info');
}
return new Promise((resolve, reject) => {
const conn = net.connect(serverInfo.port, serverInfo.host, () => {
//throttle for direct-foward https
if (global._throttle && !shouldIntercept) {
requestStream.pipe(conn);
conn.pipe(global._throttle.throttle()).pipe(cltSocket);
} else {
requestStream.pipe(conn);
conn.pipe(cltSocket);
const originServer = {
host,
port: (targetPort === 80) ? 443 : targetPort
}
resolve();
const localHttpServer = {
host: 'localhost',
port: reqHandlerCtx.httpServerPort
}
// for ws request, redirect them to local ws server
return interceptWsRequest ? localHttpServer : originServer;
} else {
return httpsServerMgr.getSharedHttpsServer(host).then(serverInfo => ({ host: serverInfo.host, port: serverInfo.port }));
}
})
.then((serverInfo) => {
if (!serverInfo.port || !serverInfo.host) {
throw new Error('failed to get https server info');
}
return new Promise((resolve, reject) => {
const conn = net.connect(serverInfo.port, serverInfo.host, () => {
//throttle for direct-foward https
if (global._throttle && !shouldIntercept) {
requestStream.pipe(conn);
conn.pipe(global._throttle.throttle()).pipe(cltSocket);
} else {
requestStream.pipe(conn);
conn.pipe(cltSocket);
}
resolve();
});
conn.on('error', (e) => {
reject(e);
});
reqHandlerCtx.conns.set(serverInfo.host + ':' + serverInfo.port, conn)
reqHandlerCtx.cltSockets.set(serverInfo.host + ':' + serverInfo.port, cltSocket)
});
})
.then(() => {
if (recorder) {
resourceInfo.endTime = new Date().getTime();
resourceInfo.statusCode = '200';
resourceInfo.resHeader = {};
resourceInfo.resBody = '';
resourceInfo.length = 0;
conn.on('error', (e) => {
reject(e);
});
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
}
})
.catch(co.wrap(function *(error) {
logUtil.printLog(util.collectErrorLog(error), logUtil.T_ERR);
reqHandlerCtx.conns.set(serverInfo.host + ':' + serverInfo.port, conn)
reqHandlerCtx.cltSockets.set(serverInfo.host + ':' + serverInfo.port, cltSocket)
});
})
.then(() => {
if (recorder) {
resourceInfo.endTime = new Date().getTime();
resourceInfo.statusCode = '200';
resourceInfo.resHeader = {};
resourceInfo.resBody = '';
resourceInfo.length = 0;
try {
yield userRule.onConnectError(requestDetail, error);
} catch (e) { }
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
}
})
.catch(co.wrap(function *(error) {
logUtil.printLog(util.collectErrorLog(error), logUtil.T_ERR);
try {
yield userRule.onConnectError(requestDetail, error);
} catch (e) { }
try {
let errorHeader = 'Proxy-Error: true\r\n';
errorHeader += 'Proxy-Error-Message: ' + (error || 'null') + '\r\n';
errorHeader += 'Content-Type: text/html\r\n';
cltSocket.write('HTTP/1.1 502\r\n' + errorHeader + '\r\n\r\n');
} catch (e) { }
}));
try {
let errorHeader = 'Proxy-Error: true\r\n';
errorHeader += 'Proxy-Error-Message: ' + (error || 'null') + '\r\n';
errorHeader += 'Content-Type: text/html\r\n';
cltSocket.write('HTTP/1.1 502\r\n' + errorHeader + '\r\n\r\n');
} catch (e) { }
}));
}
}
@ -844,7 +844,6 @@ function getWsHandler(userRule, recorder, wsClient, wsReq) {
}
class RequestHandler {
/**
* Creates an instance of RequestHandler.
*

View File

@ -82,16 +82,16 @@ macProxyManager.enableGlobalProxy = (ip, port, proxyType) => {
// set http proxy
execSync(
'networksetup -setwebproxy ${networkType} ${ip} ${port} && networksetup -setproxybypassdomains ${networkType} 127.0.0.1 localhost'
.replace(/\${networkType}/g, networkType)
.replace('${ip}', ip)
.replace('${port}', port)) :
'networksetup -setwebproxy ${networkType} ${ip} ${port} && networksetup -setproxybypassdomains ${networkType} 127.0.0.1 localhost'
.replace(/\${networkType}/g, networkType)
.replace('${ip}', ip)
.replace('${port}', port)) :
// set https proxy
execSync('networksetup -setsecurewebproxy ${networkType} ${ip} ${port} && networksetup -setproxybypassdomains ${networkType} 127.0.0.1 localhost'
.replace(/\${networkType}/g, networkType)
.replace('${ip}', ip)
.replace('${port}', port));
.replace(/\${networkType}/g, networkType)
.replace('${ip}', ip)
.replace('${port}', port));
};
macProxyManager.disableGlobalProxy = (proxyType) => {
@ -101,13 +101,13 @@ macProxyManager.disableGlobalProxy = (proxyType) => {
// set http proxy
execSync(
'networksetup -setwebproxystate ${networkType} off'
.replace('${networkType}', networkType)) :
'networksetup -setwebproxystate ${networkType} off'
.replace('${networkType}', networkType)) :
// set https proxy
execSync(
'networksetup -setsecurewebproxystate ${networkType} off'
.replace('${networkType}', networkType));
'networksetup -setsecurewebproxystate ${networkType} off'
.replace('${networkType}', networkType));
};
macProxyManager.getProxyState = () => {
@ -136,8 +136,8 @@ winProxyManager.enableGlobalProxy = (ip, port) => {
return execSync(
// set proxy
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" /v ProxyServer /t REG_SZ /d ${ip}:${port} /f & '
.replace('${ip}', ip)
.replace('${port}', port) +
.replace('${ip}', ip)
.replace('${port}', port) +
// enable proxy
'reg add "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f');

View File

@ -29,7 +29,6 @@ const certFileTypes = ['crt', 'cer', 'pem', 'der'];
* @extends {events.EventEmitter}
*/
class webInterface extends events.EventEmitter {
/**
* Creates an instance of webInterface.
*

View File

@ -3,7 +3,7 @@ const exec = require('child_process').exec;
if (!AnyProxy.utils.certMgr.ifRootCAFileExists()) {
AnyProxy.utils.certMgr.generateRootCA((error, keyPath) => {
// let users to trust this CA before using proxy
// let users to trust this CA before using proxy
if (!error) {
const certDir = require('path').dirname(keyPath);
console.log('The cert is generated at', certDir);
@ -18,6 +18,6 @@ if (!AnyProxy.utils.certMgr.ifRootCAFileExists()) {
}
});
} else {
// clear all the certificates
// AnyProxy.utils.certMgr.clearCerts()
// clear all the certificates
// AnyProxy.utils.certMgr.clearCerts()
}

View File

@ -54,7 +54,7 @@
"babel-register": "^6.11.6",
"babel-runtime": "^6.11.6",
"css-loader": "^0.23.1",
"eslint": "^3.5.0",
"eslint": ">=4.18.2",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",

View File

@ -47,7 +47,6 @@ const PROXY_STATUS_CLOSED = 'CLOSED';
* @extends {events.EventEmitter}
*/
class ProxyCore extends events.EventEmitter {
/**
* Creates an instance of ProxyCore.
*
@ -135,7 +134,7 @@ class ProxyCore extends events.EventEmitter {
*/
handleExistConnections(socket) {
const self = this;
self.socketIndex ++;
self.socketIndex++;
const key = `socketIndex_${self.socketIndex}`;
self.socketPool[key] = socket;

View File

@ -63,20 +63,20 @@ function test(url, requestHeaders = {}) {
done();
});
})
.catch((err) => {
printError(err);
done();
});
})
.catch((err) => {
printError(err);
done();
});
})
})
.catch((err) => {
printError(err);
done();
});
})
.catch((err) => {
printError(err);
done();
});
});
})
})

View File

@ -328,16 +328,16 @@ function getRequestListFromPage(pageUrl, cb) {
}, _outObj);
return _page.open(pageUrl);
})
.then(status => _outObj.property('urls'))
.then(urls => {
_page.close();
_ph.exit();
return urls;
})
.catch((err) => {
console.log(`failed to collecting requests from ${pageUrl}`);
console.log(err);
});
.then(status => _outObj.property('urls'))
.then(urls => {
_page.close();
_ph.exit();
return urls;
})
.catch((err) => {
console.log(`failed to collecting requests from ${pageUrl}`);
console.log(err);
});
}

View File

@ -10,10 +10,10 @@ const DEFAULT_OPTIONS = {
port: 8001,
webInterface: {
enable: true,
webPort: 8002, // optional, port for web interface
webPort: 8002, // optional, port for web interface
},
wsIntercept: true,
throttle: 10000, // optional, speed limit in kb/s
throttle: 10000, // optional, speed limit in kb/s
forceProxyHttps: true, // intercept https as well
dangerouslyIgnoreUnauthorized: true,
silent: false //optional, do not print anything into terminal. do not set it when you are still debugging.