summaryrefslogtreecommitdiff
path: root/node_modules/global-tunnel-ng/lib/agents.js
diff options
context:
space:
mode:
authorLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
committerLinuxWizard42 <computerwizard@linuxmail.org>2022-10-12 22:54:37 +0300
commit703e03aba33f234712206769f57717ba7d92d23d (patch)
tree0041f04ccb75bd5379c764e9fe42249fffe75fc3 /node_modules/global-tunnel-ng/lib/agents.js
parentab6e257e6e9d9a483d7e86f220d8b209a2cd7753 (diff)
downloadFlashRunner-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.js52
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);
+ };
+}