@streamr/dht 0.0.1-tatum.1 → 0.0.1-tatum.3
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/dist/src/connection/ConnectionManager.d.ts +6 -1
- package/dist/src/connection/ConnectionManager.js +21 -26
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectivityChecker.d.ts +4 -2
- package/dist/src/connection/ConnectivityChecker.js +23 -19
- package/dist/src/connection/ConnectivityChecker.js.map +1 -1
- package/dist/src/connection/ManagedConnection.js +2 -6
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js +1 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
- package/dist/src/connection/WebRTC/WebRtcConnector.d.ts +2 -0
- package/dist/src/connection/WebRTC/WebRtcConnector.js +14 -1
- package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
- package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +5 -3
- package/dist/src/connection/WebSocket/WebSocketConnector.js +19 -12
- package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
- package/dist/src/connection/WebSocket/WebSocketServer.d.ts +2 -2
- package/dist/src/connection/WebSocket/WebSocketServer.js +29 -37
- package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +9 -6
- package/dist/src/dht/DhtNode.js +14 -21
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtPeer.js +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +4 -2
- package/dist/src/dht/discovery/PeerDiscovery.js +18 -33
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/routing/RemoteRouter.js +2 -4
- package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
- package/dist/src/dht/store/DataStore.js +6 -6
- package/dist/src/exports.d.ts +1 -1
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/errors.d.ts +1 -1
- package/dist/src/helpers/errors.js +3 -3
- package/dist/src/helpers/errors.js.map +1 -1
- package/dist/src/helpers/protoClasses.js +0 -2
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +14 -50
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +9 -35
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
- package/package.json +9 -9
- package/protos/DhtRpc.proto +7 -16
- package/src/connection/ConnectionManager.ts +31 -28
- package/src/connection/ConnectivityChecker.ts +28 -23
- package/src/connection/ManagedConnection.ts +2 -6
- package/src/connection/Simulator/SimulatorTransport.ts +1 -1
- package/src/connection/WebRTC/BrowserWebRtcConnection.ts +13 -2
- package/src/connection/WebRTC/WebRtcConnector.ts +14 -0
- package/src/connection/WebSocket/WebSocketConnector.ts +23 -12
- package/src/connection/WebSocket/WebSocketServer.ts +33 -20
- package/src/dht/DhtNode.ts +23 -24
- package/src/dht/DhtPeer.ts +1 -1
- package/src/dht/discovery/PeerDiscovery.ts +17 -8
- package/src/dht/routing/RemoteRouter.ts +2 -4
- package/src/dht/store/DataStore.ts +6 -6
- package/src/exports.ts +1 -1
- package/src/helpers/errors.ts +1 -1
- package/src/helpers/protoClasses.ts +1 -5
- package/src/proto/google/protobuf/any.ts +1 -1
- package/src/proto/google/protobuf/empty.ts +1 -1
- package/src/proto/google/protobuf/timestamp.ts +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.ts +22 -69
- package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
- package/test/benchmark/KademliaCorrectness.test.ts +1 -1
- package/test/benchmark/RecursiveFind.test.ts +1 -1
- package/test/end-to-end/Layer0-Layer1.test.ts +3 -3
- package/test/end-to-end/Layer0.test.ts +5 -5
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +6 -6
- package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +18 -19
- package/test/end-to-end/Layer0WebRTC.test.ts +18 -24
- package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +2 -2
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +2 -2
- package/test/end-to-end/WebSocketConnectionRequest.test.ts +3 -3
- package/test/integration/ConnectionManager.test.ts +10 -9
- package/test/integration/DhtRpc.test.ts +2 -2
- package/test/integration/MigrateData.test.ts +3 -3
- package/test/integration/RouteMessage.test.ts +2 -2
- package/test/integration/ScaleDownDht.test.ts +1 -1
- package/test/integration/SimultaneousConnections.test.ts +9 -6
- package/test/integration/WebRtcConnectionManagement.test.ts +2 -2
- package/test/integration/WebRtcConnectorRpc.test.ts +2 -2
- package/test/integration/WebSocketConnectionManagement.test.ts +3 -2
- package/test/integration/WebSocketConnectorRpc.test.ts +4 -4
- package/test/unit/WebSocketServer.test.ts +1 -8
- package/test/unit/webrtcReplaceInternalIpWithExternalIp.ts +18 -0
- package/test/utils/utils.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRtcConnector.js","sourceRoot":"","sources":["../../../../src/connection/WebRTC/WebRtcConnector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAK+C;AAG/C,uFAAmF;AACnF,iEAA6D;AAC7D,mEAA+D;AAC/D,iFAA4F;AAE5F,wEAAoE;AACpE,0CAAuC;AACvC,0DAA2C;AAI3C,kDAAqD;AACrD,qFAI+C;AAC/C,6DAAsF;AAGtF,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"WebRtcConnector.js","sourceRoot":"","sources":["../../../../src/connection/WebRTC/WebRtcConnector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAK+C;AAG/C,uFAAmF;AACnF,iEAA6D;AAC7D,mEAA+D;AAC/D,iFAA4F;AAE5F,wEAAoE;AACpE,0CAAuC;AACvC,0DAA2C;AAI3C,kDAAqD;AACrD,qFAI+C;AAC/C,6DAAsF;AAGtF,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAE1B,MAAM,+BAA+B,GAAG,CAAC,SAAiB,EAAE,EAAU,EAAU,EAAE;IACrF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,IAAI,KAAK,MAAM,EAAE;QACjB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;KACjB;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC,CAAA;AAPY,QAAA,+BAA+B,mCAO3C;AAsBD,MAAa,eAAe;IAWxB,YACI,MAA6B,EAC7B,0BAAsE;QAVzD,2BAAsB,GAA4C,IAAI,GAAG,EAAE,CAAA;QAEpF,YAAO,GAAG,KAAK,CAAA;QAUnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAA;QACjE,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAA;QAE5D,IAAI,CAAC,eAAe,GAAG,IAAI,mDAAwB,CAAC,eAAe,CAAC,2BAA2B,EAAE,MAAM,CAAC,YAAY,EAAE;YAClH,iBAAiB,EAAE,KAAK;SAC3B,CAAC,CAAA;QACF,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,iBAAQ,EAAE,UAAU,EAC7D,CAAC,GAAa,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,kBAAS,EAAE,WAAW,EAC/D,CAAC,GAAc,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,qBAAY,EAAE,cAAc,EACrE,CAAC,GAAiB,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QACpE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,gCAAuB,EAAE,mBAAmB,EACrF,CAAC,GAA4B,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,OAAO,CAAC,oBAAoC;QACxC,IAAI,IAAA,+CAAoB,EAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAkB,CAAC,EAAE;YACrE,MAAM,IAAI,GAAG,CAAC,mBAAmB,CAAC,uCAAuC,CAAC,CAAA;SAC7E;QAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,oBAAoB,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAE1F,MAAM,OAAO,GAAG,IAAA,gDAAqB,EAAC,oBAAoB,CAAC,CAAA;QAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACnE,IAAI,kBAAkB,EAAE;YACpB,OAAO,kBAAkB,CAAA;SAC5B;QAED,MAAM,UAAU,GAAG,IAAI,2CAAoB,CAAC;YACxC,oBAAoB,EAAE,oBAAoB;YAC1C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACpD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACnC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;QACtD,IAAI,iBAA0C,CAAA;QAE9C,IAAI,QAAQ,EAAE;YACV,iBAAiB,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,iBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;SACpH;aAAM;YACH,iBAAiB,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,iBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;SAC/H;QAED,iBAAiB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;QAEzD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAA,gDAAqB,EAAC,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAE/F,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;aAC9C;YACD,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;YACvC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QACxD,CAAC,CAAA;QACD,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;QACtC,iBAAiB,CAAC,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QAEnD,MAAM,eAAe,GAAG,IAAI,6CAAqB,CAC7C,oBAAoB,EACpB,IAAA,4BAAgB,EAAC,IAAI,4CAA4B,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CACnG,CAAA;QAED,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,SAAiB,EAAE,GAAW,EAAE,EAAE;YAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACxB,SAAS,GAAG,IAAA,uCAA+B,EAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAC9E,MAAM,CAAC,KAAK,CAAC,yCAAyC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAA;aAC5E;YACD,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAkB,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;QACjH,CAAC,CAAC,CAAA;QAEF,IAAI,QAAQ,EAAE;YACV,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAmB,EAAE,KAAa,EAAE,EAAE;gBACvE,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1G,CAAC,CAAC,CAAA;SACL;aAAM;YACH,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAmB,EAAE,KAAa,EAAE,EAAE;gBACvE,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC3G,CAAC,CAAC,CAAA;SACL;QAED,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE1B,IAAI,CAAC,QAAQ,EAAE;YACX,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAkB,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;SACjG;QAED,OAAO,iBAAiB,CAAA;IAC5B,CAAC;IAED,oBAAoB,CAAC,cAA8B;QAC/C,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAA;IAC3C,CAAC;IAED,qBAAqB,CAAC,SAAiB;QACnC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAA,yCAA0B,EAAC,SAAS,CAAC,CAAA;YACrD,IAAI,OAAO,IAAI,IAAA,4BAAa,EAAC,OAAO,CAAC,EAAE;gBACnC,OAAO,KAAK,CAAA;aACf;SACJ;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,UAAU,CACd,UAA0B,EAC1B,UAA0B,EAC1B,WAAmB,EACnB,YAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,+CAAoB,EAAC,UAAU,EAAE,IAAI,CAAC,iBAAkB,CAAC,EAAE;YAC5E,OAAM;SACT;QACD,MAAM,OAAO,GAAG,IAAA,gDAAqB,EAAC,UAAU,CAAC,CAAA;QACjD,IAAI,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChE,IAAI,UAAU,GAAG,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;QAEzD,IAAI,CAAC,iBAAiB,EAAE;YACpB,UAAU,GAAG,IAAI,2CAAoB,CAAC,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,CAAA;YAC3E,iBAAiB,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,iBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;YAE5H,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;YAE/C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;YAC3D,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAA;YAElD,MAAM,eAAe,GAAG,IAAI,6CAAqB,CAC7C,UAAU,EACV,IAAA,4BAAgB,EAAC,IAAI,4CAA4B,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CACnG,CAAA;YAED,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,SAAiB,EAAE,GAAW,EAAE,EAAE;gBAC/D,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAkB,EAAE,SAAS,EAAE,GAAG,EAAE,UAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAClH,CAAC,CAAC,CAAA;YAEF,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAmB,EAAE,KAAa,EAAE,EAAE;gBACvE,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAkB,EAAE,WAAW,EAAE,UAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC5G,CAAC,CAAC,CAAA;YAEF,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAE1B;QAED,mCAAmC;QACnC,UAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QACzC,UAAW,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAEtD,iBAAiB,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1C,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;aAC9C;YACD,iBAAkB,CAAC,eAAe,EAAE,CAAA;QACxC,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,WAAW,CACf,oBAAoC,EACpC,oBAAoC,EACpC,WAAmB,EACnB,YAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,+CAAoB,EAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAkB,CAAC,EAAE;YACtF,OAAM;SACT;QACD,MAAM,OAAO,GAAG,IAAA,gDAAqB,EAAC,oBAAoB,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;QAClF,IAAI,CAAC,UAAU,EAAE;YACb,OAAM;SACT;aAAM,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,YAAY,EAAE;YAC5D,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAA;YAChE,OAAM;SACT;QACD,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1D,CAAC;IAEO,mBAAmB,CAAC,oBAAoC;QAC5D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAA,gDAAqB,EAAC,oBAAoB,CAAC,CAAC,EAAE;YAC9F,OAAM;SACT;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAC5D,iBAAiB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;QAEzD,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAA;IACtD,CAAC;IACO,iBAAiB,CACrB,oBAAoC,EACpC,oBAAoC,EACpC,SAAiB,EACjB,GAAW,EACX,YAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAA,+CAAoB,EAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAkB,CAAC,EAAE;YACtF,OAAM;SACT;QACD,MAAM,OAAO,GAAG,IAAA,gDAAqB,EAAC,oBAAoB,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;QAElF,IAAI,CAAC,UAAU,EAAE;YACb,OAAM;SACT;aAAM,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,YAAY,EAAE;YAC5D,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;YACtE,OAAM;SACT;aAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE;YAC9C,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;SAChD;IACL,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAA;QACjE,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAErE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC;IAEM,UAAU,CAAC,oBAAoC;QAClD,MAAM,IAAI,GAAG,IAAA,mDAAwB,EAAC,IAAI,CAAC,iBAAkB,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,IAAA,mDAAwB,EAAC,oBAAoB,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,iBAAiB,CAAC,OAAgC,EAAE,QAA2B;QACjF,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAU,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAiB,EAAE,QAA2B;QACzD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAU,EAAE,OAAO,CAAC,MAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QAC/F,OAAO,EAAE,CAAA;IACb,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAkB,EAAE,QAA2B;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAU,EAAE,OAAO,CAAC,MAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QAChG,OAAO,EAAE,CAAA;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAqB,EAAE,QAA2B;QACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAU,EAAE,OAAO,CAAC,MAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QACjH,OAAO,EAAE,CAAA;IACb,CAAC;;AAtQL,0CAuQC;AAtQ2B,2CAA2B,GAAG,yBAAyB,AAA5B,CAA4B"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ITransport } from '../../transport/ITransport';
|
|
2
|
-
import { ConnectivityResponse, PeerDescriptor, WebSocketConnectionRequest, WebSocketConnectionResponse } from '../../proto/packages/dht/protos/DhtRpc';
|
|
2
|
+
import { ConnectivityMethod, ConnectivityResponse, PeerDescriptor, WebSocketConnectionRequest, WebSocketConnectionResponse } from '../../proto/packages/dht/protos/DhtRpc';
|
|
3
3
|
import { IWebSocketConnectorService } from '../../proto/packages/dht/protos/DhtRpc.server';
|
|
4
4
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
5
5
|
import { ManagedConnection } from '../ManagedConnection';
|
|
6
|
-
import { PortRange } from '../ConnectionManager';
|
|
6
|
+
import { PortRange, TlsCertificate } from '../ConnectionManager';
|
|
7
|
+
export declare const connectivityMethodToWebSocketUrl: (ws: ConnectivityMethod) => string;
|
|
7
8
|
export declare class WebSocketConnector implements IWebSocketConnectorService {
|
|
8
9
|
private static readonly WEBSOCKET_CONNECTOR_SERVICE_ID;
|
|
9
10
|
private readonly rpcCommunicator;
|
|
@@ -15,12 +16,13 @@ export declare class WebSocketConnector implements IWebSocketConnectorService {
|
|
|
15
16
|
private portRange?;
|
|
16
17
|
private host?;
|
|
17
18
|
private entrypoints?;
|
|
19
|
+
private readonly tlsCertificate?;
|
|
18
20
|
private selectedPort?;
|
|
19
21
|
private readonly protocolVersion;
|
|
20
22
|
private ownPeerDescriptor?;
|
|
21
23
|
private connectingConnections;
|
|
22
24
|
private destroyed;
|
|
23
|
-
constructor(protocolVersion: string, rpcTransport: ITransport, fnCanConnect: (peerDescriptor: PeerDescriptor, _ip: string, port: number) => boolean, incomingConnectionCallback: (connection: ManagedConnection) => boolean, portRange?: PortRange, host?: string, entrypoints?: PeerDescriptor[]);
|
|
25
|
+
constructor(protocolVersion: string, rpcTransport: ITransport, fnCanConnect: (peerDescriptor: PeerDescriptor, _ip: string, port: number) => boolean, incomingConnectionCallback: (connection: ManagedConnection) => boolean, portRange?: PortRange, host?: string, entrypoints?: PeerDescriptor[], tlsCertificate?: TlsCertificate);
|
|
24
26
|
private attachHandshaker;
|
|
25
27
|
start(): Promise<void>;
|
|
26
28
|
checkConnectivity(reattempt?: number): Promise<ConnectivityResponse>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebSocketConnector = void 0;
|
|
3
|
+
exports.WebSocketConnector = exports.connectivityMethodToWebSocketUrl = void 0;
|
|
4
4
|
const ClientWebSocket_1 = require("./ClientWebSocket");
|
|
5
5
|
const IConnection_1 = require("../IConnection");
|
|
6
6
|
const ListeningRpcCommunicator_1 = require("../../transport/ListeningRpcCommunicator");
|
|
@@ -17,8 +17,13 @@ const Handshaker_1 = require("../Handshaker");
|
|
|
17
17
|
const peerIdFromPeerDescriptor_1 = require("../../helpers/peerIdFromPeerDescriptor");
|
|
18
18
|
const lodash_1 = require("lodash");
|
|
19
19
|
const logger = new utils_1.Logger(module);
|
|
20
|
+
const connectivityMethodToWebSocketUrl = (ws) => {
|
|
21
|
+
return (ws.tls ? 'wss://' : 'ws://') + ws.host + ':' + ws.port;
|
|
22
|
+
};
|
|
23
|
+
exports.connectivityMethodToWebSocketUrl = connectivityMethodToWebSocketUrl;
|
|
24
|
+
const ENTRY_POINT_CONNECTION_ATTEMPTS = 5;
|
|
20
25
|
class WebSocketConnector {
|
|
21
|
-
constructor(protocolVersion, rpcTransport, fnCanConnect, incomingConnectionCallback, portRange, host, entrypoints) {
|
|
26
|
+
constructor(protocolVersion, rpcTransport, fnCanConnect, incomingConnectionCallback, portRange, host, entrypoints, tlsCertificate) {
|
|
22
27
|
this.ongoingConnectRequests = new Map();
|
|
23
28
|
this.connectingConnections = new Map();
|
|
24
29
|
this.destroyed = false;
|
|
@@ -48,6 +53,7 @@ class WebSocketConnector {
|
|
|
48
53
|
this.portRange = portRange;
|
|
49
54
|
this.host = host;
|
|
50
55
|
this.entrypoints = entrypoints;
|
|
56
|
+
this.tlsCertificate = tlsCertificate;
|
|
51
57
|
this.canConnectFunction = fnCanConnect.bind(this);
|
|
52
58
|
this.rpcCommunicator = new ListeningRpcCommunicator_1.ListeningRpcCommunicator(WebSocketConnector.WEBSOCKET_CONNECTOR_SERVICE_ID, rpcTransport, {
|
|
53
59
|
rpcRequestTimeout: 15000
|
|
@@ -82,15 +88,16 @@ class WebSocketConnector {
|
|
|
82
88
|
this.attachHandshaker(connection);
|
|
83
89
|
}
|
|
84
90
|
});
|
|
85
|
-
const port = await this.webSocketServer.start(this.portRange, this.
|
|
91
|
+
const port = await this.webSocketServer.start(this.portRange, this.tlsCertificate);
|
|
86
92
|
this.selectedPort = port;
|
|
87
|
-
this.connectivityChecker = new ConnectivityChecker_1.ConnectivityChecker(this.selectedPort);
|
|
93
|
+
this.connectivityChecker = new ConnectivityChecker_1.ConnectivityChecker(this.selectedPort, this.tlsCertificate !== undefined, this.host);
|
|
88
94
|
}
|
|
89
95
|
}
|
|
90
96
|
async checkConnectivity(reattempt = 0) {
|
|
97
|
+
// TODO: this could throw if the server is not running
|
|
91
98
|
const noServerConnectivityResponse = {
|
|
92
99
|
openInternet: false,
|
|
93
|
-
|
|
100
|
+
host: '127.0.0.1',
|
|
94
101
|
natType: ConnectionManager_1.NatType.UNKNOWN
|
|
95
102
|
};
|
|
96
103
|
if (this.destroyed) {
|
|
@@ -106,9 +113,9 @@ class WebSocketConnector {
|
|
|
106
113
|
// return connectivity info given in config
|
|
107
114
|
const preconfiguredConnectivityResponse = {
|
|
108
115
|
openInternet: true,
|
|
109
|
-
|
|
116
|
+
host: this.host,
|
|
110
117
|
natType: ConnectionManager_1.NatType.OPEN_INTERNET,
|
|
111
|
-
websocket: {
|
|
118
|
+
websocket: { host: this.host, port: this.selectedPort, tls: this.tlsCertificate !== undefined }
|
|
112
119
|
};
|
|
113
120
|
return preconfiguredConnectivityResponse;
|
|
114
121
|
}
|
|
@@ -119,7 +126,8 @@ class WebSocketConnector {
|
|
|
119
126
|
}
|
|
120
127
|
}
|
|
121
128
|
catch (err) {
|
|
122
|
-
if (reattempt <
|
|
129
|
+
if (reattempt < ENTRY_POINT_CONNECTION_ATTEMPTS) {
|
|
130
|
+
logger.error('Failed to connect to the entrypoint', { error: err });
|
|
123
131
|
await (0, utils_1.wait)(2000);
|
|
124
132
|
return this.checkConnectivity(reattempt + 1);
|
|
125
133
|
}
|
|
@@ -139,8 +147,7 @@ class WebSocketConnector {
|
|
|
139
147
|
}
|
|
140
148
|
else {
|
|
141
149
|
const socket = new ClientWebSocket_1.ClientWebSocket();
|
|
142
|
-
const
|
|
143
|
-
targetPeerDescriptor.websocket.port;
|
|
150
|
+
const url = (0, exports.connectivityMethodToWebSocketUrl)(targetPeerDescriptor.websocket);
|
|
144
151
|
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, this.protocolVersion, IConnection_1.ConnectionType.WEBSOCKET_CLIENT, socket, undefined);
|
|
145
152
|
managedConnection.setPeerDescriptor(targetPeerDescriptor);
|
|
146
153
|
this.connectingConnections.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor), managedConnection);
|
|
@@ -153,14 +160,14 @@ class WebSocketConnector {
|
|
|
153
160
|
};
|
|
154
161
|
socket.on('disconnected', delFunc);
|
|
155
162
|
managedConnection.on('handshakeCompleted', delFunc);
|
|
156
|
-
socket.connect(
|
|
163
|
+
socket.connect(url);
|
|
157
164
|
return managedConnection;
|
|
158
165
|
}
|
|
159
166
|
}
|
|
160
167
|
requestConnectionFromPeer(ownPeerDescriptor, targetPeerDescriptor) {
|
|
161
168
|
setImmediate(() => {
|
|
162
169
|
const remoteConnector = new RemoteWebSocketConnector_1.RemoteWebSocketConnector(targetPeerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.WebSocketConnectorServiceClient(this.rpcCommunicator.getRpcClientTransport())));
|
|
163
|
-
remoteConnector.requestConnection(ownPeerDescriptor, ownPeerDescriptor.websocket.
|
|
170
|
+
remoteConnector.requestConnection(ownPeerDescriptor, ownPeerDescriptor.websocket.host, ownPeerDescriptor.websocket.port);
|
|
164
171
|
});
|
|
165
172
|
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, this.protocolVersion, IConnection_1.ConnectionType.WEBSOCKET_SERVER);
|
|
166
173
|
managedConnection.on('disconnected', () => this.ongoingConnectRequests.delete((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketConnector.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,gDAA4D;AAE5D,uFAAmF;AACnF,yEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"WebSocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import EventEmitter from 'eventemitter3';
|
|
2
2
|
import { ConnectionSourceEvents } from '../IConnectionSource';
|
|
3
|
-
import { PortRange } from '../ConnectionManager';
|
|
3
|
+
import { PortRange, TlsCertificate } from '../ConnectionManager';
|
|
4
4
|
export declare class WebSocketServer extends EventEmitter<ConnectionSourceEvents> {
|
|
5
5
|
private httpServer?;
|
|
6
6
|
private wsServer?;
|
|
7
7
|
private readonly abortController;
|
|
8
|
-
start(portRange: PortRange,
|
|
8
|
+
start(portRange: PortRange, tlsCertificate?: TlsCertificate): Promise<number>;
|
|
9
9
|
private startServer;
|
|
10
10
|
stop(): Promise<void>;
|
|
11
11
|
private createWsServer;
|
|
@@ -1,65 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
6
|
exports.WebSocketServer = void 0;
|
|
30
|
-
const
|
|
7
|
+
const http_1 = require("http");
|
|
8
|
+
const https_1 = require("https");
|
|
31
9
|
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
32
10
|
const websocket_1 = require("websocket");
|
|
33
11
|
const ServerWebSocket_1 = require("./ServerWebSocket");
|
|
34
12
|
const utils_1 = require("@streamr/utils");
|
|
35
13
|
const errors_1 = require("../../helpers/errors");
|
|
36
14
|
const lodash_1 = require("lodash");
|
|
15
|
+
const fs_1 = __importDefault(require("fs"));
|
|
37
16
|
const logger = new utils_1.Logger(module);
|
|
38
17
|
class WebSocketServer extends eventemitter3_1.default {
|
|
39
18
|
constructor() {
|
|
40
19
|
super(...arguments);
|
|
41
20
|
this.abortController = new AbortController();
|
|
42
21
|
}
|
|
43
|
-
async start(portRange,
|
|
22
|
+
async start(portRange, tlsCertificate) {
|
|
44
23
|
const ports = (0, lodash_1.range)(portRange.min, portRange.max + 1);
|
|
45
24
|
for (const port of ports) {
|
|
46
25
|
try {
|
|
47
|
-
await (0, utils_1.asAbortable)(this.startServer(port,
|
|
26
|
+
await (0, utils_1.asAbortable)(this.startServer(port, tlsCertificate), this.abortController.signal);
|
|
48
27
|
return port;
|
|
49
28
|
}
|
|
50
29
|
catch (err) {
|
|
51
|
-
|
|
30
|
+
if (err.originalError?.code === 'EADDRINUSE') {
|
|
31
|
+
logger.debug(`failed to start WebSocket server on port: ${port} reattempting on next port`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new errors_1.WebSocketServerStartError(err);
|
|
35
|
+
}
|
|
52
36
|
}
|
|
53
37
|
}
|
|
54
|
-
throw new errors_1.
|
|
38
|
+
throw new errors_1.WebSocketServerStartError(`Failed to start WebSocket server on any port in range: ${portRange.min}-${portRange.min}`);
|
|
55
39
|
}
|
|
56
|
-
startServer(port,
|
|
40
|
+
startServer(port, tlsCertificate) {
|
|
41
|
+
const requestListener = (request, response) => {
|
|
42
|
+
logger.trace('Received request for ' + request.url);
|
|
43
|
+
response.writeHead(404);
|
|
44
|
+
response.end();
|
|
45
|
+
};
|
|
57
46
|
return new Promise((resolve, reject) => {
|
|
58
|
-
this.httpServer =
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
this.httpServer = tlsCertificate ?
|
|
48
|
+
(0, https_1.createServer)({
|
|
49
|
+
key: fs_1.default.readFileSync(tlsCertificate.privateKeyFileName),
|
|
50
|
+
cert: fs_1.default.readFileSync(tlsCertificate.certFileName)
|
|
51
|
+
}, requestListener)
|
|
52
|
+
:
|
|
53
|
+
(0, http_1.createServer)(requestListener);
|
|
63
54
|
function originIsAllowed(_uorigin) {
|
|
64
55
|
return true;
|
|
65
56
|
}
|
|
@@ -76,17 +67,18 @@ class WebSocketServer extends eventemitter3_1.default {
|
|
|
76
67
|
this.emit('connected', new ServerWebSocket_1.ServerWebSocket(connection, request.resourceURL));
|
|
77
68
|
});
|
|
78
69
|
this.httpServer.once('error', (err) => {
|
|
79
|
-
reject(new errors_1.
|
|
70
|
+
reject(new errors_1.WebSocketServerStartError('Starting Websocket server failed', err));
|
|
80
71
|
});
|
|
81
72
|
this.httpServer.once('listening', () => {
|
|
82
73
|
logger.debug('Websocket server is listening on port ' + port);
|
|
83
74
|
resolve();
|
|
84
75
|
});
|
|
85
76
|
try {
|
|
86
|
-
|
|
77
|
+
// Listen only to IPv4 network interfaces, default value listens to IPv6 as well
|
|
78
|
+
this.httpServer.listen(port, '0.0.0.0');
|
|
87
79
|
}
|
|
88
80
|
catch (e) {
|
|
89
|
-
reject(new errors_1.
|
|
81
|
+
reject(new errors_1.WebSocketServerStartError('Websocket server threw an exception', e));
|
|
90
82
|
}
|
|
91
83
|
});
|
|
92
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketServer.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebSocketServer.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
|
6
6
|
import { PeerID } from '../helpers/PeerID';
|
|
7
7
|
import { LeaveNotice, ConnectivityResponse, Message, PeerDescriptor, FindMode, DataEntry } from '../proto/packages/dht/protos/DhtRpc';
|
|
8
8
|
import { ITransport, TransportEvents } from '../transport/ITransport';
|
|
9
|
-
import { ConnectionManager, PortRange } from '../connection/ConnectionManager';
|
|
9
|
+
import { ConnectionManager, PortRange, TlsCertificate } from '../connection/ConnectionManager';
|
|
10
10
|
import { MetricsContext } from '@streamr/utils';
|
|
11
11
|
import { Empty } from '../proto/google/protobuf/empty';
|
|
12
12
|
import { Any } from '../proto/google/protobuf/any';
|
|
@@ -40,7 +40,7 @@ export interface DhtNodeOptions {
|
|
|
40
40
|
entryPoints?: PeerDescriptor[];
|
|
41
41
|
websocketHost?: string;
|
|
42
42
|
websocketPortRange?: PortRange;
|
|
43
|
-
|
|
43
|
+
peerId?: string;
|
|
44
44
|
nodeName?: string;
|
|
45
45
|
rpcRequestTimeout?: number;
|
|
46
46
|
iceServers?: IceServer[];
|
|
@@ -50,6 +50,8 @@ export interface DhtNodeOptions {
|
|
|
50
50
|
webrtcNewConnectionTimeout?: number;
|
|
51
51
|
webrtcPortRange?: PortRange;
|
|
52
52
|
maxConnections?: number;
|
|
53
|
+
tlsCertificate?: TlsCertificate;
|
|
54
|
+
externalIp?: string;
|
|
53
55
|
}
|
|
54
56
|
export declare class DhtNodeConfig {
|
|
55
57
|
serviceId: string;
|
|
@@ -64,7 +66,7 @@ export declare class DhtNodeConfig {
|
|
|
64
66
|
storeMaxTtl: number;
|
|
65
67
|
storeNumberOfCopies: number;
|
|
66
68
|
metricsContext: MetricsContext;
|
|
67
|
-
|
|
69
|
+
peerId: string;
|
|
68
70
|
transportLayer?: ITransport;
|
|
69
71
|
peerDescriptor?: PeerDescriptor;
|
|
70
72
|
entryPoints?: PeerDescriptor[];
|
|
@@ -77,11 +79,13 @@ export declare class DhtNodeConfig {
|
|
|
77
79
|
webrtcDatachannelBufferThresholdLow?: number;
|
|
78
80
|
webrtcDatachannelBufferThresholdHigh?: number;
|
|
79
81
|
webrtcNewConnectionTimeout?: number;
|
|
82
|
+
externalIp?: string;
|
|
80
83
|
webrtcPortRange?: PortRange;
|
|
84
|
+
tlsCertificate?: TlsCertificate;
|
|
81
85
|
constructor(conf: Partial<DhtNodeOptions>);
|
|
82
86
|
}
|
|
83
87
|
export type Events = TransportEvents & DhtNodeEvents;
|
|
84
|
-
export declare const createPeerDescriptor: (msg?: ConnectivityResponse,
|
|
88
|
+
export declare const createPeerDescriptor: (msg?: ConnectivityResponse, peerId?: string, nodeName?: string) => PeerDescriptor;
|
|
85
89
|
export declare class DhtNode extends EventEmitter<Events> implements ITransport {
|
|
86
90
|
private readonly config;
|
|
87
91
|
private bucket?;
|
|
@@ -126,7 +130,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
126
130
|
private connectToEntryPoint;
|
|
127
131
|
removeContact(contact: PeerDescriptor, removeFromOpenInternetPeers?: boolean): void;
|
|
128
132
|
send(msg: Message, _doNotConnect?: boolean): Promise<void>;
|
|
129
|
-
joinDht(entryPointDescriptors: PeerDescriptor[], doRandomJoin?: boolean): Promise<void>;
|
|
133
|
+
joinDht(entryPointDescriptors: PeerDescriptor[], doRandomJoin?: boolean, retry?: boolean): Promise<void>;
|
|
130
134
|
startRecursiveFind(idToFind: Uint8Array, findMode?: FindMode, excludedPeer?: PeerDescriptor): Promise<RecursiveFindResult>;
|
|
131
135
|
storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>;
|
|
132
136
|
getDataFromDht(idToFind: Uint8Array): Promise<RecursiveFindResult>;
|
|
@@ -143,7 +147,6 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
143
147
|
getNumberOfLocalLockedConnections(): number;
|
|
144
148
|
getNumberOfRemoteLockedConnections(): number;
|
|
145
149
|
getNumberOfWeakLockedConnections(): number;
|
|
146
|
-
getNodeName(): string;
|
|
147
150
|
isJoinOngoing(): boolean;
|
|
148
151
|
hasJoined(): boolean;
|
|
149
152
|
getKnownEntryPoints(): PeerDescriptor[];
|
package/dist/src/dht/DhtNode.js
CHANGED
|
@@ -64,7 +64,7 @@ class DhtNodeConfig {
|
|
|
64
64
|
this.storeMaxTtl = 60000;
|
|
65
65
|
this.storeNumberOfCopies = 5;
|
|
66
66
|
this.metricsContext = new utils_1.MetricsContext();
|
|
67
|
-
this.
|
|
67
|
+
this.peerId = new exports_1.UUID().toHex();
|
|
68
68
|
// assign given non-undefined config vars over defaults
|
|
69
69
|
let k;
|
|
70
70
|
for (k in conf) {
|
|
@@ -77,17 +77,17 @@ class DhtNodeConfig {
|
|
|
77
77
|
}
|
|
78
78
|
exports.DhtNodeConfig = DhtNodeConfig;
|
|
79
79
|
const logger = new utils_1.Logger(module);
|
|
80
|
-
const createPeerDescriptor = (msg,
|
|
81
|
-
let
|
|
80
|
+
const createPeerDescriptor = (msg, peerId, nodeName) => {
|
|
81
|
+
let kademliaId;
|
|
82
82
|
if (msg) {
|
|
83
|
-
|
|
83
|
+
kademliaId = peerId ? (0, utils_1.hexToBinary)(peerId) : PeerID_1.PeerID.fromIp(msg.host).value;
|
|
84
84
|
}
|
|
85
85
|
else {
|
|
86
|
-
|
|
86
|
+
kademliaId = (0, utils_1.hexToBinary)(peerId);
|
|
87
87
|
}
|
|
88
|
-
const ret = { kademliaId:
|
|
88
|
+
const ret = { kademliaId, nodeName: nodeName ? nodeName : (0, utils_1.binaryToHex)(kademliaId), type: DhtRpc_1.NodeType.NODEJS };
|
|
89
89
|
if (msg && msg.websocket) {
|
|
90
|
-
ret.websocket = {
|
|
90
|
+
ret.websocket = { host: msg.websocket.host, port: msg.websocket.port, tls: msg.websocket.tls };
|
|
91
91
|
ret.openInternet = true;
|
|
92
92
|
}
|
|
93
93
|
return ret;
|
|
@@ -147,7 +147,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
147
147
|
this.ownPeerDescriptor = this.config.peerDescriptor;
|
|
148
148
|
}
|
|
149
149
|
else {
|
|
150
|
-
this.ownPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.
|
|
150
|
+
this.ownPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.peerId, this.config.nodeName);
|
|
151
151
|
}
|
|
152
152
|
return this.ownPeerDescriptor;
|
|
153
153
|
};
|
|
@@ -185,12 +185,13 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
185
185
|
webrtcDatachannelBufferThresholdHigh: this.config.webrtcDatachannelBufferThresholdHigh,
|
|
186
186
|
webrtcNewConnectionTimeout: this.config.webrtcNewConnectionTimeout,
|
|
187
187
|
webrtcPortRange: this.config.webrtcPortRange,
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
maxConnections: this.config.maxConnections,
|
|
189
|
+
tlsCertificate: this.config.tlsCertificate,
|
|
190
|
+
externalIp: this.config.externalIp
|
|
190
191
|
};
|
|
191
192
|
// If own PeerDescriptor is given in config, create a ConnectionManager with ws server
|
|
192
193
|
if (this.config.peerDescriptor?.websocket) {
|
|
193
|
-
connectionManagerConfig.websocketHost = this.config.peerDescriptor.websocket.
|
|
194
|
+
connectionManagerConfig.websocketHost = this.config.peerDescriptor.websocket.host;
|
|
194
195
|
connectionManagerConfig.websocketPortRange = {
|
|
195
196
|
min: this.config.peerDescriptor.websocket.port,
|
|
196
197
|
max: this.config.peerDescriptor.websocket.port
|
|
@@ -470,11 +471,11 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
470
471
|
const reachableThrough = this.peerDiscovery.isJoinOngoing() ? this.config.entryPoints || [] : [];
|
|
471
472
|
await this.router.send(msg, reachableThrough);
|
|
472
473
|
}
|
|
473
|
-
async joinDht(entryPointDescriptors, doRandomJoin) {
|
|
474
|
+
async joinDht(entryPointDescriptors, doRandomJoin, retry) {
|
|
474
475
|
if (!this.started) {
|
|
475
476
|
throw new Error('Cannot join DHT before calling start() on DhtNode');
|
|
476
477
|
}
|
|
477
|
-
await Promise.all(entryPointDescriptors.map((entryPoint) => this.peerDiscovery.joinDht(entryPoint, doRandomJoin)));
|
|
478
|
+
await Promise.all(entryPointDescriptors.map((entryPoint) => this.peerDiscovery.joinDht(entryPoint, doRandomJoin, retry)));
|
|
478
479
|
}
|
|
479
480
|
async startRecursiveFind(idToFind, findMode, excludedPeer) {
|
|
480
481
|
return this.recursiveFinder.startRecursiveFind(idToFind, findMode, excludedPeer);
|
|
@@ -527,14 +528,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
527
528
|
getNumberOfWeakLockedConnections() {
|
|
528
529
|
return this.connectionManager.getNumberOfWeakLockedConnections();
|
|
529
530
|
}
|
|
530
|
-
getNodeName() {
|
|
531
|
-
if (this.config.nodeName) {
|
|
532
|
-
return this.config.nodeName;
|
|
533
|
-
}
|
|
534
|
-
else {
|
|
535
|
-
return 'unnamed node';
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
531
|
isJoinOngoing() {
|
|
539
532
|
return this.peerDiscovery.isJoinOngoing();
|
|
540
533
|
}
|