Connecting to a SSL/TLS kiwi proxy
authorDarren <darren@darrenwhitlen.com>
Thu, 23 Jan 2014 21:09:59 +0000 (21:09 +0000)
committerDarren <darren@darrenwhitlen.com>
Thu, 23 Jan 2014 21:09:59 +0000 (21:09 +0000)
server/irc/connection.js
server/proxy.js

index 5e534a3cb71042dd1b42ab7f143f6b4f43aee802..16c99f600d00ab140f4a0aa7cd3d053a2e2cc4e5 100644 (file)
@@ -102,7 +102,7 @@ var IrcConnection = function (hostname, port, ssl, nick, user, options, state, c
         this.socks = false;
     }
 
-    // Kiwi proxy info may be set within a server module. {port: 7779, host: 'kiwi.proxy.com'}
+    // Kiwi proxy info may be set within a server module. {port: 7779, host: 'kiwi.proxy.com', ssl: false}
     this.proxy = false;
 
     // Net. interface this connection should be made through
index 91dbbf18a1e4ec4300f08480640935406402f058..5950dcf6a16921d6334141475b4366f25c0c9550 100644 (file)
@@ -233,12 +233,13 @@ ProxyPipe.prototype.startPiping = function() {
  * ProxySocket
  * Transparent socket interface to a kiwi proxy
  */
-function ProxySocket(proxy_port, proxy_addr, meta) {
+function ProxySocket(proxy_port, proxy_addr, meta, proxy_opts) {
     stream.Duplex.call(this);
 
     this.connected_fn = null;
     this.proxy_addr   = proxy_addr;
     this.proxy_port   = proxy_port;
+    this.proxy_opts   = proxy_opts || {};
     this.meta         = meta || {};
 
     this.state = 'disconnected';
@@ -263,7 +264,9 @@ ProxySocket.prototype.connect = function(dest_port, dest_addr, connected_fn) {
     }
 
     debug('[KiwiProxy] Connecting to proxy ' + this.proxy_addr + ':' + this.proxy_port.toString());
-    this.socket = net.connect(this.proxy_port, this.proxy_addr, this._onSocketConnect.bind(this));
+    this.socket = this.proxy_opts.ssl ?
+        tls.connect(this.proxy_port, this.proxy_addr, this._onSocketConnect.bind(this)) :
+        net.connect(this.proxy_port, this.proxy_addr, this._onSocketConnect.bind(this));
     this.socket.setTimeout(10000);
 
     this.socket.on('data', this._onSocketData.bind(this));