hsync 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/peers.js CHANGED
@@ -18,7 +18,6 @@ function createPacket(topic, payload) {
18
18
  topic,
19
19
  payload: payloadStr,
20
20
  });
21
- // console.log('packet', packet);
22
21
  return packet;
23
22
  }
24
23
 
@@ -46,6 +45,7 @@ function initPeers(hsyncClient) {
46
45
  if (!peer) {
47
46
  debug('CREATING peer', hostName);
48
47
  peer = createRPCPeer({hostName, hsyncClient, timeout});
48
+ hsyncClient.emit('peerCreated', peer);
49
49
  peer.myAuth = b64id.generateId();
50
50
  if (temporary) {
51
51
  peer.rpcTemporary = true;
@@ -66,6 +66,8 @@ function initPeers(hsyncClient) {
66
66
  const myAuth = b64id.generateId();
67
67
  const transport = new EventEmitter();
68
68
  const peer = rawr({transport, methods: Object.assign({}, hsyncClient.peerMethods), timeout, idGenerator: b64id.generateId});
69
+ debug('createRPCPeer rawr', peer);
70
+
69
71
  peer.hostName = hostName;
70
72
  peer.rtcEvents = new EventEmitter();
71
73
  peer.localMethods = Object.assign({}, hsyncClient.peerMethods);
@@ -31,9 +31,23 @@ function initListeners(hsyncClient) {
31
31
 
32
32
  function addSocketListener(options = {}) {
33
33
  const { port, targetPort, targetHost } = options;
34
- debug('creating handler', port, targetHost);
34
+ if (!targetHost) {
35
+ throw new Error('no targetHost');
36
+ }
37
+ let cleanHost = targetHost.trim();
38
+ if (cleanHost.endsWith('/')) {
39
+ cleanHost = cleanHost.substring(0, cleanHost.length - 1);
40
+ }
41
+ const url = new URL(cleanHost);
42
+ if (url.hostname.toLowerCase() === hsyncClient.myHostName.toLowerCase()) {
43
+ throw new Error('targetHost must be a different host');
44
+ }
45
+ debug('creating handler', port, cleanHost);
46
+ if (cleanHost !== targetHost) {
47
+ debug('targetHost cleaned UP', targetHost, cleanHost);
48
+ }
35
49
 
36
- const rpcPeer = hsyncClient.getRPCPeer({ hostName: targetHost });
50
+ const rpcPeer = hsyncClient.getRPCPeer({ hostName: cleanHost });
37
51
 
38
52
  const socketServer = net.createServer(async (socket) => {
39
53
 
@@ -118,7 +132,7 @@ function initListeners(hsyncClient) {
118
132
  debug('connecting remotely', socket.socketId, targetPort, rpcPeer.hostName, targetHost);
119
133
  const result = await rpcPeer.methods.connectSocket({
120
134
  socketId: socket.socketId,
121
- port: targetPort,
135
+ port: targetPort || port,
122
136
  hostName: rpcPeer.hostName,
123
137
  });
124
138
  debug('connect result', result);
@@ -154,8 +168,8 @@ function initListeners(hsyncClient) {
154
168
  socketServer,
155
169
  sockets,
156
170
  end,
157
- targetHost,
158
- targetPort,
171
+ targetHost: cleanHost,
172
+ targetPort: targetPort || port,
159
173
  port,
160
174
  };
161
175
 
@@ -24,14 +24,16 @@ function initRelays(hsyncClient) {
24
24
  targetPort: l.targetPort,
25
25
  whitelist: l.whitelist || '',
26
26
  blacklist: l.blacklist || '',
27
+ hostName: l.targetHost,
27
28
  };
28
29
  });
29
30
  return retVal;
30
31
  }
31
32
 
32
- function connectSocket(remotePeer, { port, socketId }) {
33
+ function connectSocket(peer, { port, socketId, hostName }) {
34
+ debug('connectSocket', port, socketId, hostName);
33
35
 
34
- remotePeer.notifications.oncloseRelaySocket((remotePeer, { socketId }) => {
36
+ peer.notifications.oncloseRelaySocket((peer, { socketId }) => {
35
37
  debug('closeRelaySocket', socketId);
36
38
  if (sockets[socketId]) {
37
39
  sockets[socketId].end();
@@ -42,12 +44,12 @@ function initRelays(hsyncClient) {
42
44
  });
43
45
 
44
46
  const relay = cachedRelays['p' + port];
45
- debug('connect relay', port, socketId, remotePeer.hostName);
47
+ debug('connect relay', port, socketId, peer.hostName);
46
48
  if (!relay) {
47
49
  throw new Error('no relay found for port: ' + port);
48
50
  }
49
51
 
50
- // TODO: check white and black lists on remotePeer
52
+ // TODO: check white and black lists on peer
51
53
 
52
54
  // const relayDataTopic = `msg/${hostName}/${hsyncClient.myHostName}/relayData/${socketId}`;
53
55
  return new Promise((resolve, reject) => {
@@ -61,10 +63,10 @@ function initRelays(hsyncClient) {
61
63
 
62
64
  socket.on('data', async (data) => {
63
65
  debug(`data in ${socket.socketId}`, relay.targetPort, relay.targetHost, data.length);
64
- // TODO: queue data if remotePeer is not ready
65
- if (remotePeer.packAndSend) {
66
+ // TODO: queue data if peer is not ready
67
+ if (peer.packAndSend) {
66
68
  debug('sending relay data via rtc', socket.socketId, data.length);
67
- remotePeer.packAndSend(`socketData/${socket.socketId}`, Buffer.from(data));
69
+ peer.packAndSend(`socketData/${socket.socketId}`, Buffer.from(data));
68
70
  return;
69
71
  }
70
72
  });
@@ -72,7 +74,7 @@ function initRelays(hsyncClient) {
72
74
  debug(`LOCAL CONNECTION CLOSED`, socket.socketId);
73
75
  if (sockets[socket.socketId]) {
74
76
  try {
75
- await remotePeer.notifiers.closeListenerSocket({socketId});
77
+ await peer.notifiers.closeListenerSocket({socketId});
76
78
  } catch (e) {
77
79
  debug('error closing socket', e);
78
80
  }
@@ -90,8 +92,9 @@ function initRelays(hsyncClient) {
90
92
 
91
93
  }
92
94
 
93
- function addSocketRelay({whitelist, blacklist, port, targetPort, targetHost = 'localhost'}) {
95
+ function addSocketRelay({whitelist, blacklist, port, targetPort, targetHost}) {
94
96
  targetPort = targetPort || port;
97
+ targetHost = targetHost || 'localhost';
95
98
  debug('creating relay', whitelist, blacklist, port, targetPort, targetHost);
96
99
  const newRelay = {
97
100
  whitelist,
@@ -99,6 +102,7 @@ function initRelays(hsyncClient) {
99
102
  port,
100
103
  targetPort,
101
104
  targetHost,
105
+ hostName: targetHost,
102
106
  };
103
107
  cachedRelays['p' + port] = newRelay;
104
108
  return newRelay;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hsync",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "client for hsync-server",
5
5
  "main": "hsync.js",
6
6
  "scripts": {
@@ -18,7 +18,11 @@
18
18
  "json-rpc",
19
19
  "ngrok",
20
20
  "websocket",
21
- "mqtt"
21
+ "mqtt",
22
+ "proxy",
23
+ "reverse-proxy",
24
+ "vpn",
25
+ "tunnel"
22
26
  ],
23
27
  "browser": {
24
28
  "./hsync": "./hsync-web"