Updated to Express-ws 4.x

Ylian Saint-Hilaire committed Nov 30, 2018 at 21:23 UTC e8bcf423eab194e3f7c66aab87b9e89274fe7ce8
6 files changed +18 -18
agents/meshcore.js
+1 -1
@@ -413,7 +413,7 @@ function createMeshCore(agent) {
413 if (xurl != null) {
414 var woptions = http.parseUri(xurl);
415 woptions.rejectUnauthorized = 0;
416 - sendConsoleText(JSON.stringify(woptions));
416 + //sendConsoleText(JSON.stringify(woptions));
417 var tunnel = http.request(woptions);
418 tunnel.upgrade = onTunnelUpgrade;
419 tunnel.onerror = function (e) { sendConsoleText('ERROR: ' + JSON.stringify(e)); }
meshrelay.js
+5 -5
@@ -127,8 +127,8 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
127 relayinfo.state = 2;
128 obj.ws.send('c'); // Send connect to both peers
129 relayinfo.peer1.ws.send('c');
130 - relayinfo.peer1.ws.resume(); // Release the traffic
131 - relayinfo.peer2.ws.resume(); // Release the traffic
130 + relayinfo.peer1.ws._socket.resume(); // Release the traffic
131 + relayinfo.peer2.ws._socket.resume(); // Release the traffic
132
133 relayinfo.peer1.ws.peer = relayinfo.peer2.ws;
134 relayinfo.peer2.ws.peer = relayinfo.peer1.ws;
@@ -143,7 +143,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
143 }
144 } else {
145 // Wait for other relay connection
146 - ws.pause(); // Hold traffic until the other connection
146 + ws._socket.pause(); // Hold traffic until the other connection
147 parent.wsrelays[obj.id] = { peer1: obj, state: 1 };
148 obj.parent.parent.debug(1, 'Relay holding: ' + obj.id + ' (' + obj.remoteaddr + ') ' + (obj.authenticated ? 'Authenticated' : ''));
149
@@ -163,14 +163,14 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
163 }
164 }
165
166 - ws.flushSink = function () { try { ws.resume(); } catch (e) { } };
166 + ws.flushSink = function () { try { ws._socket.resume(); } catch (e) { } };
167
168 // When data is received from the mesh relay web socket
169 ws.on('message', function (data) {
170 //console.log(typeof data, data.length);
171 if (this.peer != null) {
172 //if (typeof data == 'string') { console.log('Relay: ' + data); } else { console.log('Relay:' + data.length + ' byte(s)'); }
173 - try { this.pause(); this.peer.send(data, ws.flushSink); } catch (e) { }
173 + try { this._socket.pause(); this.peer.send(data, ws.flushSink); } catch (e) { }
174 }
175 });
176
meshuser.js
+1 -1
@@ -1337,7 +1337,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1337 try { ws.send(JSON.stringify({ action: 'userinfo', userinfo: userinfo })); } catch (ex) { }
1338
1339 // We are all set, start receiving data
1340 - ws.resume();
1340 + ws._socket.resume();
1341 } catch (e) { console.log(e); }
1342
1343 // Read entire file and return it in callback function
multiserver.js
+3 -3
@@ -591,7 +591,7 @@ module.exports.CreateMultiServer = function (parent, args) {
591 peerTunnel.ws2.on('close', function (req) { peerTunnel.parent.parent.debug(1, 'FTunnel disconnect ' + peerTunnel.serverid); peerTunnel.close(); });
592
593 // If a message is received from the peer, Peer ---> Browser (TODO: Pipe this?)
594 - peerTunnel.ws2.on('message', function (msg) { try { peerTunnel.ws2.pause(); peerTunnel.ws1.send(msg, function () { peerTunnel.ws2.resume(); }); } catch (e) { } });
594 + peerTunnel.ws2.on('message', function (msg) { try { peerTunnel.ws2._socket.pause(); peerTunnel.ws1.send(msg, function () { peerTunnel.ws2._socket.resume(); }); } catch (e) { } });
595
596 // Register the connection event
597 peerTunnel.ws2.on('open', function () {
@@ -605,11 +605,11 @@ module.exports.CreateMultiServer = function (parent, args) {
605 if (obj.peerServers[serverid] == null || obj.peerServers[serverid].serverCertHash != serverCertHashHex) { console.log('ERROR: Outer certificate hash mismatch (1). (' + peerTunnel.url + ', ' + peerTunnel.serverid + ').'); peerTunnel.close(); return; }
606
607 // Connection accepted, resume the web socket to start the data flow
608 - peerTunnel.ws1.resume();
608 + peerTunnel.ws1._socket.resume();
609 });
610
611 // If a message is received from the browser, Browser ---> Peer
612 - peerTunnel.ws1.on('message', function (msg) { try { peerTunnel.ws1.pause(); peerTunnel.ws2.send(msg, function () { peerTunnel.ws1.resume(); }); } catch (e) { } });
612 + peerTunnel.ws1.on('message', function (msg) { try { peerTunnel.ws1._socket.pause(); peerTunnel.ws2.send(msg, function () { peerTunnel.ws1._socket.resume(); }); } catch (e) { } });
613
614 // If error, do nothing
615 peerTunnel.ws1.on('error', function (err) { peerTunnel.close(); });
package.json
+2 -2
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.2.3-w",
3 + "version": "0.2.3-x",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
@@ -34,7 +34,7 @@
34 "express": "^4.16.4",
35 "express-handlebars": "^3.0.0",
36 "express-session": "^1.15.6",
37 - "express-ws": "^3.0.0",
37 + "express-ws": "^4.0.0",
38 "le-acme-core": "^2.1.4",
39 "le-store-certbot": "^2.2.1",
40 "meshcentral": "*",
webserver.js
+6 -6
@@ -1184,7 +1184,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1184 var tlsoptions = { secureProtocol: ((req.query.tls1only == 1) ? 'TLSv1_method' : 'SSLv23_method'), ciphers: 'RSA+AES:!aNULL:!MD5:!DSS', secureOptions: obj.constants.SSL_OP_NO_SSLv2 | obj.constants.SSL_OP_NO_SSLv3 | obj.constants.SSL_OP_NO_COMPRESSION | obj.constants.SSL_OP_CIPHER_SERVER_PREFERENCE, rejectUnauthorized: false, cert: obj.certificates.console.cert, key: obj.certificates.console.key };
1185 var tlsock = new TLSSocket(ser, tlsoptions);
1186 tlsock.on('error', function (err) { Debug(1, "CIRA TLS Connection Error ", err); });
1187 - tlsock.on('secureConnect', function () { Debug(2, "CIRA Secure TLS Connection"); ws.resume(); });
1187 + tlsock.on('secureConnect', function () { Debug(2, "CIRA Secure TLS Connection"); ws._socket.resume(); });
1188
1189 // Decrypted tunnel from TLS communcation to be forwarded to websocket
1190 tlsock.on('data', function (data) {
@@ -1204,7 +1204,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1204 // Without TLS
1205 ws.forwardclient = parent.mpsserver.SetupCiraChannel(ciraconn, port);
1206 ws.forwardclient.xtls = 0;
1207 - ws.resume();
1207 + ws._socket.resume();
1208 }
1209
1210 // When data is received from the web socket, forward the data into the associated CIRA cahnnel.
@@ -1291,7 +1291,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1291 ws.forwardclient.setEncoding('binary');
1292 ws.forwardclient.xstate = 0;
1293 ws.forwardclient.forwardwsocket = ws;
1294 - ws.resume();
1294 + ws._socket.resume();
1295 } else {
1296 // If TLS is going to be used, setup a TLS socket
1297 var tlsoptions = { secureProtocol: ((req.query.tls1only == 1) ? 'TLSv1_method' : 'SSLv23_method'), ciphers: 'RSA+AES:!aNULL:!MD5:!DSS', secureOptions: obj.constants.SSL_OP_NO_SSLv2 | obj.constants.SSL_OP_NO_SSLv3 | obj.constants.SSL_OP_NO_COMPRESSION | obj.constants.SSL_OP_CIPHER_SERVER_PREFERENCE, rejectUnauthorized: false, cert: obj.certificates.console.cert, key: obj.certificates.console.key };
@@ -1299,7 +1299,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1299 // The TLS connection method is the same as TCP, but located a bit differently.
1300 Debug(2, 'TLS connected to ' + node.host + ':' + port + '.');
1301 ws.forwardclient.xstate = 1;
1302 - ws.resume();
1302 + ws._socket.resume();
1303 });
1304 ws.forwardclient.setEncoding('binary');
1305 ws.forwardclient.xstate = 0;
@@ -1337,7 +1337,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1337 ws.forwardclient.connect(port, node.host, function () {
1338 Debug(1, 'TCP relay connected to ' + node.host + ':' + port + '.');
1339 ws.forwardclient.xstate = 1;
1340 - ws.resume();
1340 + ws._socket.resume();
1341 });
1342 }
1343 return;
@@ -1883,7 +1883,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1883 function PerformWSSessionAuth(ws, req, noAuthOk, func) {
1884 try {
1885 // Hold this websocket until we are ready.
1886 - ws.pause();
1886 + ws._socket.pause();
1887
1888 // Check IP filtering and domain
1889 var domain = checkUserIpAddress(ws, req);