mirror of
https://github.com/avwo/whistle.git
synced 2026-10-19 07:01:44 +08:00
refine code
This commit is contained in:
+14
-18
@@ -65,19 +65,25 @@ function handleWebsocket(socket, wss, callback) {
|
||||
destroy(new Error('timeout'));
|
||||
});
|
||||
|
||||
if (proxyUrl) {
|
||||
var isSocks = /^socks:\/\//.test(proxyUrl);
|
||||
proxyUrl = (wss ? 'wss:' : 'ws:') + util.removeProtocol(proxyUrl);
|
||||
function resolveHost(url, callback) {
|
||||
rules.resolveHost(proxyUrl, function(err, ip, customHost) {
|
||||
reqEmitter.customHost = customHost;
|
||||
if (err) {
|
||||
return execCallback(err);
|
||||
}
|
||||
|
||||
options = url.parse(proxyUrl);
|
||||
reqEmitter.customHost = customHost;
|
||||
reqEmitter.host = ip;
|
||||
reqEmitter.dnsTime = Date.now() - now;
|
||||
reqEmitter.emit('send');
|
||||
callback(ip);
|
||||
}, mustRemoteHost);
|
||||
}
|
||||
|
||||
if (proxyUrl) {
|
||||
var isSocks = /^socks:\/\//.test(proxyUrl);
|
||||
proxyUrl = (wss ? 'wss:' : 'ws:') + util.removeProtocol(proxyUrl);
|
||||
resolveHost(proxyUrl, function(ip) {
|
||||
options = url.parse(proxyUrl);
|
||||
if (util.isLocalAddress(ip) && (!options.port || options.port == config.port)) {
|
||||
return execCallback(new Error('Unable to agent to itself (' + ip + ':' + config.port + ')'));
|
||||
}
|
||||
@@ -102,8 +108,7 @@ function handleWebsocket(socket, wss, callback) {
|
||||
abortIfUnavailable(reqSocket);
|
||||
pipeData();
|
||||
});
|
||||
|
||||
}, mustRemoteHost);
|
||||
});
|
||||
} else {
|
||||
matchedUrl = util.rule.getUrl(_rules.rule);
|
||||
if (/^wss?:\/\//.test(matchedUrl)) {
|
||||
@@ -113,16 +118,7 @@ function handleWebsocket(socket, wss, callback) {
|
||||
}
|
||||
|
||||
options = url.parse(fullUrl);
|
||||
|
||||
rules.resolveHost(fullUrl, function(err, ip, customHost) {
|
||||
reqEmitter.customHost = customHost;
|
||||
if (err) {
|
||||
return execCallback(err);
|
||||
}
|
||||
reqEmitter.host = ip;
|
||||
reqEmitter.dnsTime = Date.now() - now;
|
||||
reqEmitter.emit('send');
|
||||
|
||||
resolveHost(fullUrl, function(ip) {
|
||||
var isWss = options.protocol == 'wss';
|
||||
reqSocket = (isWss ? tls : net).connect({
|
||||
rejectUnauthorized: false,
|
||||
@@ -130,7 +126,7 @@ function handleWebsocket(socket, wss, callback) {
|
||||
port: options.port || (isWss ? 443 : 80)
|
||||
}, pipeData);
|
||||
abortIfUnavailable(reqSocket);
|
||||
}, mustRemoteHost);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user