diff options
author | LinuxWizard42 <computerwizard@linuxmail.org> | 2022-10-12 22:54:37 +0300 |
---|---|---|
committer | LinuxWizard42 <computerwizard@linuxmail.org> | 2022-10-12 22:54:37 +0300 |
commit | 703e03aba33f234712206769f57717ba7d92d23d (patch) | |
tree | 0041f04ccb75bd5379c764e9fe42249fffe75fc3 /node_modules/global-tunnel-ng/lib/agents.js | |
parent | ab6e257e6e9d9a483d7e86f220d8b209a2cd7753 (diff) | |
download | FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.gz FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.zst |
Added export_allowed file to make repository visible in cgit
Diffstat (limited to 'node_modules/global-tunnel-ng/lib/agents.js')
-rw-r--r-- | node_modules/global-tunnel-ng/lib/agents.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/global-tunnel-ng/lib/agents.js b/node_modules/global-tunnel-ng/lib/agents.js new file mode 100644 index 0000000..28bea61 --- /dev/null +++ b/node_modules/global-tunnel-ng/lib/agents.js @@ -0,0 +1,52 @@ +/* jshint node:true */ +'use strict'; + +var util = require('util'); +var http = require('http'); +var HttpAgent = http.Agent; +var https = require('https'); +var HttpsAgent = https.Agent; + +var pick = require('lodash/pick'); + +/** + * Proxy some traffic over HTTP. + */ +function OuterHttpAgent(opts) { + HttpAgent.call(this, opts); + mixinProxying(this, opts.proxy); +} +util.inherits(OuterHttpAgent, HttpAgent); +exports.OuterHttpAgent = OuterHttpAgent; + +/** + * Proxy some traffic over HTTPS. + */ +function OuterHttpsAgent(opts) { + HttpsAgent.call(this, opts); + mixinProxying(this, opts.proxy); +} +util.inherits(OuterHttpsAgent, HttpsAgent); +exports.OuterHttpsAgent = OuterHttpsAgent; + +/** + * Override createConnection and addRequest methods on the supplied agent. + * http.Agent and https.Agent will set up createConnection in the constructor. + */ +function mixinProxying(agent, proxyOpts) { + agent.proxy = proxyOpts; + + var orig = pick(agent, 'createConnection', 'addRequest'); + + // Make the tcp or tls connection go to the proxy, ignoring the + // destination host:port arguments. + agent.createConnection = function(port, host, options) { + return orig.createConnection.call(this, this.proxy.port, this.proxy.host, options); + }; + + agent.addRequest = function(req, options) { + req.path = + this.proxy.innerProtocol + '//' + options.host + ':' + options.port + req.path; + return orig.addRequest.call(this, req, options); + }; +} |