summaryrefslogtreecommitdiff
path: root/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/node_modules/global-agent/src/classes/HttpsProxyAgent.js')
-rw-r--r--client/node_modules/global-agent/src/classes/HttpsProxyAgent.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js b/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js
new file mode 100644
index 0000000..24d724f
--- /dev/null
+++ b/client/node_modules/global-agent/src/classes/HttpsProxyAgent.js
@@ -0,0 +1,54 @@
+// @flow
+
+import net from 'net';
+import tls from 'tls';
+import type {
+ ConnectionCallbackType,
+ ConnectionConfigurationType,
+} from '../types';
+import Agent from './Agent';
+
+class HttpsProxyAgent extends Agent {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ constructor (...args: *) {
+ super(...args);
+
+ this.protocol = 'https:';
+ this.defaultPort = 443;
+ }
+
+ createConnection (configuration: ConnectionConfigurationType, callback: ConnectionCallbackType) {
+ const socket = net.connect(
+ configuration.proxy.port,
+ configuration.proxy.hostname,
+ );
+
+ socket.on('error', (error) => {
+ callback(error);
+ });
+
+ socket.once('data', () => {
+ const secureSocket = tls.connect({
+ ...configuration.tls,
+ socket,
+ });
+
+ callback(null, secureSocket);
+ });
+
+ let connectMessage = '';
+
+ connectMessage += 'CONNECT ' + configuration.host + ':' + configuration.port + ' HTTP/1.1\r\n';
+ connectMessage += 'Host: ' + configuration.host + ':' + configuration.port + '\r\n';
+
+ if (configuration.proxy.authorization) {
+ connectMessage += 'Proxy-Authorization: Basic ' + Buffer.from(configuration.proxy.authorization).toString('base64') + '\r\n';
+ }
+
+ connectMessage += '\r\n';
+
+ socket.write(connectMessage);
+ }
+}
+
+export default HttpsProxyAgent;