mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Merge pull request #2983 from hardillb/get-got
Get got working with proxies
This commit is contained in:
commit
fc8643f238
@ -65,6 +65,8 @@ module.exports = function(RED) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.on("input",function(msg,nodeSend,nodeDone) {
|
this.on("input",function(msg,nodeSend,nodeDone) {
|
||||||
|
//reset redirectList on each request
|
||||||
|
redirectList = [];
|
||||||
var preRequestTimestamp = process.hrtime();
|
var preRequestTimestamp = process.hrtime();
|
||||||
node.status({fill:"blue",shape:"dot",text:"httpin.status.requesting"});
|
node.status({fill:"blue",shape:"dot",text:"httpin.status.requesting"});
|
||||||
var url = nodeUrl || msg.url;
|
var url = nodeUrl || msg.url;
|
||||||
@ -106,11 +108,12 @@ module.exports = function(RED) {
|
|||||||
method = msg.method.toUpperCase(); // use the msg parameter
|
method = msg.method.toUpperCase(); // use the msg parameter
|
||||||
}
|
}
|
||||||
|
|
||||||
var isHttps = (/^https/i.test(url));
|
// var isHttps = (/^https/i.test(url));
|
||||||
|
|
||||||
var opts = {};
|
var opts = {};
|
||||||
// set defaultport, else when using HttpsProxyAgent, it's defaultPort of 443 will be used :(.
|
// set defaultport, else when using HttpsProxyAgent, it's defaultPort of 443 will be used :(.
|
||||||
opts.defaultPort = isHttps?443:80;
|
// Had to remove this to get http->https redirect to work
|
||||||
|
// opts.defaultPort = isHttps?443:80;
|
||||||
opts.timeout = node.reqTimeout;
|
opts.timeout = node.reqTimeout;
|
||||||
opts.method = method;
|
opts.method = method;
|
||||||
opts.headers = {};
|
opts.headers = {};
|
||||||
@ -339,8 +342,16 @@ module.exports = function(RED) {
|
|||||||
var match = prox.match(/^(https?:\/\/)?(.+)?:([0-9]+)?/i);
|
var match = prox.match(/^(https?:\/\/)?(.+)?:([0-9]+)?/i);
|
||||||
if (match) {
|
if (match) {
|
||||||
let proxyAgent;
|
let proxyAgent;
|
||||||
|
let proxyURL = new URL(prox);
|
||||||
|
//set username/password to null to stop empty creds header
|
||||||
let proxyOptions = {
|
let proxyOptions = {
|
||||||
proxy: prox,
|
proxy: {
|
||||||
|
protocol: proxyURL.protocol,
|
||||||
|
hostname: proxyURL.hostname,
|
||||||
|
port: proxyURL.port,
|
||||||
|
username: null,
|
||||||
|
password: null
|
||||||
|
},
|
||||||
maxFreeSockets: 256,
|
maxFreeSockets: 256,
|
||||||
maxSockets: 256,
|
maxSockets: 256,
|
||||||
keepAlive: true
|
keepAlive: true
|
||||||
@ -349,17 +360,16 @@ module.exports = function(RED) {
|
|||||||
let proxyUsername = proxyConfig.credentials.username || '';
|
let proxyUsername = proxyConfig.credentials.username || '';
|
||||||
let proxyPassword = proxyConfig.credentials.password || '';
|
let proxyPassword = proxyConfig.credentials.password || '';
|
||||||
if (proxyUsername || proxyPassword) {
|
if (proxyUsername || proxyPassword) {
|
||||||
var m = /^(https?:\/\/)(.*)$/.exec(prox);
|
proxyOptions.proxy.username = proxyUsername;
|
||||||
proxyOptions.proxy = `${m[1]}${proxyUsername}:${proxyPassword}@${m[2]}`
|
proxyOptions.proxy.password = proxyPassword;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
opts.agent = {};
|
//need both incase of http -> https redirec
|
||||||
if (/^http:/.test(url)) {
|
opts.agent = {
|
||||||
opts.agent.http = new HttpProxyAgent(proxyOptions)
|
http: new HttpProxyAgent(proxyOptions),
|
||||||
} else {
|
https: new HttpsProxyAgent(proxyOptions)
|
||||||
opts.agent.https = new HttpsProxyAgent(proxyOptions)
|
};
|
||||||
}
|
|
||||||
console.log("ProxyOptions:",proxyOptions);
|
|
||||||
} else {
|
} else {
|
||||||
node.warn("Bad proxy url: "+ prox);
|
node.warn("Bad proxy url: "+ prox);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user