From 2de0e13ec58402d63b71ce26fd9e8b437c6cc575 Mon Sep 17 00:00:00 2001 From: Reed Rosenbluth Date: Mon, 20 Jul 2015 17:28:25 -0700 Subject: [PATCH] proxy support --- package.json | 1 + src/core/server.js | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4bb6edc6..a0ed196b 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "babel-runtime": "^5.5.4", "bignumber.js": "^2.0.3", "extend": "~1.2.1", + "https-proxy-agent": "^1.0.0", "is-my-json-valid": "^2.12.0", "lodash": "^3.1.0", "lru-cache": "~2.5.0", diff --git a/src/core/server.js b/src/core/server.js index fff5842e..604ae39c 100644 --- a/src/core/server.js +++ b/src/core/server.js @@ -3,6 +3,7 @@ const _ = require('lodash'); const util = require('util'); const url = require('url'); +const HttpsProxyAgent = require('https-proxy-agent'); const LRU = require('lru-cache'); const EventEmitter = require('events').EventEmitter; const RippleError = require('./').RippleError; @@ -436,7 +437,18 @@ Server.prototype.connect = function() { log.info(this.getServerID(), 'connect'); } - const ws = this._ws = new WebSocket(this._opts.url); + if (this._remote.hasOwnProperty('proxy')) { + const parsed = url.parse(this._opts.url); + const opts = url.parse(this._remote.proxy); + opts.secureEndpoint = parsed.protocol === 'wss:'; + const agent = new HttpsProxyAgent(opts); + + this._ws = new WebSocket(this._opts.url, {agent: agent}); + } else { + this._ws = new WebSocket(this._opts.url); + } + + const ws = this._ws; this._shouldConnect = true;