@streamr/dht 100.2.4-beta.0 → 100.2.4

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 (151) hide show
  1. package/dist/package.json +8 -9
  2. package/dist/src/connection/ConnectionManager.d.ts +2 -1
  3. package/dist/src/connection/ConnectionManager.js +2 -10
  4. package/dist/src/connection/ConnectionManager.js.map +1 -1
  5. package/dist/src/connection/ConnectionsView.d.ts +7 -0
  6. package/dist/src/connection/ConnectionsView.js +3 -0
  7. package/dist/src/connection/ConnectionsView.js.map +1 -0
  8. package/dist/src/connection/ConnectorFacade.d.ts +2 -1
  9. package/dist/src/connection/ConnectorFacade.js +5 -4
  10. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  11. package/dist/src/connection/connectivityRequestHandler.d.ts +2 -1
  12. package/dist/src/connection/connectivityRequestHandler.js +12 -5
  13. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  14. package/dist/src/connection/{ManagedWebrtcConnection.d.ts → webrtc/ManagedWebrtcConnection.d.ts} +3 -3
  15. package/dist/src/connection/{ManagedWebrtcConnection.js → webrtc/ManagedWebrtcConnection.js} +2 -2
  16. package/dist/src/connection/webrtc/ManagedWebrtcConnection.js.map +1 -0
  17. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +3 -26
  18. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  19. package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
  20. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  21. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +1 -1
  22. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
  23. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  24. package/dist/src/connection/websocket/WebsocketConnector.d.ts +2 -0
  25. package/dist/src/connection/websocket/WebsocketConnector.js +21 -13
  26. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  27. package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +2 -1
  28. package/dist/src/connection/websocket/WebsocketServerConnection.js +4 -0
  29. package/dist/src/connection/websocket/WebsocketServerConnection.js.map +1 -1
  30. package/dist/src/dht/DhtNode.d.ts +14 -11
  31. package/dist/src/dht/DhtNode.js +74 -61
  32. package/dist/src/dht/DhtNode.js.map +1 -1
  33. package/dist/src/dht/DhtNodeRpcLocal.d.ts +3 -3
  34. package/dist/src/dht/DhtNodeRpcLocal.js +5 -2
  35. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  36. package/dist/src/dht/PeerManager.d.ts +14 -14
  37. package/dist/src/dht/PeerManager.js +51 -42
  38. package/dist/src/dht/PeerManager.js.map +1 -1
  39. package/dist/src/dht/contact/ContactList.d.ts +1 -2
  40. package/dist/src/dht/contact/ContactList.js +1 -3
  41. package/dist/src/dht/contact/ContactList.js.map +1 -1
  42. package/dist/src/dht/contact/RandomContactList.d.ts +1 -1
  43. package/dist/src/dht/contact/RandomContactList.js +7 -4
  44. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  45. package/dist/src/dht/contact/getClosestNodes.d.ts +6 -0
  46. package/dist/src/dht/contact/{getClosestContacts.js → getClosestNodes.js} +7 -6
  47. package/dist/src/dht/contact/getClosestNodes.js.map +1 -0
  48. package/dist/src/dht/discovery/DiscoverySession.d.ts +4 -0
  49. package/dist/src/dht/discovery/DiscoverySession.js +27 -21
  50. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  51. package/dist/src/dht/discovery/PeerDiscovery.d.ts +8 -5
  52. package/dist/src/dht/discovery/PeerDiscovery.js +34 -24
  53. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  54. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +4 -4
  55. package/dist/src/dht/discovery/RingDiscoverySession.js +10 -19
  56. package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -1
  57. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +2 -0
  58. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +3 -3
  59. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
  60. package/dist/src/dht/store/StoreManager.d.ts +5 -6
  61. package/dist/src/dht/store/StoreManager.js +21 -76
  62. package/dist/src/dht/store/StoreManager.js.map +1 -1
  63. package/dist/src/dht/store/StoreRpcLocal.d.ts +5 -2
  64. package/dist/src/dht/store/StoreRpcLocal.js +22 -5
  65. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  66. package/dist/src/exports.d.ts +2 -1
  67. package/dist/src/exports.js.map +1 -1
  68. package/dist/src/helpers/version.d.ts +1 -1
  69. package/dist/src/helpers/version.js +1 -1
  70. package/dist/src/proto/google/protobuf/any.d.ts +8 -5
  71. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  72. package/dist/src/proto/google/protobuf/empty.d.ts +0 -1
  73. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  74. package/dist/src/proto/google/protobuf/timestamp.d.ts +10 -1
  75. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  76. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +8 -0
  77. package/dist/src/proto/packages/dht/protos/DhtRpc.js +3 -1
  78. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  79. package/dist/src/transport/ITransport.d.ts +0 -4
  80. package/dist/src/transport/ITransport.js.map +1 -1
  81. package/karma.config.js +2 -2
  82. package/package.json +8 -9
  83. package/protos/DhtRpc.proto +2 -0
  84. package/src/connection/ConnectionManager.ts +4 -10
  85. package/src/connection/ConnectionsView.ts +8 -0
  86. package/src/connection/ConnectorFacade.ts +7 -5
  87. package/src/connection/connectivityRequestHandler.ts +18 -5
  88. package/src/connection/{ManagedWebrtcConnection.ts → webrtc/ManagedWebrtcConnection.ts} +4 -4
  89. package/src/connection/webrtc/NodeWebrtcConnection.ts +3 -3
  90. package/src/connection/webrtc/WebrtcConnector.ts +1 -1
  91. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +1 -1
  92. package/src/connection/websocket/WebsocketConnector.ts +26 -16
  93. package/src/connection/websocket/WebsocketServerConnection.ts +6 -1
  94. package/src/dht/DhtNode.ts +102 -74
  95. package/src/dht/DhtNodeRpcLocal.ts +12 -5
  96. package/src/dht/PeerManager.ts +58 -49
  97. package/src/dht/contact/ContactList.ts +1 -4
  98. package/src/dht/contact/RandomContactList.ts +7 -5
  99. package/src/dht/contact/{getClosestContacts.ts → getClosestNodes.ts} +8 -6
  100. package/src/dht/discovery/DiscoverySession.ts +34 -22
  101. package/src/dht/discovery/PeerDiscovery.ts +44 -30
  102. package/src/dht/discovery/RingDiscoverySession.ts +15 -29
  103. package/src/dht/recursive-operation/RecursiveOperationManager.ts +5 -3
  104. package/src/dht/store/StoreManager.ts +46 -84
  105. package/src/dht/store/StoreRpcLocal.ts +32 -9
  106. package/src/exports.ts +2 -1
  107. package/src/helpers/version.ts +1 -1
  108. package/src/proto/google/protobuf/any.ts +8 -5
  109. package/src/proto/google/protobuf/empty.ts +0 -1
  110. package/src/proto/google/protobuf/timestamp.ts +10 -1
  111. package/src/proto/packages/dht/protos/DhtRpc.ts +11 -1
  112. package/src/transport/ITransport.ts +0 -4
  113. package/test/benchmark/Find.test.ts +1 -1
  114. package/test/end-to-end/GeoIpLayer0.test.ts +55 -0
  115. package/test/end-to-end/Layer0-Layer1.test.ts +4 -4
  116. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +11 -5
  117. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +7 -1
  118. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +11 -2
  119. package/test/integration/ConnectionLocking.test.ts +1 -1
  120. package/test/integration/ConnectionManager.test.ts +3 -3
  121. package/test/integration/ConnectivityChecking.test.ts +2 -2
  122. package/test/integration/DhtNode.test.ts +5 -20
  123. package/test/integration/GeoIpConnectivityChecking.test.ts +71 -0
  124. package/test/integration/Layer1-scale.test.ts +6 -6
  125. package/test/integration/RouteMessage.test.ts +4 -0
  126. package/test/integration/ScaleDownDht.test.ts +1 -1
  127. package/test/integration/SimultaneousConnections.test.ts +2 -2
  128. package/test/integration/WebrtcConnectionManagement.test.ts +1 -1
  129. package/test/integration/WebsocketConnectionManagement.test.ts +1 -1
  130. package/test/integration/rpc-connections-over-webrpc.test.ts +1 -1
  131. package/test/unit/AutoCertifierClientFacade.test.ts +1 -1
  132. package/test/unit/DiscoverySession.test.ts +4 -2
  133. package/test/unit/PeerManager.test.ts +45 -51
  134. package/test/unit/RandomContactList.test.ts +10 -0
  135. package/test/unit/RecursiveOperationManager.test.ts +4 -2
  136. package/test/unit/StoreManager.test.ts +42 -34
  137. package/test/unit/StoreRpcLocal.test.ts +167 -0
  138. package/test/unit/WebsocketConnector.test.ts +1 -1
  139. package/test/unit/connectivityRequestHandler.test.ts +1 -1
  140. package/test/unit/getClosestNodes.test.ts +30 -0
  141. package/test/utils/FakeTransport.ts +4 -2
  142. package/test/utils/mock/MockConnectionsView.ts +18 -0
  143. package/test/utils/mock/{Transport.ts → MockTransport.ts} +0 -15
  144. package/test/utils/utils.ts +4 -1
  145. package/tsconfig.jest.json +2 -1
  146. package/tsconfig.node.json +2 -1
  147. package/dist/src/connection/ManagedWebrtcConnection.js.map +0 -1
  148. package/dist/src/dht/contact/getClosestContacts.d.ts +0 -7
  149. package/dist/src/dht/contact/getClosestContacts.js.map +0 -1
  150. package/test/unit/getClosestContacts.test.ts +0 -28
  151. /package/test/utils/mock/{Router.ts → MockRouter.ts} +0 -0
@@ -49,6 +49,7 @@ const connectivityRequestHandler_1 = require("../connectivityRequestHandler");
49
49
  const Err = __importStar(require("../../helpers/errors"));
50
50
  const identifiers_1 = require("../../identifiers");
51
51
  const version_1 = require("../../helpers/version");
52
+ const geoip_location_1 = require("@streamr/geoip-location");
52
53
  const logger = new utils_1.Logger(module);
53
54
  const connectivityMethodToWebsocketUrl = (ws, action) => {
54
55
  return (ws.tls ? 'wss://' : 'ws://') + ws.host + ':' + ws.port + ((action !== undefined) ? '?action=' + action : '');
@@ -59,6 +60,7 @@ class WebsocketConnector {
59
60
  static WEBSOCKET_CONNECTOR_SERVICE_ID = 'system/websocket-connector';
60
61
  rpcCommunicator;
61
62
  websocketServer;
63
+ geoIpLocator;
62
64
  ongoingConnectRequests = new Map();
63
65
  host;
64
66
  autoCertifierClient;
@@ -84,17 +86,9 @@ class WebsocketConnector {
84
86
  registerLocalRpcMethods(config) {
85
87
  const rpcLocal = new WebsocketConnectorRpcLocal_1.WebsocketConnectorRpcLocal({
86
88
  connect: (targetPeerDescriptor) => this.connect(targetPeerDescriptor),
87
- hasConnection: (nodeId) => {
88
- if (this.connectingConnections.has(nodeId)
89
- || this.connectingConnections.has(nodeId)
90
- || this.ongoingConnectRequests.has(nodeId)
91
- || config.hasConnection(nodeId)) {
92
- return true;
93
- }
94
- else {
95
- return false;
96
- }
97
- },
89
+ hasConnection: (nodeId) => (this.connectingConnections.has(nodeId)
90
+ || this.ongoingConnectRequests.has(nodeId)
91
+ || config.hasConnection(nodeId)),
98
92
  onNewConnection: (connection) => config.onNewConnection(connection),
99
93
  abortSignal: this.abortController.signal
100
94
  });
@@ -135,9 +129,9 @@ class WebsocketConnector {
135
129
  const serverSocket = connection;
136
130
  const query = querystring_1.default.parse(serverSocket.resourceURL.query ?? '');
137
131
  const action = query.action;
138
- logger.trace('WebSocket client connected', { action, remoteAddress: serverSocket.remoteIpAddress });
132
+ logger.trace('WebSocket client connected', { action, remoteAddress: serverSocket.getRemoteIpAddress() });
139
133
  if (action === 'connectivityRequest') {
140
- (0, connectivityRequestHandler_1.attachConnectivityRequestHandler)(serverSocket);
134
+ (0, connectivityRequestHandler_1.attachConnectivityRequestHandler)(serverSocket, this.geoIpLocator);
141
135
  }
142
136
  else if (action === 'connectivityProbe') {
143
137
  // no-op
@@ -156,6 +150,16 @@ class WebsocketConnector {
156
150
  }
157
151
  }
158
152
  });
153
+ if (this.config.geoIpDatabaseFolder) {
154
+ const geoIpLocator = new geoip_location_1.GeoIpLocator(this.config.geoIpDatabaseFolder);
155
+ try {
156
+ await geoIpLocator.start();
157
+ this.geoIpLocator = geoIpLocator;
158
+ }
159
+ catch (err) {
160
+ logger.error('Failed to start GeoIpLocator', { err });
161
+ }
162
+ }
159
163
  const port = await this.websocketServer.start();
160
164
  this.selectedPort = port;
161
165
  }
@@ -270,6 +274,9 @@ class WebsocketConnector {
270
274
  if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
271
275
  ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
272
276
  }
277
+ else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
278
+ ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
279
+ }
273
280
  else {
274
281
  ongoingConnectRequest.attachImplementation(websocketServerConnection);
275
282
  ongoingConnectRequest.acceptHandshake();
@@ -304,6 +311,7 @@ class WebsocketConnector {
304
311
  const attempts = Array.from(this.connectingConnections.values());
305
312
  await Promise.allSettled(attempts.map((conn) => conn.close(false)));
306
313
  await this.websocketServer?.stop();
314
+ await this.geoIpLocator?.stop();
307
315
  }
308
316
  }
309
317
  exports.WebsocketConnector = WebsocketConnector;
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebsocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketConnector.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,11 @@ export declare class WebsocketServerConnection extends EventEmitter<ConnectionEv
7
7
  readonly connectionId: ConnectionID;
8
8
  readonly connectionType = ConnectionType.WEBSOCKET_SERVER;
9
9
  readonly resourceURL: Url;
10
- readonly remoteIpAddress: string;
10
+ private readonly remoteIpAddress;
11
11
  private socket?;
12
12
  private stopped;
13
13
  constructor(socket: WebSocket, resourceURL: Url, remoteAddress: string);
14
+ getRemoteIpAddress(): string;
14
15
  private onMessage;
15
16
  private onClose;
16
17
  private onError;
@@ -30,6 +30,10 @@ class WebsocketServerConnection extends eventemitter3_1.default {
30
30
  socket.on('error', this.onError);
31
31
  this.socket = socket;
32
32
  }
33
+ // use a getter to make it possible to mock the value in tests
34
+ getRemoteIpAddress() {
35
+ return this.remoteIpAddress;
36
+ }
33
37
  onMessage(message, isBinary) {
34
38
  if (!isBinary) {
35
39
  logger.trace('Received string Message');
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketServerConnection.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServerConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebsocketServerConnection.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServerConnection.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,23 @@
1
1
  import { MetricsContext } from '@streamr/utils';
2
2
  import { EventEmitter } from 'eventemitter3';
3
3
  import { ConnectionLocker, PortRange, TlsCertificate } from '../connection/ConnectionManager';
4
+ import { ConnectionsView } from '../connection/ConnectionsView';
4
5
  import { IceServer } from '../connection/webrtc/WebrtcConnector';
5
6
  import { DhtAddress } from '../identifiers';
6
7
  import { Any } from '../proto/google/protobuf/any';
7
8
  import { DataEntry, Message, PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
8
9
  import { ITransport, TransportEvents } from '../transport/ITransport';
9
10
  import { ServiceID } from '../types/ServiceID';
10
- import { Router } from './routing/Router';
11
- import { RingIdRaw } from './contact/ringIdentifiers';
12
11
  import { RingContacts } from './contact/RingContactList';
12
+ import { RingIdRaw } from './contact/ringIdentifiers';
13
13
  export interface DhtNodeEvents {
14
- closestContactAdded: (peerDescriptor: PeerDescriptor) => void;
15
- closestContactRemoved: (peerDescriptor: PeerDescriptor) => void;
14
+ nearbyContactAdded: (peerDescriptor: PeerDescriptor) => void;
15
+ nearbyContactRemoved: (peerDescriptor: PeerDescriptor) => void;
16
16
  randomContactAdded: (peerDescriptor: PeerDescriptor) => void;
17
17
  randomContactRemoved: (peerDescriptor: PeerDescriptor) => void;
18
18
  ringContactAdded: (peerDescriptor: PeerDescriptor) => void;
19
19
  ringContactRemoved: (peerDescriptor: PeerDescriptor) => void;
20
+ manualRejoinRequired: () => void;
20
21
  }
21
22
  export interface DhtNodeOptions {
22
23
  serviceId?: ServiceID;
@@ -31,8 +32,10 @@ export interface DhtNodeOptions {
31
32
  storeMaxTtl?: number;
32
33
  networkConnectivityTimeout?: number;
33
34
  storageRedundancyFactor?: number;
34
- region?: number;
35
+ periodicallyPingNeighbors?: boolean;
36
+ periodicallyPingRingContacts?: boolean;
35
37
  transport?: ITransport;
38
+ connectionsView?: ConnectionsView;
36
39
  connectionLocker?: ConnectionLocker;
37
40
  peerDescriptor?: PeerDescriptor;
38
41
  entryPoints?: PeerDescriptor[];
@@ -40,6 +43,7 @@ export interface DhtNodeOptions {
40
43
  websocketPortRange?: PortRange;
41
44
  websocketServerEnableTls?: boolean;
42
45
  nodeId?: DhtAddress;
46
+ region?: number;
43
47
  rpcRequestTimeout?: number;
44
48
  iceServers?: IceServer[];
45
49
  webrtcAllowPrivateAddresses?: boolean;
@@ -53,6 +57,7 @@ export interface DhtNodeOptions {
53
57
  externalIp?: string;
54
58
  autoCertifierUrl?: string;
55
59
  autoCertifierConfigFile?: string;
60
+ geoIpDatabaseFolder?: string;
56
61
  }
57
62
  export type Events = TransportEvents & DhtNodeEvents;
58
63
  export declare class DhtNode extends EventEmitter<Events> implements ITransport {
@@ -60,14 +65,14 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
60
65
  private rpcCommunicator?;
61
66
  private transport?;
62
67
  private localPeerDescriptor?;
63
- router?: Router;
68
+ private router?;
64
69
  private storeManager?;
65
70
  private localDataStore;
66
71
  private recursiveOperationManager?;
67
72
  private peerDiscovery?;
68
73
  private peerManager?;
74
+ private connectionsView?;
69
75
  connectionLocker?: ConnectionLocker;
70
- private region?;
71
76
  private started;
72
77
  private abortController;
73
78
  constructor(conf: DhtNodeOptions);
@@ -79,7 +84,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
79
84
  private handleMessageFromRouter;
80
85
  private generatePeerDescriptorCallBack;
81
86
  getClosestContacts(limit?: number): PeerDescriptor[];
82
- getRandomContacts(): PeerDescriptor[];
87
+ getRandomContacts(limit?: number): PeerDescriptor[];
83
88
  getRingContacts(): RingContacts;
84
89
  getClosestRingContactsTo(ringIdRaw: RingIdRaw, limit?: number): RingContacts;
85
90
  getNodeId(): DhtAddress;
@@ -98,9 +103,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
98
103
  getTransport(): ITransport;
99
104
  getLocalPeerDescriptor(): PeerDescriptor;
100
105
  getNeighbors(): PeerDescriptor[];
101
- getConnections(): PeerDescriptor[];
102
- getConnectionCount(): number;
103
- hasConnection(nodeId: DhtAddress): boolean;
106
+ getConnectionsView(): ConnectionsView;
104
107
  getLocalLockedConnectionCount(): number;
105
108
  getRemoteLockedConnectionCount(): number;
106
109
  getWeakLockedConnectionCount(): number;
@@ -7,6 +7,7 @@ const lodash_1 = require("lodash");
7
7
  const ConnectionManager_1 = require("../connection/ConnectionManager");
8
8
  const ConnectorFacade_1 = require("../connection/ConnectorFacade");
9
9
  const isBrowserEnvironment_1 = require("../helpers/browser/isBrowserEnvironment");
10
+ const createPeerDescriptor_1 = require("../helpers/createPeerDescriptor");
10
11
  const identifiers_1 = require("../identifiers");
11
12
  const DhtRpc_1 = require("../proto/packages/dht/protos/DhtRpc");
12
13
  const DhtRpc_client_1 = require("../proto/packages/dht/protos/DhtRpc.client");
@@ -22,9 +23,9 @@ const Router_1 = require("./routing/Router");
22
23
  const LocalDataStore_1 = require("./store/LocalDataStore");
23
24
  const StoreManager_1 = require("./store/StoreManager");
24
25
  const StoreRpcRemote_1 = require("./store/StoreRpcRemote");
25
- const createPeerDescriptor_1 = require("../helpers/createPeerDescriptor");
26
26
  const cdn_location_1 = require("@streamr/cdn-location");
27
27
  const logger = new utils_1.Logger(module);
28
+ const PERIODICAL_PING_INTERVAL = 60 * 1000;
28
29
  class DhtNode extends eventemitter3_1.EventEmitter {
29
30
  config;
30
31
  rpcCommunicator;
@@ -36,8 +37,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
36
37
  recursiveOperationManager;
37
38
  peerDiscovery;
38
39
  peerManager;
40
+ connectionsView;
39
41
  connectionLocker;
40
- region;
41
42
  started = false;
42
43
  abortController = new AbortController();
43
44
  constructor(conf) {
@@ -54,7 +55,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
54
55
  storeHighestTtl: 60000,
55
56
  storeMaxTtl: 60000,
56
57
  networkConnectivityTimeout: 10000,
57
- storageRedundancyFactor: 5,
58
+ storageRedundancyFactor: 5, // TODO validate that this is > 1 (as each node should replicate the data to other node)
58
59
  metricsContext: new utils_1.MetricsContext()
59
60
  }, conf);
60
61
  this.validateConfig();
@@ -76,6 +77,9 @@ class DhtNode extends eventemitter3_1.EventEmitter {
76
77
  throw new Error(`Invalid peerDescriptor, the length of the nodeId should be ${identifiers_1.KADEMLIA_ID_LENGTH_IN_BYTES} bytes`);
77
78
  }
78
79
  }
80
+ if (this.config.transport !== undefined && this.config.connectionsView === undefined) {
81
+ throw new Error('connectionsView is required when transport is given');
82
+ }
79
83
  }
80
84
  async start() {
81
85
  if (this.started || this.abortController.signal.aborted) {
@@ -89,17 +93,10 @@ class DhtNode extends eventemitter3_1.EventEmitter {
89
93
  this.config.peerDescriptor.websocket = undefined;
90
94
  }
91
95
  }
92
- if (this.region !== undefined) {
93
- this.region = this.config.region;
94
- }
95
- else if (this.config.peerDescriptor?.region !== undefined) {
96
- this.region = this.config.peerDescriptor.region;
97
- }
98
- else {
99
- this.region = await (0, cdn_location_1.getLocalRegion)();
100
- }
96
+ // If transport is given, do not create a ConnectionManager
101
97
  if (this.config.transport) {
102
98
  this.transport = this.config.transport;
99
+ this.connectionsView = this.config.connectionsView;
103
100
  this.connectionLocker = this.config.connectionLocker;
104
101
  this.localPeerDescriptor = this.transport.getLocalPeerDescriptor();
105
102
  }
@@ -119,7 +116,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
119
116
  externalIp: this.config.externalIp,
120
117
  autoCertifierUrl: this.config.autoCertifierUrl,
121
118
  autoCertifierConfigFile: this.config.autoCertifierConfigFile,
122
- createLocalPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse),
119
+ geoIpDatabaseFolder: this.config.geoIpDatabaseFolder,
120
+ createLocalPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse)
123
121
  };
124
122
  // If own PeerDescriptor is given in config, create a ConnectionManager with ws server
125
123
  if (this.config.peerDescriptor?.websocket) {
@@ -140,6 +138,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
140
138
  metricsContext: this.config.metricsContext
141
139
  });
142
140
  await connectionManager.start();
141
+ this.connectionsView = connectionManager;
143
142
  this.connectionLocker = connectionManager;
144
143
  this.transport = connectionManager;
145
144
  }
@@ -153,18 +152,21 @@ class DhtNode extends eventemitter3_1.EventEmitter {
153
152
  serviceId: this.config.serviceId,
154
153
  parallelism: this.config.joinParallelism,
155
154
  connectionLocker: this.connectionLocker,
156
- peerManager: this.peerManager
155
+ peerManager: this.peerManager,
156
+ abortSignal: this.abortController.signal,
157
+ createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
157
158
  });
158
159
  this.router = new Router_1.Router({
159
160
  rpcCommunicator: this.rpcCommunicator,
160
161
  localPeerDescriptor: this.localPeerDescriptor,
161
162
  handleMessage: (message) => this.handleMessageFromRouter(message),
162
- getConnections: () => this.getConnections()
163
+ getConnections: () => this.connectionsView.getConnections()
163
164
  });
164
165
  this.recursiveOperationManager = new RecursiveOperationManager_1.RecursiveOperationManager({
165
166
  rpcCommunicator: this.rpcCommunicator,
166
167
  router: this.router,
167
168
  sessionTransport: this,
169
+ connectionsView: this.connectionsView,
168
170
  localPeerDescriptor: this.localPeerDescriptor,
169
171
  serviceId: this.config.serviceId,
170
172
  localDataStore: this.localDataStore,
@@ -179,17 +181,28 @@ class DhtNode extends eventemitter3_1.EventEmitter {
179
181
  highestTtl: this.config.storeHighestTtl,
180
182
  redundancyFactor: this.config.storageRedundancyFactor,
181
183
  localDataStore: this.localDataStore,
182
- getClosestNeighborsTo: (key, n) => {
183
- return this.peerManager.getClosestNeighborsTo(key, n).map((n) => n.getPeerDescriptor());
184
- },
184
+ getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
185
185
  createRpcRemote: (contact) => {
186
186
  return new StoreRpcRemote_1.StoreRpcRemote(this.localPeerDescriptor, contact, this.rpcCommunicator, DhtRpc_client_1.StoreRpcClient, this.config.rpcRequestTimeout);
187
187
  }
188
188
  });
189
- this.on('closestContactAdded', (peerDescriptor) => {
189
+ this.on('nearbyContactAdded', (peerDescriptor) => {
190
190
  this.storeManager.onContactAdded(peerDescriptor);
191
191
  });
192
192
  this.bindRpcLocalMethods();
193
+ const pruneTargets = [];
194
+ if (this.config.periodicallyPingNeighbors === true) {
195
+ pruneTargets.push(() => this.peerManager.getNeighbors().map((node) => this.createDhtNodeRpcRemote(node.getPeerDescriptor())));
196
+ }
197
+ if (this.config.periodicallyPingRingContacts === true) {
198
+ pruneTargets.push(() => this.peerManager.getRingContacts().getAllContacts());
199
+ }
200
+ for (const pruneTarget of pruneTargets) {
201
+ await (0, utils_1.scheduleAtInterval)(async () => {
202
+ const nodes = pruneTarget();
203
+ await this.peerManager.pruneOfflineNodes(nodes);
204
+ }, PERIODICAL_PING_INTERVAL, false, this.abortController.signal);
205
+ }
193
206
  }
194
207
  initPeerManager() {
195
208
  this.peerManager = new PeerManager_1.PeerManager({
@@ -200,12 +213,12 @@ class DhtNode extends eventemitter3_1.EventEmitter {
200
213
  connectionLocker: this.connectionLocker,
201
214
  lockId: this.config.serviceId,
202
215
  createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
203
- hasConnection: (nodeId) => this.transport.hasConnection(nodeId)
216
+ hasConnection: (nodeId) => this.connectionsView.hasConnection(nodeId)
204
217
  });
205
- this.peerManager.on('closestContactRemoved', (peerDescriptor) => {
206
- this.emit('closestContactRemoved', peerDescriptor);
218
+ this.peerManager.on('nearbyContactRemoved', (peerDescriptor) => {
219
+ this.emit('nearbyContactRemoved', peerDescriptor);
207
220
  });
208
- this.peerManager.on('closestContactAdded', (peerDescriptor) => this.emit('closestContactAdded', peerDescriptor));
221
+ this.peerManager.on('nearbyContactAdded', (peerDescriptor) => this.emit('nearbyContactAdded', peerDescriptor));
209
222
  this.peerManager.on('randomContactRemoved', (peerDescriptor) => this.emit('randomContactRemoved', peerDescriptor));
210
223
  this.peerManager.on('randomContactAdded', (peerDescriptor) => this.emit('randomContactAdded', peerDescriptor));
211
224
  this.peerManager.on('ringContactRemoved', (peerDescriptor) => {
@@ -215,15 +228,18 @@ class DhtNode extends eventemitter3_1.EventEmitter {
215
228
  this.emit('ringContactAdded', peerDescriptor);
216
229
  });
217
230
  this.peerManager.on('kBucketEmpty', () => {
218
- if (!this.peerDiscovery.isJoinOngoing()
219
- && this.config.entryPoints
220
- && this.config.entryPoints.length > 0) {
221
- setImmediate(async () => {
222
- const contactedPeers = new Set();
223
- const distantJoinContactPeers = new Set();
224
- // TODO should we catch possible promise rejection?
225
- await Promise.all(this.config.entryPoints.map((entryPoint) => this.peerDiscovery.rejoinDht(entryPoint, contactedPeers, distantJoinContactPeers)));
226
- });
231
+ if (!this.peerDiscovery.isJoinOngoing()) {
232
+ if (this.config.entryPoints && this.config.entryPoints.length > 0) {
233
+ setImmediate(async () => {
234
+ const contactedPeers = new Set();
235
+ const distantJoinContactPeers = new Set();
236
+ // TODO should we catch possible promise rejection?
237
+ await Promise.all(this.config.entryPoints.map((entryPoint) => this.peerDiscovery.rejoinDht(entryPoint, contactedPeers, distantJoinContactPeers)));
238
+ });
239
+ }
240
+ else {
241
+ this.emit('manualRejoinRequired');
242
+ }
227
243
  }
228
244
  });
229
245
  this.transport.on('connected', (peerDescriptor) => {
@@ -251,10 +267,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
251
267
  }
252
268
  const dhtNodeRpcLocal = new DhtNodeRpcLocal_1.DhtNodeRpcLocal({
253
269
  peerDiscoveryQueryBatchSize: this.config.peerDiscoveryQueryBatchSize,
254
- getClosestNeighborsTo: (nodeId, limit) => {
255
- return this.peerManager.getClosestNeighborsTo(nodeId, limit)
256
- .map((dhtPeer) => dhtPeer.getPeerDescriptor());
257
- },
270
+ getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
258
271
  getClosestRingContactsTo: (ringIdRaw, limit) => {
259
272
  return this.getClosestRingContactsTo(ringIdRaw, limit);
260
273
  },
@@ -289,23 +302,37 @@ class DhtNode extends eventemitter3_1.EventEmitter {
289
302
  this.emit('message', message);
290
303
  }
291
304
  }
292
- generatePeerDescriptorCallBack(connectivityResponse) {
305
+ async generatePeerDescriptorCallBack(connectivityResponse) {
293
306
  if (this.config.peerDescriptor !== undefined) {
294
307
  this.localPeerDescriptor = this.config.peerDescriptor;
295
308
  }
296
309
  else {
297
- this.localPeerDescriptor = (0, createPeerDescriptor_1.createPeerDescriptor)(connectivityResponse, this.region, this.config.nodeId);
310
+ let region = undefined;
311
+ if (this.config.region !== undefined) {
312
+ region = this.config.region;
313
+ logger.debug(`Using region ${region} from config when generating local PeerDescriptor`);
314
+ }
315
+ else if (connectivityResponse.latitude !== undefined && connectivityResponse.longitude !== undefined) {
316
+ region = (0, cdn_location_1.getLocalRegionByCoordinates)(connectivityResponse.latitude, connectivityResponse.longitude);
317
+ logger.debug(`Using region ${region} from GeoIP when generating local PeerDescriptor`);
318
+ }
319
+ else {
320
+ // as a fallback get the region from the CDN
321
+ // and if it's not available, use a random region
322
+ region = await (0, cdn_location_1.getLocalRegionWithCache)();
323
+ logger.debug(`Using region ${region} from CDN when generating local PeerDescriptor`);
324
+ }
325
+ this.localPeerDescriptor = (0, createPeerDescriptor_1.createPeerDescriptor)(connectivityResponse, region, this.config.nodeId);
298
326
  }
299
327
  return this.localPeerDescriptor;
300
328
  }
301
329
  getClosestContacts(limit) {
302
- return this.peerManager.getClosestContacts()
330
+ return this.peerManager.getNearbyContacts()
303
331
  .getClosestContacts(limit)
304
332
  .map((peer) => peer.getPeerDescriptor());
305
333
  }
306
- // TODO remove defaultContactQueryLimit parameter from RandomContactList#getContacts and use explicit value here?
307
- getRandomContacts() {
308
- return this.peerManager.getRandomContacts().getContacts().map((c) => c.getPeerDescriptor());
334
+ getRandomContacts(limit) {
335
+ return this.peerManager.getRandomContacts().getContacts(limit).map((c) => c.getPeerDescriptor());
309
336
  }
310
337
  getRingContacts() {
311
338
  const contacts = this.peerManager.getRingContacts().getClosestContacts();
@@ -341,7 +368,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
341
368
  this.router.send(msg, reachableThrough);
342
369
  }
343
370
  getConnectedEntryPoints() {
344
- return this.config.entryPoints !== undefined ? this.config.entryPoints.filter((entryPoint) => this.transport.hasConnection((0, identifiers_1.getNodeIdFromPeerDescriptor)(entryPoint))) : [];
371
+ return this.config.entryPoints !== undefined ? this.config.entryPoints.filter((entryPoint) => this.connectionsView.hasConnection((0, identifiers_1.getNodeIdFromPeerDescriptor)(entryPoint))) : [];
345
372
  }
346
373
  async joinDht(entryPointDescriptors, doAdditionalDistantPeerDiscovery, retry) {
347
374
  if (!this.started) {
@@ -394,16 +421,10 @@ class DhtNode extends eventemitter3_1.EventEmitter {
394
421
  return this.localPeerDescriptor;
395
422
  }
396
423
  getNeighbors() {
397
- return this.started ? this.peerManager.getNeighbors() : [];
398
- }
399
- getConnections() {
400
- return this.transport.getConnections();
401
- }
402
- getConnectionCount() {
403
- return this.transport.getConnectionCount();
424
+ return this.started ? this.peerManager.getNeighbors().map((remote) => remote.getPeerDescriptor()) : [];
404
425
  }
405
- hasConnection(nodeId) {
406
- return this.transport.hasConnection(nodeId);
426
+ getConnectionsView() {
427
+ return this.connectionsView;
407
428
  }
408
429
  getLocalLockedConnectionCount() {
409
430
  return this.connectionLocker.getLocalLockedConnectionCount();
@@ -415,14 +436,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
415
436
  return this.connectionLocker.getWeakLockedConnectionCount();
416
437
  }
417
438
  async waitForNetworkConnectivity() {
418
- await (0, utils_1.waitForCondition)(() => {
419
- if (!this.peerManager) {
420
- return false;
421
- }
422
- else {
423
- return (this.getConnectionCount() > 0);
424
- }
425
- }, this.config.networkConnectivityTimeout, 100, this.abortController.signal);
439
+ await (0, utils_1.waitForCondition)(() => this.connectionsView.getConnectionCount() > 0, this.config.networkConnectivityTimeout, 100, this.abortController.signal);
426
440
  }
427
441
  hasJoined() {
428
442
  return this.peerDiscovery.isJoinCalled();
@@ -439,7 +453,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
439
453
  this.rpcCommunicator.stop();
440
454
  this.router.stop();
441
455
  this.recursiveOperationManager.stop();
442
- this.peerDiscovery.stop();
443
456
  if (this.config.transport === undefined) {
444
457
  // if the transport was not given in config, the instance was created in start() and
445
458
  // this component is responsible for stopping it