@streamr/dht 100.2.5-beta.1 → 101.0.0-beta.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.
Files changed (231) hide show
  1. package/dist/package.json +7 -7
  2. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
  3. package/dist/src/connection/ConnectionLockRpcLocal.js +8 -8
  4. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -1
  5. package/dist/src/connection/ConnectionLockRpcRemote.js +1 -1
  6. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  7. package/dist/src/connection/ConnectionManager.d.ts +4 -6
  8. package/dist/src/connection/ConnectionManager.js +128 -103
  9. package/dist/src/connection/ConnectionManager.js.map +1 -1
  10. package/dist/src/connection/ConnectorFacade.d.ts +15 -14
  11. package/dist/src/connection/ConnectorFacade.js +70 -52
  12. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  13. package/dist/src/connection/Handshaker.d.ts +9 -2
  14. package/dist/src/connection/Handshaker.js +117 -27
  15. package/dist/src/connection/Handshaker.js.map +1 -1
  16. package/dist/src/connection/ManagedConnection.d.ts +13 -38
  17. package/dist/src/connection/ManagedConnection.js +31 -252
  18. package/dist/src/connection/ManagedConnection.js.map +1 -1
  19. package/dist/src/connection/OutputBuffer.d.ts +9 -0
  20. package/dist/src/connection/OutputBuffer.js +26 -0
  21. package/dist/src/connection/OutputBuffer.js.map +1 -0
  22. package/dist/src/connection/PendingConnection.d.ts +19 -0
  23. package/dist/src/connection/PendingConnection.js +59 -0
  24. package/dist/src/connection/PendingConnection.js.map +1 -0
  25. package/dist/src/connection/connectivityChecker.js +3 -3
  26. package/dist/src/connection/connectivityChecker.js.map +1 -1
  27. package/dist/src/connection/connectivityRequestHandler.js +2 -2
  28. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  29. package/dist/src/connection/simulator/Simulator.d.ts +1 -3
  30. package/dist/src/connection/simulator/Simulator.js +1 -4
  31. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  32. package/dist/src/connection/simulator/SimulatorConnection.js +1 -2
  33. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
  34. package/dist/src/connection/simulator/SimulatorConnector.d.ts +3 -3
  35. package/dist/src/connection/simulator/SimulatorConnector.js +28 -21
  36. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
  37. package/dist/src/connection/webrtc/NodeWebrtcConnection.d.ts +1 -6
  38. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +3 -20
  39. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  40. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +11 -6
  41. package/dist/src/connection/webrtc/WebrtcConnector.js +57 -42
  42. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  43. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +8 -10
  44. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +21 -44
  45. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  46. package/dist/src/connection/websocket/AbstractWebsocketClientConnection.js +8 -2
  47. package/dist/src/connection/websocket/AbstractWebsocketClientConnection.js.map +1 -1
  48. package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +3 -3
  49. package/dist/src/connection/websocket/AutoCertifierClientFacade.js +8 -8
  50. package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -1
  51. package/dist/src/connection/websocket/NodeWebsocketClientConnection.js +1 -1
  52. package/dist/src/connection/websocket/NodeWebsocketClientConnection.js.map +1 -1
  53. package/dist/src/connection/websocket/WebsocketClientConnector.d.ts +26 -0
  54. package/dist/src/connection/websocket/WebsocketClientConnector.js +86 -0
  55. package/dist/src/connection/websocket/WebsocketClientConnector.js.map +1 -0
  56. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +19 -0
  57. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js +23 -0
  58. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js.map +1 -0
  59. package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.d.ts +5 -0
  60. package/dist/src/connection/websocket/{WebsocketConnectorRpcRemote.js → WebsocketClientConnectorRpcRemote.js} +4 -4
  61. package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.js.map +1 -0
  62. package/dist/src/connection/websocket/WebsocketServer.d.ts +8 -5
  63. package/dist/src/connection/websocket/WebsocketServer.js +11 -11
  64. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
  65. package/dist/src/connection/websocket/{WebsocketConnector.d.ts → WebsocketServerConnector.d.ts} +16 -21
  66. package/dist/src/connection/websocket/{WebsocketConnector.js → WebsocketServerConnector.js} +112 -160
  67. package/dist/src/connection/websocket/WebsocketServerConnector.js.map +1 -0
  68. package/dist/src/dht/DhtNode.d.ts +4 -4
  69. package/dist/src/dht/DhtNode.js +85 -84
  70. package/dist/src/dht/DhtNode.js.map +1 -1
  71. package/dist/src/dht/DhtNodeRpcLocal.d.ts +3 -3
  72. package/dist/src/dht/DhtNodeRpcLocal.js +9 -9
  73. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  74. package/dist/src/dht/ExternalApiRpcLocal.d.ts +3 -3
  75. package/dist/src/dht/ExternalApiRpcLocal.js +5 -5
  76. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  77. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  78. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  79. package/dist/src/dht/PeerManager.d.ts +4 -4
  80. package/dist/src/dht/PeerManager.js +22 -22
  81. package/dist/src/dht/PeerManager.js.map +1 -1
  82. package/dist/src/dht/contact/SortedContactList.d.ts +3 -3
  83. package/dist/src/dht/contact/SortedContactList.js +9 -9
  84. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  85. package/dist/src/dht/discovery/DiscoverySession.d.ts +3 -3
  86. package/dist/src/dht/discovery/DiscoverySession.js +21 -21
  87. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  88. package/dist/src/dht/discovery/PeerDiscovery.d.ts +3 -3
  89. package/dist/src/dht/discovery/PeerDiscovery.js +46 -44
  90. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  91. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +3 -3
  92. package/dist/src/dht/discovery/RingDiscoverySession.js +19 -19
  93. package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -1
  94. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +3 -3
  95. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +33 -33
  96. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
  97. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +3 -3
  98. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js +8 -8
  99. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -1
  100. package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +4 -4
  101. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +24 -24
  102. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
  103. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +4 -4
  104. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +5 -5
  105. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +1 -1
  106. package/dist/src/dht/routing/Router.d.ts +3 -3
  107. package/dist/src/dht/routing/Router.js +20 -20
  108. package/dist/src/dht/routing/Router.js.map +1 -1
  109. package/dist/src/dht/routing/RouterRpcLocal.d.ts +3 -3
  110. package/dist/src/dht/routing/RouterRpcLocal.js +16 -16
  111. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  112. package/dist/src/dht/routing/RoutingSession.d.ts +3 -3
  113. package/dist/src/dht/routing/RoutingSession.js +24 -24
  114. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  115. package/dist/src/dht/store/StoreManager.d.ts +3 -3
  116. package/dist/src/dht/store/StoreManager.js +25 -25
  117. package/dist/src/dht/store/StoreManager.js.map +1 -1
  118. package/dist/src/dht/store/StoreRpcLocal.d.ts +3 -3
  119. package/dist/src/dht/store/StoreRpcLocal.js +12 -12
  120. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  121. package/dist/src/exports.d.ts +3 -0
  122. package/dist/src/exports.js +5 -1
  123. package/dist/src/exports.js.map +1 -1
  124. package/dist/src/proto/google/protobuf/any.d.ts +5 -8
  125. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  126. package/dist/src/proto/google/protobuf/empty.d.ts +1 -0
  127. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  128. package/dist/src/proto/google/protobuf/timestamp.d.ts +1 -10
  129. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  130. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +4 -4
  131. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +8 -8
  132. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  133. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +3 -3
  134. package/dist/src/proto/packages/dht/protos/DhtRpc.js +4 -4
  135. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  136. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +2 -2
  137. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
  138. package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -2
  139. package/dist/src/transport/ListeningRpcCommunicator.js +2 -2
  140. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  141. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -2
  142. package/dist/src/transport/RoutingRpcCommunicator.js +2 -2
  143. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  144. package/package.json +7 -7
  145. package/protos/DhtRpc.proto +1 -1
  146. package/src/connection/ConnectionLockRpcLocal.ts +9 -9
  147. package/src/connection/ConnectionLockRpcRemote.ts +1 -1
  148. package/src/connection/ConnectionManager.ts +153 -111
  149. package/src/connection/ConnectorFacade.ts +84 -61
  150. package/src/connection/Handshaker.ts +131 -27
  151. package/src/connection/ManagedConnection.ts +41 -304
  152. package/src/connection/OutputBuffer.ts +28 -0
  153. package/src/connection/PendingConnection.ts +68 -0
  154. package/src/connection/connectivityChecker.ts +2 -2
  155. package/src/connection/connectivityRequestHandler.ts +1 -1
  156. package/src/connection/simulator/Simulator.ts +1 -5
  157. package/src/connection/simulator/SimulatorConnection.ts +1 -2
  158. package/src/connection/simulator/SimulatorConnector.ts +34 -33
  159. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -6
  160. package/src/connection/webrtc/NodeWebrtcConnection.ts +3 -24
  161. package/src/connection/webrtc/WebrtcConnector.ts +73 -62
  162. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +26 -56
  163. package/src/connection/websocket/AbstractWebsocketClientConnection.ts +8 -2
  164. package/src/connection/websocket/AutoCertifierClientFacade.ts +11 -11
  165. package/src/connection/websocket/NodeWebsocketClientConnection.ts +1 -1
  166. package/src/connection/websocket/WebsocketClientConnector.ts +119 -0
  167. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +39 -0
  168. package/src/connection/websocket/{WebsocketConnectorRpcRemote.ts → WebsocketClientConnectorRpcRemote.ts} +2 -2
  169. package/src/connection/websocket/WebsocketServer.ts +18 -14
  170. package/src/connection/websocket/{WebsocketConnector.ts → WebsocketServerConnector.ts} +128 -205
  171. package/src/dht/DhtNode.ts +90 -89
  172. package/src/dht/DhtNodeRpcLocal.ts +11 -11
  173. package/src/dht/ExternalApiRpcLocal.ts +6 -6
  174. package/src/dht/ExternalApiRpcRemote.ts +2 -2
  175. package/src/dht/PeerManager.ts +24 -24
  176. package/src/dht/contact/SortedContactList.ts +10 -10
  177. package/src/dht/discovery/DiscoverySession.ts +24 -24
  178. package/src/dht/discovery/PeerDiscovery.ts +47 -45
  179. package/src/dht/discovery/RingDiscoverySession.ts +23 -23
  180. package/src/dht/recursive-operation/RecursiveOperationManager.ts +36 -36
  181. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +9 -9
  182. package/src/dht/recursive-operation/RecursiveOperationSession.ts +25 -25
  183. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +7 -7
  184. package/src/dht/routing/Router.ts +21 -21
  185. package/src/dht/routing/RouterRpcLocal.ts +17 -17
  186. package/src/dht/routing/RoutingSession.ts +26 -26
  187. package/src/dht/store/StoreManager.ts +27 -27
  188. package/src/dht/store/StoreRpcLocal.ts +13 -13
  189. package/src/exports.ts +3 -0
  190. package/src/proto/google/protobuf/any.ts +6 -9
  191. package/src/proto/google/protobuf/empty.ts +2 -1
  192. package/src/proto/google/protobuf/timestamp.ts +2 -11
  193. package/src/proto/packages/dht/protos/DhtRpc.client.ts +9 -9
  194. package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -3
  195. package/src/proto/packages/dht/protos/DhtRpc.ts +4 -4
  196. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
  197. package/src/transport/ListeningRpcCommunicator.ts +3 -3
  198. package/src/transport/RoutingRpcCommunicator.ts +3 -3
  199. package/test/end-to-end/Layer0Webrtc.test.ts +0 -10
  200. package/test/integration/ConnectionManager.test.ts +3 -2
  201. package/test/integration/GeoIpConnectivityChecking.test.ts +1 -1
  202. package/test/integration/SimultaneousConnections.test.ts +2 -2
  203. package/test/integration/WebrtcConnectionManagement.test.ts +2 -10
  204. package/test/integration/{WebsocketConnectorRpc.test.ts → WebsocketClientConnectorRpc.test.ts} +9 -9
  205. package/test/integration/WebsocketConnectionManagement.test.ts +11 -29
  206. package/test/unit/ConnectionManager.test.ts +64 -0
  207. package/test/unit/DiscoverySession.test.ts +1 -1
  208. package/test/unit/Handshaker.test.ts +169 -0
  209. package/test/unit/ManagedConnection.test.ts +58 -0
  210. package/test/unit/PendingConnection.test.ts +57 -0
  211. package/test/unit/WebrtcConnector.test.ts +56 -0
  212. package/test/unit/{WebsocketConnector.test.ts → WebsocketClientConnector.test.ts} +56 -11
  213. package/test/unit/WebsocketServerConnector.test.ts +102 -0
  214. package/test/utils/FakeConnectorFacade.ts +41 -0
  215. package/test/utils/mock/MockConnection.ts +26 -0
  216. package/test/utils/utils.ts +2 -2
  217. package/dist/src/connection/IConnectionSource.d.ts +0 -4
  218. package/dist/src/connection/IConnectionSource.js +0 -3
  219. package/dist/src/connection/IConnectionSource.js.map +0 -1
  220. package/dist/src/connection/webrtc/ManagedWebrtcConnection.d.ts +0 -7
  221. package/dist/src/connection/webrtc/ManagedWebrtcConnection.js +0 -20
  222. package/dist/src/connection/webrtc/ManagedWebrtcConnection.js.map +0 -1
  223. package/dist/src/connection/websocket/WebsocketConnector.js.map +0 -1
  224. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +0 -19
  225. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +0 -23
  226. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +0 -1
  227. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +0 -5
  228. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +0 -1
  229. package/src/connection/IConnectionSource.ts +0 -6
  230. package/src/connection/webrtc/ManagedWebrtcConnection.ts +0 -27
  231. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +0 -39
@@ -21,16 +21,16 @@ class WebsocketServer extends eventemitter3_1.default {
21
21
  httpServer;
22
22
  wsServer;
23
23
  abortController = new AbortController();
24
- config;
25
- constructor(config) {
24
+ options;
25
+ constructor(options) {
26
26
  super();
27
- this.config = config;
27
+ this.options = options;
28
28
  }
29
29
  async start() {
30
- const ports = (0, lodash_1.range)(this.config.portRange.min, this.config.portRange.max + 1);
30
+ const ports = (0, lodash_1.range)(this.options.portRange.min, this.options.portRange.max + 1);
31
31
  for (const port of ports) {
32
32
  try {
33
- await (0, utils_1.asAbortable)(this.startServer(port, this.config.enableTls), this.abortController.signal);
33
+ await (0, utils_1.asAbortable)(this.startServer(port, this.options.enableTls), this.abortController.signal);
34
34
  return port;
35
35
  }
36
36
  catch (err) {
@@ -42,7 +42,7 @@ class WebsocketServer extends eventemitter3_1.default {
42
42
  }
43
43
  }
44
44
  }
45
- throw new errors_1.WebsocketServerStartError(`Failed to start WebSocket server on any port in range: ${this.config.portRange.min}-${this.config.portRange.min}`);
45
+ throw new errors_1.WebsocketServerStartError(`Failed to start WebSocket server on any port in range: ${this.options.portRange.min}-${this.options.portRange.min}`);
46
46
  }
47
47
  // If tlsCertificate has been given the tls boolean is ignored
48
48
  // TODO: could be simplified?
@@ -53,17 +53,17 @@ class WebsocketServer extends eventemitter3_1.default {
53
53
  response.end();
54
54
  };
55
55
  return new Promise((resolve, reject) => {
56
- if (this.config.tlsCertificate) {
56
+ if (this.options.tlsCertificate) {
57
57
  this.httpServer = (0, https_1.createServer)({
58
- key: fs_1.default.readFileSync(this.config.tlsCertificate.privateKeyFileName),
59
- cert: fs_1.default.readFileSync(this.config.tlsCertificate.certFileName)
58
+ key: fs_1.default.readFileSync(this.options.tlsCertificate.privateKeyFileName),
59
+ cert: fs_1.default.readFileSync(this.options.tlsCertificate.certFileName)
60
60
  }, requestListener);
61
61
  }
62
62
  else if (!tls) {
63
63
  this.httpServer = (0, http_1.createServer)(requestListener);
64
64
  }
65
65
  else {
66
- // TODO use config option or named constant?
66
+ // TODO use options option or named constant?
67
67
  const certificate = (0, autocertifier_client_1.createSelfSignedCertificate)('streamr-self-signed-' + (0, uuid_1.v4)(), 1000);
68
68
  this.httpServer = (0, https_1.createServer)({
69
69
  key: certificate.serverKey,
@@ -135,7 +135,7 @@ class WebsocketServer extends eventemitter3_1.default {
135
135
  });
136
136
  }
137
137
  createWsServer() {
138
- const maxPayload = this.config.maxMessageSize ?? 1048576;
138
+ const maxPayload = this.options.maxMessageSize ?? 1048576;
139
139
  return this.wsServer = new ws_1.default.Server({
140
140
  noServer: true,
141
141
  maxPayload
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketServer.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServer.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA8G;AAC9G,iCAAgF;AAChF,kEAAwC;AACxC,4CAA0B;AAC1B,2EAAuE;AAEvE,0CAAoD;AACpD,wEAA2E;AAC3E,iDAAgE;AAEhE,mCAA8B;AAC9B,4CAAmB;AACnB,+BAAiC;AACjC,6BAA2B;AAE3B,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AASjC,MAAa,eAAgB,SAAQ,uBAAoC;IAE7D,UAAU,CAA2B;IACrC,QAAQ,CAAmB;IAClB,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IACvC,MAAM,CAAuB;IAE9C,YAAY,MAA6B;QACrC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;QAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,IAAA,mBAAW,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAC7F,OAAO,IAAI,CAAA;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,4BAA4B,CAAC,CAAA;gBAC/F,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,kCAAyB,CAAC,GAAG,CAAC,CAAA;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,IAAI,kCAAyB,CAC/B,0DAA0D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CACrH,CAAA;IACL,CAAC;IAED,8DAA8D;IAC9D,6BAA6B;IACrB,WAAW,CAAC,IAAY,EAAE,GAAY;QAC1C,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAE,QAAyC,EAAE,EAAE;YAC5F,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACnD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;QAClB,CAAC,CAAA;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,IAAA,oBAAiB,EAAC;oBAChC,GAAG,EAAE,YAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBACnE,IAAI,EAAE,YAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC;iBACjE,EAAE,eAAe,CAAC,CAAA;YACvB,CAAC;iBAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACJ,4CAA4C;gBAC5C,MAAM,WAAW,GAAG,IAAA,kDAA2B,EAAC,sBAAsB,GAAG,IAAA,SAAI,GAAE,EAAE,IAAI,CAAC,CAAA;gBACtF,IAAI,CAAC,UAAU,GAAG,IAAA,oBAAiB,EAAC;oBAChC,GAAG,EAAE,WAAW,CAAC,SAAS;oBAC1B,IAAI,EAAE,WAAW,CAAC,UAAU;iBAC/B,EAAE,eAAe,CAAC,CAAA;YACvB,CAAC;YAED,SAAS,eAAe;gBACpB,OAAO,IAAI,CAAA;YACf,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;YAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAa,EAAE,OAAwB,EAAE,EAAE;gBACvE,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;gBACnE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;oBACrB,2DAA2D;oBAC3D,EAAE,CAAC,KAAK,EAAE,CAAA;oBACV,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAA;oBAChF,OAAM;gBACV,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,qDAAyB,CAAC,EAAE,EAAE,IAAA,WAAK,EAAC,OAAO,CAAC,GAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC,CAAA;YACjH,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBACpD,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC3D,IAAI,CAAC,QAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAa,EAAE,EAAE;oBAClE,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;gBAClD,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACzC,MAAM,CAAC,IAAI,kCAAyB,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC,CAAA;YAClF,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAA;gBAC7D,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC;gBACD,gFAAgF;gBAChF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,kCAAyB,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnF,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,iBAAiB,CAAC,IAAY,EAAE,GAAW;QAC7C,IAAI,CAAC,UAA2B,CAAC,gBAAgB,CAAC;YAC/C,IAAI;YACJ,GAAG;SACN,CAAC,CAAA;IACN,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAS,CAAC,KAAK,EAAE,CAAA;YACtB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,EAAE,CAAC,SAAS,EAAE,CAAA;YAClB,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBAChC,0CAA0C;gBAC1C,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAA;gBACrC,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAA;YACxB,oFAAoF;YACpF,yFAAyF;YACzF,oEAAoE;YACpE,kFAAkF;YAClF,6DAA6D;YAC7D,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAA;QAC1C,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,cAAc;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAA;QACxD,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YACxC,QAAQ,EAAE,IAAI;YACd,UAAU;SACb,CAAC,CAAA;IACN,CAAC;CACJ;AAvID,0CAuIC"}
1
+ {"version":3,"file":"WebsocketServer.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServer.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import { ITransport } from '../../transport/ITransport';
2
- import { ConnectivityMethod, ConnectivityResponse, PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc';
3
- import { ManagedConnection } from '../ManagedConnection';
4
- import { PortRange, TlsCertificate } from '../ConnectionManager';
1
+ import { ListeningRpcCommunicator } from '../../transport/ListeningRpcCommunicator';
5
2
  import { DhtAddress } from '../../identifiers';
6
- export type Action = 'connectivityRequest' | 'connectivityProbe';
7
- export declare const connectivityMethodToWebsocketUrl: (ws: ConnectivityMethod, action?: Action) => string;
8
- export interface WebsocketConnectorConfig {
9
- transport: ITransport;
10
- onNewConnection: (connection: ManagedConnection) => boolean;
3
+ import { ConnectivityResponse, PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc';
4
+ import { PortRange, TlsCertificate } from '../ConnectionManager';
5
+ import { ITransport } from '../../transport/ITransport';
6
+ import { PendingConnection } from '../PendingConnection';
7
+ export interface WebsocketServerConnectorOptions {
8
+ onNewConnection: (connection: PendingConnection) => boolean;
9
+ rpcCommunicator: ListeningRpcCommunicator;
11
10
  hasConnection: (nodeId: DhtAddress) => boolean;
12
11
  portRange?: PortRange;
13
12
  maxMessageSize?: number;
@@ -20,9 +19,7 @@ export interface WebsocketConnectorConfig {
20
19
  serverEnableTls: boolean;
21
20
  geoIpDatabaseFolder?: string;
22
21
  }
23
- export declare class WebsocketConnector {
24
- private static readonly WEBSOCKET_CONNECTOR_SERVICE_ID;
25
- private readonly rpcCommunicator;
22
+ export declare class WebsocketServerConnector {
26
23
  private readonly websocketServer?;
27
24
  private geoIpLocator?;
28
25
  private readonly ongoingConnectRequests;
@@ -30,20 +27,18 @@ export declare class WebsocketConnector {
30
27
  private autoCertifierClient?;
31
28
  private selectedPort?;
32
29
  private localPeerDescriptor?;
33
- private connectingConnections;
34
30
  private abortController;
35
- private readonly config;
36
- constructor(config: WebsocketConnectorConfig);
37
- private registerLocalRpcMethods;
31
+ private readonly options;
32
+ constructor(options: WebsocketServerConnectorOptions);
33
+ start(): Promise<void>;
38
34
  private attachHandshaker;
35
+ private onServerSocketHandshakeRequest;
36
+ checkConnectivity(allowSelfSignedCertificate: boolean): Promise<ConnectivityResponse>;
39
37
  autoCertify(): Promise<void>;
40
38
  private setHost;
41
- start(): Promise<void>;
42
- checkConnectivity(allowSelfSignedCertificate: boolean): Promise<ConnectivityResponse>;
43
- isPossibleToFormConnection(targetPeerDescriptor: PeerDescriptor): boolean;
44
- connect(targetPeerDescriptor: PeerDescriptor): ManagedConnection;
39
+ connect(targetPeerDescriptor: PeerDescriptor): PendingConnection;
45
40
  private requestConnectionFromPeer;
46
- private onServerSocketHandshakeRequest;
41
+ isPossibleToFormConnection(targetPeerDescriptor: PeerDescriptor): boolean;
47
42
  setLocalPeerDescriptor(localPeerDescriptor: PeerDescriptor): void;
48
43
  destroy(): Promise<void>;
49
44
  }
@@ -26,38 +26,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.WebsocketConnector = exports.connectivityMethodToWebsocketUrl = void 0;
30
- const NodeWebsocketClientConnection_1 = require("./NodeWebsocketClientConnection");
31
- const IConnection_1 = require("../IConnection");
32
- const ListeningRpcCommunicator_1 = require("../../transport/ListeningRpcCommunicator");
33
- const WebsocketConnectorRpcLocal_1 = require("./WebsocketConnectorRpcLocal");
34
- const WebsocketConnectorRpcRemote_1 = require("./WebsocketConnectorRpcRemote");
35
- const DhtRpc_1 = require("../../proto/packages/dht/protos/DhtRpc");
36
- const DhtRpc_client_1 = require("../../proto/packages/dht/protos/DhtRpc.client");
37
- const utils_1 = require("@streamr/utils");
38
- const ManagedConnection_1 = require("../ManagedConnection");
29
+ exports.WebsocketServerConnector = void 0;
30
+ const geoip_location_1 = require("@streamr/geoip-location");
31
+ const WebsocketClientConnector_1 = require("./WebsocketClientConnector");
39
32
  const WebsocketServer_1 = require("./WebsocketServer");
40
- const connectivityChecker_1 = require("../connectivityChecker");
33
+ const identifiers_1 = require("../../identifiers");
34
+ const AutoCertifierClientFacade_1 = require("./AutoCertifierClientFacade");
35
+ const DhtRpc_1 = require("../../proto/packages/dht/protos/DhtRpc");
41
36
  const ConnectionManager_1 = require("../ConnectionManager");
42
- const Handshaker_1 = require("../Handshaker");
37
+ const utils_1 = require("@streamr/utils");
38
+ const connectivityRequestHandler_1 = require("../connectivityRequestHandler");
39
+ const IConnection_1 = require("../IConnection");
43
40
  const querystring_1 = __importDefault(require("querystring"));
41
+ const version_1 = require("../../helpers/version");
44
42
  const lodash_1 = require("lodash");
45
- const Connectivity_1 = require("../../helpers/Connectivity");
43
+ const connectivityChecker_1 = require("../connectivityChecker");
44
+ const Handshaker_1 = require("../Handshaker");
45
+ const WebsocketClientConnectorRpcRemote_1 = require("./WebsocketClientConnectorRpcRemote");
46
+ const DhtRpc_client_1 = require("../../proto/packages/dht/protos/DhtRpc.client");
46
47
  const errors_1 = require("../../helpers/errors");
47
- const AutoCertifierClientFacade_1 = require("./AutoCertifierClientFacade");
48
- const connectivityRequestHandler_1 = require("../connectivityRequestHandler");
49
48
  const Err = __importStar(require("../../helpers/errors"));
50
- const identifiers_1 = require("../../identifiers");
51
- const version_1 = require("../../helpers/version");
52
- const geoip_location_1 = require("@streamr/geoip-location");
49
+ const Connectivity_1 = require("../../helpers/Connectivity");
50
+ const PendingConnection_1 = require("../PendingConnection");
53
51
  const logger = new utils_1.Logger(module);
54
- const connectivityMethodToWebsocketUrl = (ws, action) => {
55
- return (ws.tls ? 'wss://' : 'ws://') + ws.host + ':' + ws.port + ((action !== undefined) ? '?action=' + action : '');
56
- };
57
- exports.connectivityMethodToWebsocketUrl = connectivityMethodToWebsocketUrl;
58
- class WebsocketConnector {
59
- static WEBSOCKET_CONNECTOR_SERVICE_ID = 'system/websocket-connector';
60
- rpcCommunicator;
52
+ // TODO: Move server starting logic including autocertification and connectivity checking to WebsocketServer.ts?
53
+ class WebsocketServerConnector {
61
54
  websocketServer;
62
55
  geoIpLocator;
63
56
  ongoingConnectRequests = new Map();
@@ -65,62 +58,17 @@ class WebsocketConnector {
65
58
  autoCertifierClient;
66
59
  selectedPort;
67
60
  localPeerDescriptor;
68
- connectingConnections = new Map();
69
61
  abortController = new AbortController();
70
- config;
71
- constructor(config) {
72
- this.config = config;
73
- this.websocketServer = config.portRange ? new WebsocketServer_1.WebsocketServer({
74
- portRange: config.portRange,
75
- tlsCertificate: config.tlsCertificate,
76
- maxMessageSize: config.maxMessageSize,
77
- enableTls: config.serverEnableTls
62
+ options;
63
+ constructor(options) {
64
+ this.options = options;
65
+ this.websocketServer = options.portRange ? new WebsocketServer_1.WebsocketServer({
66
+ portRange: options.portRange,
67
+ tlsCertificate: options.tlsCertificate,
68
+ maxMessageSize: options.maxMessageSize,
69
+ enableTls: options.serverEnableTls
78
70
  }) : undefined;
79
- this.host = config.host;
80
- this.rpcCommunicator = new ListeningRpcCommunicator_1.ListeningRpcCommunicator(WebsocketConnector.WEBSOCKET_CONNECTOR_SERVICE_ID, config.transport, {
81
- rpcRequestTimeout: 15000 // TODO use config option or named constant?
82
- });
83
- this.registerLocalRpcMethods(config);
84
- }
85
- registerLocalRpcMethods(config) {
86
- const rpcLocal = new WebsocketConnectorRpcLocal_1.WebsocketConnectorRpcLocal({
87
- connect: (targetPeerDescriptor) => this.connect(targetPeerDescriptor),
88
- hasConnection: (nodeId) => (this.connectingConnections.has(nodeId)
89
- || this.ongoingConnectRequests.has(nodeId)
90
- || config.hasConnection(nodeId)),
91
- onNewConnection: (connection) => config.onNewConnection(connection),
92
- abortSignal: this.abortController.signal
93
- });
94
- this.rpcCommunicator.registerRpcNotification(DhtRpc_1.WebsocketConnectionRequest, 'requestConnection', async (req, context) => {
95
- if (!this.abortController.signal.aborted) {
96
- return rpcLocal.requestConnection(req, context);
97
- }
98
- else {
99
- return {};
100
- }
101
- });
102
- }
103
- attachHandshaker(connection) {
104
- const handshaker = new Handshaker_1.Handshaker(this.localPeerDescriptor, connection);
105
- handshaker.once('handshakeRequest', (localPeerDescriptor, sourceVersion, remotePeerDescriptor) => {
106
- this.onServerSocketHandshakeRequest(localPeerDescriptor, connection, sourceVersion, remotePeerDescriptor);
107
- });
108
- }
109
- async autoCertify() {
110
- this.autoCertifierClient = new AutoCertifierClientFacade_1.AutoCertifierClientFacade({
111
- configFile: this.config.autoCertifierConfigFile,
112
- transport: this.config.autoCertifierTransport,
113
- url: this.config.autoCertifierUrl,
114
- wsServerPort: this.selectedPort,
115
- setHost: (hostName) => this.setHost(hostName),
116
- updateCertificate: (certificate, privateKey) => this.websocketServer.updateCertificate(certificate, privateKey)
117
- });
118
- logger.trace(`AutoCertifying subdomain...`);
119
- await this.autoCertifierClient.start();
120
- }
121
- setHost(hostName) {
122
- logger.trace(`Setting host name to ${hostName}`);
123
- this.host = hostName;
71
+ this.host = options.host;
124
72
  }
125
73
  async start() {
126
74
  if (!this.abortController.signal.aborted && this.websocketServer) {
@@ -149,8 +97,8 @@ class WebsocketConnector {
149
97
  }
150
98
  }
151
99
  });
152
- if (this.config.geoIpDatabaseFolder) {
153
- const geoIpLocator = new geoip_location_1.GeoIpLocator(this.config.geoIpDatabaseFolder);
100
+ if (this.options.geoIpDatabaseFolder) {
101
+ const geoIpLocator = new geoip_location_1.GeoIpLocator(this.options.geoIpDatabaseFolder);
154
102
  try {
155
103
  await geoIpLocator.start();
156
104
  this.geoIpLocator = geoIpLocator;
@@ -163,6 +111,45 @@ class WebsocketConnector {
163
111
  this.selectedPort = port;
164
112
  }
165
113
  }
114
+ attachHandshaker(connection) {
115
+ // TODO: use createIncomingHandshaker here?
116
+ const handshaker = new Handshaker_1.Handshaker(this.localPeerDescriptor, connection);
117
+ handshaker.once('handshakeRequest', (localPeerDescriptor, sourceVersion, remotePeerDescriptor) => {
118
+ this.onServerSocketHandshakeRequest(localPeerDescriptor, connection, handshaker, sourceVersion, remotePeerDescriptor);
119
+ });
120
+ }
121
+ onServerSocketHandshakeRequest(sourcePeerDescriptor, websocketServerConnection, handshaker, remoteVersion, targetPeerDescriptor) {
122
+ const nodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(sourcePeerDescriptor);
123
+ if (this.ongoingConnectRequests.has(nodeId)) {
124
+ const { pendingConnection, delFunc } = this.ongoingConnectRequests.get(nodeId);
125
+ if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
126
+ (0, Handshaker_1.rejectHandshake)(pendingConnection, websocketServerConnection, handshaker, DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
127
+ delFunc();
128
+ }
129
+ else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
130
+ (0, Handshaker_1.rejectHandshake)(pendingConnection, websocketServerConnection, handshaker, DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
131
+ delFunc();
132
+ }
133
+ else {
134
+ (0, Handshaker_1.acceptHandshake)(handshaker, pendingConnection, websocketServerConnection);
135
+ }
136
+ }
137
+ else {
138
+ const pendingConnection = new PendingConnection_1.PendingConnection(sourcePeerDescriptor);
139
+ if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
140
+ (0, Handshaker_1.rejectHandshake)(pendingConnection, websocketServerConnection, handshaker, DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
141
+ }
142
+ else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
143
+ (0, Handshaker_1.rejectHandshake)(pendingConnection, websocketServerConnection, handshaker, DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
144
+ }
145
+ else if (this.options.onNewConnection(pendingConnection)) {
146
+ (0, Handshaker_1.acceptHandshake)(handshaker, pendingConnection, websocketServerConnection);
147
+ }
148
+ else {
149
+ (0, Handshaker_1.rejectHandshake)(pendingConnection, websocketServerConnection, handshaker, DhtRpc_1.HandshakeError.DUPLICATE_CONNECTION);
150
+ }
151
+ }
152
+ }
166
153
  async checkConnectivity(allowSelfSignedCertificate) {
167
154
  // TODO: this could throw?
168
155
  if (this.abortController.signal.aborted) {
@@ -173,22 +160,22 @@ class WebsocketConnector {
173
160
  version: version_1.LOCAL_PROTOCOL_VERSION
174
161
  };
175
162
  }
176
- if (!this.config.entrypoints || this.config.entrypoints.length === 0) {
177
- // return connectivity info given in config
163
+ if (!this.options.entrypoints || this.options.entrypoints.length === 0) {
164
+ // return connectivity info given in options
178
165
  return {
179
166
  host: this.host,
180
167
  natType: ConnectionManager_1.NatType.OPEN_INTERNET,
181
168
  websocket: {
182
169
  host: this.host,
183
170
  port: this.selectedPort,
184
- tls: this.config.tlsCertificate !== undefined
171
+ tls: this.options.tlsCertificate !== undefined
185
172
  },
186
173
  // TODO: Resolve the given host name or or use as is if IP was given.
187
174
  ipAddress: (0, utils_1.ipv4ToNumber)('127.0.0.1'),
188
175
  version: version_1.LOCAL_PROTOCOL_VERSION
189
176
  };
190
177
  }
191
- const shuffledEntrypoints = (0, lodash_1.shuffle)(this.config.entrypoints);
178
+ const shuffledEntrypoints = (0, lodash_1.shuffle)(this.options.entrypoints);
192
179
  while (shuffledEntrypoints.length > 0 && !this.abortController.signal.aborted) {
193
180
  const entryPoint = shuffledEntrypoints[0];
194
181
  try {
@@ -196,7 +183,7 @@ class WebsocketConnector {
196
183
  const connectivityRequest = {
197
184
  port: this.selectedPort ?? connectivityRequestHandler_1.DISABLE_CONNECTIVITY_PROBE,
198
185
  host: this.host,
199
- tls: this.websocketServer ? this.config.serverEnableTls : false,
186
+ tls: this.websocketServer ? this.options.serverEnableTls : false,
200
187
  allowSelfSignedCertificate
201
188
  };
202
189
  if (!this.abortController.signal.aborted) {
@@ -208,50 +195,41 @@ class WebsocketConnector {
208
195
  }
209
196
  catch (err) {
210
197
  const error = `Failed to connect to entrypoint with id ${(0, identifiers_1.getNodeIdFromPeerDescriptor)(entryPoint)} `
211
- + `and URL ${(0, exports.connectivityMethodToWebsocketUrl)(entryPoint.websocket)}`;
198
+ + `and URL ${(0, WebsocketClientConnector_1.connectivityMethodToWebsocketUrl)(entryPoint.websocket)}`;
212
199
  logger.error(error, { err });
213
200
  shuffledEntrypoints.shift();
214
201
  await (0, utils_1.wait)(2000, this.abortController.signal);
215
202
  }
216
203
  }
217
- throw new errors_1.WebsocketServerStartError(`Failed to connect to the entrypoints after ${this.config.entrypoints.length} attempts\n`
218
- + `Attempted hosts: ${this.config.entrypoints.map((entry) => `${entry.websocket.host}:${entry.websocket.port}`).join(', ')}`);
204
+ throw new errors_1.WebsocketServerStartError(`Failed to connect to the entrypoints after ${this.options.entrypoints.length} attempts\n`
205
+ + `Attempted hosts: ${this.options.entrypoints.map((entry) => `${entry.websocket.host}:${entry.websocket.port}`).join(', ')}`);
219
206
  }
220
- isPossibleToFormConnection(targetPeerDescriptor) {
221
- const connectionType = (0, Connectivity_1.expectedConnectionType)(this.localPeerDescriptor, targetPeerDescriptor);
222
- return (connectionType === IConnection_1.ConnectionType.WEBSOCKET_CLIENT || connectionType === IConnection_1.ConnectionType.WEBSOCKET_SERVER);
207
+ async autoCertify() {
208
+ this.autoCertifierClient = new AutoCertifierClientFacade_1.AutoCertifierClientFacade({
209
+ configFile: this.options.autoCertifierConfigFile,
210
+ transport: this.options.autoCertifierTransport,
211
+ url: this.options.autoCertifierUrl,
212
+ wsServerPort: this.selectedPort,
213
+ setHost: (hostName) => this.setHost(hostName),
214
+ updateCertificate: (certificate, privateKey) => this.websocketServer.updateCertificate(certificate, privateKey)
215
+ });
216
+ logger.trace(`AutoCertifying subdomain...`);
217
+ await this.autoCertifierClient.start();
218
+ }
219
+ setHost(hostName) {
220
+ logger.trace(`Setting host name to ${hostName}`);
221
+ this.host = hostName;
223
222
  }
224
223
  connect(targetPeerDescriptor) {
225
224
  const nodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(targetPeerDescriptor);
226
- const existingConnection = this.connectingConnections.get(nodeId);
227
- if (existingConnection) {
228
- return existingConnection;
229
- }
230
- if (this.localPeerDescriptor.websocket && !targetPeerDescriptor.websocket) {
231
- return this.requestConnectionFromPeer(this.localPeerDescriptor, targetPeerDescriptor);
232
- }
233
- else {
234
- const socket = new NodeWebsocketClientConnection_1.WebsocketClientConnection();
235
- const url = (0, exports.connectivityMethodToWebsocketUrl)(targetPeerDescriptor.websocket);
236
- const managedConnection = new ManagedConnection_1.ManagedConnection(this.localPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_CLIENT, socket, undefined, targetPeerDescriptor);
237
- managedConnection.setRemotePeerDescriptor(targetPeerDescriptor);
238
- this.connectingConnections.set(nodeId, managedConnection);
239
- const delFunc = () => {
240
- if (this.connectingConnections.has(nodeId)) {
241
- this.connectingConnections.delete(nodeId);
242
- }
243
- socket.off('disconnected', delFunc);
244
- managedConnection.off('handshakeCompleted', delFunc);
245
- };
246
- socket.on('disconnected', delFunc);
247
- managedConnection.on('handshakeCompleted', delFunc);
248
- socket.connect(url, false);
249
- return managedConnection;
225
+ if (this.ongoingConnectRequests.has(nodeId)) {
226
+ return this.ongoingConnectRequests.get(nodeId).pendingConnection;
250
227
  }
228
+ return this.requestConnectionFromPeer(this.localPeerDescriptor, targetPeerDescriptor);
251
229
  }
252
230
  requestConnectionFromPeer(localPeerDescriptor, targetPeerDescriptor) {
253
231
  setImmediate(() => {
254
- const remoteConnector = new WebsocketConnectorRpcRemote_1.WebsocketConnectorRpcRemote(localPeerDescriptor, targetPeerDescriptor, this.rpcCommunicator, DhtRpc_client_1.WebsocketConnectorRpcClient);
232
+ const remoteConnector = new WebsocketClientConnectorRpcRemote_1.WebsocketClientConnectorRpcRemote(localPeerDescriptor, targetPeerDescriptor, this.options.rpcCommunicator, DhtRpc_client_1.WebsocketClientConnectorRpcClient);
255
233
  remoteConnector.requestConnection().then(() => {
256
234
  logger.trace('Sent WebsocketConnectionRequest notification to peer', { targetPeerDescriptor });
257
235
  }, (err) => {
@@ -260,59 +238,33 @@ class WebsocketConnector {
260
238
  });
261
239
  });
262
240
  });
263
- const managedConnection = new ManagedConnection_1.ManagedConnection(this.localPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_SERVER, undefined, undefined, targetPeerDescriptor);
241
+ const pendingConnection = new PendingConnection_1.PendingConnection(targetPeerDescriptor);
264
242
  const nodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(targetPeerDescriptor);
265
- managedConnection.on('disconnected', () => this.ongoingConnectRequests.delete(nodeId));
266
- managedConnection.setRemotePeerDescriptor(targetPeerDescriptor);
267
- this.ongoingConnectRequests.set(nodeId, managedConnection);
268
- return managedConnection;
269
- }
270
- onServerSocketHandshakeRequest(sourcePeerDescriptor, websocketServerConnection, remoteVersion, targetPeerDescriptor) {
271
- const nodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(sourcePeerDescriptor);
272
- if (this.ongoingConnectRequests.has(nodeId)) {
273
- const ongoingConnectRequest = this.ongoingConnectRequests.get(nodeId);
274
- if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
275
- ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
276
- }
277
- else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
278
- ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
279
- }
280
- else {
281
- ongoingConnectRequest.attachImplementation(websocketServerConnection);
282
- ongoingConnectRequest.acceptHandshake();
283
- }
243
+ // TODO: can this leak?
244
+ const delFunc = () => {
245
+ pendingConnection.off('connected', delFunc);
246
+ pendingConnection.off('disconnected', delFunc);
284
247
  this.ongoingConnectRequests.delete(nodeId);
285
- }
286
- else {
287
- const managedConnection = new ManagedConnection_1.ManagedConnection(this.localPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_SERVER, undefined, websocketServerConnection, targetPeerDescriptor);
288
- managedConnection.setRemotePeerDescriptor(sourcePeerDescriptor);
289
- if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
290
- managedConnection.rejectHandshake(DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
291
- }
292
- else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
293
- managedConnection.rejectHandshake(DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
294
- }
295
- else if (this.config.onNewConnection(managedConnection)) {
296
- managedConnection.acceptHandshake();
297
- }
298
- else {
299
- managedConnection.rejectHandshake(DhtRpc_1.HandshakeError.DUPLICATE_CONNECTION);
300
- }
301
- }
248
+ };
249
+ pendingConnection.on('connected', delFunc);
250
+ pendingConnection.on('disconnected', delFunc);
251
+ this.ongoingConnectRequests.set(nodeId, { pendingConnection, delFunc });
252
+ return pendingConnection;
253
+ }
254
+ isPossibleToFormConnection(targetPeerDescriptor) {
255
+ const connectionType = (0, Connectivity_1.expectedConnectionType)(this.localPeerDescriptor, targetPeerDescriptor);
256
+ return (connectionType === IConnection_1.ConnectionType.WEBSOCKET_SERVER);
302
257
  }
303
258
  setLocalPeerDescriptor(localPeerDescriptor) {
304
259
  this.localPeerDescriptor = localPeerDescriptor;
305
260
  }
306
261
  async destroy() {
307
262
  this.abortController.abort();
308
- this.rpcCommunicator.destroy();
309
263
  const requests = Array.from(this.ongoingConnectRequests.values());
310
- await Promise.allSettled(requests.map((conn) => conn.close(false)));
311
- const attempts = Array.from(this.connectingConnections.values());
312
- await Promise.allSettled(attempts.map((conn) => conn.close(false)));
264
+ await Promise.allSettled(requests.map((ongoingConnectRequest) => ongoingConnectRequest.pendingConnection.close(true)));
313
265
  await this.websocketServer?.stop();
314
266
  await this.geoIpLocator?.stop();
315
267
  }
316
268
  }
317
- exports.WebsocketConnector = WebsocketConnector;
318
- //# sourceMappingURL=WebsocketConnector.js.map
269
+ exports.WebsocketServerConnector = WebsocketServerConnector;
270
+ //# sourceMappingURL=WebsocketServerConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebsocketServerConnector.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServerConnector.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export interface DhtNodeEvents {
22
22
  export interface DhtNodeOptions {
23
23
  serviceId?: ServiceID;
24
24
  joinParallelism?: number;
25
- maxNeighborListSize?: number;
25
+ maxContactCount?: number;
26
26
  numberOfNodesPerKBucket?: number;
27
27
  joinNoProgressLimit?: number;
28
28
  peerDiscoveryQueryBatchSize?: number;
@@ -49,7 +49,6 @@ export interface DhtNodeOptions {
49
49
  webrtcAllowPrivateAddresses?: boolean;
50
50
  webrtcDatachannelBufferThresholdLow?: number;
51
51
  webrtcDatachannelBufferThresholdHigh?: number;
52
- webrtcNewConnectionTimeout?: number;
53
52
  webrtcPortRange?: PortRange;
54
53
  maxMessageSize?: number;
55
54
  maxConnections?: number;
@@ -59,9 +58,10 @@ export interface DhtNodeOptions {
59
58
  autoCertifierConfigFile?: string;
60
59
  geoIpDatabaseFolder?: string;
61
60
  }
61
+ export declare const CONTROL_LAYER_NODE_SERVICE_ID = "layer0";
62
62
  export type Events = TransportEvents & DhtNodeEvents;
63
63
  export declare class DhtNode extends EventEmitter<Events> implements ITransport {
64
- private readonly config;
64
+ private readonly options;
65
65
  private rpcCommunicator?;
66
66
  private transport?;
67
67
  private localPeerDescriptor?;
@@ -76,7 +76,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
76
76
  private started;
77
77
  private abortController;
78
78
  constructor(conf: DhtNodeOptions);
79
- private validateConfig;
79
+ private validateOptions;
80
80
  start(): Promise<void>;
81
81
  private initPeerManager;
82
82
  private bindRpcLocalMethods;