hsync 0.23.0 → 0.24.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/connection.js +1 -2
- package/dist/hsync.js +4 -4
- package/dist/hsync.min.js +1 -1
- package/lib/peers.js +2 -1
- package/lib/socket-listeners.js +19 -5
- package/lib/socket-relays.js +13 -9
- package/package.json +6 -2
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
|
|
|
@@ -66,6 +65,8 @@ function initPeers(hsyncClient) {
|
|
|
66
65
|
const myAuth = b64id.generateId();
|
|
67
66
|
const transport = new EventEmitter();
|
|
68
67
|
const peer = rawr({transport, methods: Object.assign({}, hsyncClient.peerMethods), timeout, idGenerator: b64id.generateId});
|
|
68
|
+
debug('createRPCPeer rawr', peer);
|
|
69
|
+
|
|
69
70
|
peer.hostName = hostName;
|
|
70
71
|
peer.rtcEvents = new EventEmitter();
|
|
71
72
|
peer.localMethods = Object.assign({}, hsyncClient.peerMethods);
|
package/lib/socket-listeners.js
CHANGED
|
@@ -31,9 +31,23 @@ function initListeners(hsyncClient) {
|
|
|
31
31
|
|
|
32
32
|
function addSocketListener(options = {}) {
|
|
33
33
|
const { port, targetPort, targetHost } = options;
|
|
34
|
-
|
|
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:
|
|
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
|
|
package/lib/socket-relays.js
CHANGED
|
@@ -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(
|
|
33
|
+
function connectSocket(peer, { port, socketId, hostName }) {
|
|
34
|
+
debug('connectSocket', port, socketId, hostName);
|
|
33
35
|
|
|
34
|
-
|
|
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,
|
|
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
|
|
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
|
|
65
|
-
if (
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
"version": "0.24.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"
|