libp2p 0.39.5 → 0.40.0-030dbc8
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/README.md +14 -2
- package/dist/src/address-manager/index.d.ts +18 -2
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +19 -6
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/circuit/auto-relay.d.ts +2 -2
- package/dist/src/circuit/auto-relay.d.ts.map +1 -1
- package/dist/src/circuit/auto-relay.js +12 -12
- package/dist/src/circuit/auto-relay.js.map +1 -1
- package/dist/src/circuit/index.d.ts +13 -3
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +1 -1
- package/dist/src/circuit/index.js.map +1 -1
- package/dist/src/circuit/pb/index.d.ts.map +1 -1
- package/dist/src/circuit/pb/index.js +29 -34
- package/dist/src/circuit/pb/index.js.map +1 -1
- package/dist/src/circuit/transport.d.ts +22 -7
- package/dist/src/circuit/transport.d.ts.map +1 -1
- package/dist/src/circuit/transport.js +26 -17
- package/dist/src/circuit/transport.js.map +1 -1
- package/dist/src/components.d.ts +110 -0
- package/dist/src/components.d.ts.map +1 -0
- package/dist/src/components.js +199 -0
- package/dist/src/components.js.map +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +0 -11
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/auto-dialler.d.ts +9 -2
- package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dialler.js +6 -6
- package/dist/src/connection-manager/auto-dialler.js.map +1 -1
- package/dist/src/connection-manager/dialer/index.d.ts +12 -6
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/index.js +12 -17
- package/dist/src/connection-manager/dialer/index.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +41 -17
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +80 -81
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +7 -2
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +4 -4
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/content-routing/utils.d.ts +1 -1
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/errors.d.ts +2 -1
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/fetch/index.d.ts +7 -3
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +18 -6
- package/dist/src/fetch/index.js.map +1 -1
- package/dist/src/fetch/pb/proto.d.ts.map +1 -1
- package/dist/src/fetch/pb/proto.js +24 -35
- package/dist/src/fetch/pb/proto.js.map +1 -1
- package/dist/src/identify/index.d.ts +13 -3
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +41 -41
- package/dist/src/identify/index.js.map +1 -1
- package/dist/src/identify/pb/message.d.ts.map +1 -1
- package/dist/src/identify/pb/message.js +23 -34
- package/dist/src/identify/pb/message.js.map +1 -1
- package/dist/src/index.d.ts +13 -12
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/insecure/index.d.ts +2 -8
- package/dist/src/insecure/index.d.ts.map +1 -1
- package/dist/src/insecure/index.js +5 -3
- package/dist/src/insecure/index.js.map +1 -1
- package/dist/src/insecure/pb/proto.d.ts.map +1 -1
- package/dist/src/insecure/pb/proto.js +24 -29
- package/dist/src/insecure/pb/proto.js.map +1 -1
- package/dist/src/keychain/index.d.ts +6 -2
- package/dist/src/keychain/index.d.ts.map +1 -1
- package/dist/src/keychain/index.js +19 -19
- package/dist/src/keychain/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +1 -2
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +49 -73
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/nat-manager.d.ts +9 -2
- package/dist/src/nat-manager.d.ts.map +1 -1
- package/dist/src/nat-manager.js +3 -3
- package/dist/src/nat-manager.js.map +1 -1
- package/dist/src/peer-record-updater.d.ts +11 -2
- package/dist/src/peer-record-updater.d.ts.map +1 -1
- package/dist/src/peer-record-updater.js +10 -10
- package/dist/src/peer-record-updater.js.map +1 -1
- package/dist/src/peer-routing.d.ts +6 -2
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +4 -4
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/ping/index.d.ts +7 -3
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +3 -3
- package/dist/src/ping/index.js.map +1 -1
- package/dist/src/pnet/index.d.ts +2 -17
- package/dist/src/pnet/index.d.ts.map +1 -1
- package/dist/src/pnet/index.js +4 -1
- package/dist/src/pnet/index.js.map +1 -1
- package/dist/src/pubsub/dummy-pubsub.d.ts +2 -1
- package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -1
- package/dist/src/pubsub/dummy-pubsub.js +4 -0
- package/dist/src/pubsub/dummy-pubsub.js.map +1 -1
- package/dist/src/registrar.d.ts +9 -3
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +6 -6
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/transport-manager.d.ts +9 -3
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +5 -6
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +17 -5
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +55 -75
- package/dist/src/upgrader.js.map +1 -1
- package/package.json +39 -40
- package/src/address-manager/index.ts +34 -10
- package/src/circuit/README.md +6 -6
- package/src/circuit/auto-relay.ts +15 -15
- package/src/circuit/index.ts +16 -5
- package/src/circuit/pb/index.ts +29 -35
- package/src/circuit/transport.ts +49 -20
- package/src/components.ts +332 -0
- package/src/config.ts +0 -11
- package/src/connection-manager/auto-dialler.ts +17 -9
- package/src/connection-manager/dialer/index.ts +26 -25
- package/src/connection-manager/index.ts +136 -93
- package/src/content-routing/index.ts +13 -7
- package/src/errors.ts +2 -1
- package/src/fetch/index.ts +28 -10
- package/src/fetch/pb/proto.ts +24 -35
- package/src/identify/index.ts +57 -53
- package/src/identify/pb/message.ts +23 -35
- package/src/index.ts +12 -11
- package/src/insecure/index.ts +6 -3
- package/src/insecure/pb/proto.ts +24 -29
- package/src/keychain/index.ts +27 -22
- package/src/libp2p.ts +50 -79
- package/src/nat-manager.ts +14 -6
- package/src/peer-record-updater.ts +23 -13
- package/src/peer-routing.ts +12 -7
- package/src/ping/index.ts +12 -7
- package/src/pnet/index.ts +5 -1
- package/src/pubsub/dummy-pubsub.ts +3 -1
- package/src/registrar.ts +17 -10
- package/src/transport-manager.ts +16 -10
- package/src/upgrader.ts +78 -87
- package/src/version.ts +1 -1
- package/dist/src/connection-manager/dialer/auto-dialer.d.ts +0 -16
- package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +0 -1
- package/dist/src/connection-manager/dialer/auto-dialer.js +0 -43
- package/dist/src/connection-manager/dialer/auto-dialer.js.map +0 -1
- package/dist/src/metrics/index.d.ts +0 -93
- package/dist/src/metrics/index.d.ts.map +0 -1
- package/dist/src/metrics/index.js +0 -234
- package/dist/src/metrics/index.js.map +0 -1
- package/dist/src/metrics/moving-average.d.ts +0 -14
- package/dist/src/metrics/moving-average.d.ts.map +0 -1
- package/dist/src/metrics/moving-average.js +0 -40
- package/dist/src/metrics/moving-average.js.map +0 -1
- package/dist/src/metrics/stats.d.ts +0 -87
- package/dist/src/metrics/stats.d.ts.map +0 -1
- package/dist/src/metrics/stats.js +0 -183
- package/dist/src/metrics/stats.js.map +0 -1
- package/src/connection-manager/dialer/auto-dialer.ts +0 -65
- package/src/metrics/index.ts +0 -311
- package/src/metrics/moving-average.ts +0 -53
- package/src/metrics/stats.ts +0 -238
package/dist/src/upgrader.js
CHANGED
|
@@ -2,13 +2,10 @@ import { logger } from '@libp2p/logger';
|
|
|
2
2
|
import errCode from 'err-code';
|
|
3
3
|
import * as mss from '@libp2p/multistream-select';
|
|
4
4
|
import { pipe } from 'it-pipe';
|
|
5
|
-
// @ts-expect-error mutable-proxy does not export types
|
|
6
|
-
import mutableProxy from 'mutable-proxy';
|
|
7
5
|
import { codes } from './errors.js';
|
|
8
6
|
import { createConnection } from '@libp2p/connection';
|
|
9
7
|
import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
|
|
10
8
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
11
|
-
import { isInitializable } from '@libp2p/components';
|
|
12
9
|
import { DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS } from './registrar.js';
|
|
13
10
|
import { TimeoutController } from 'timeout-abort-controller';
|
|
14
11
|
import { abortableDuplex } from 'abortable-iterator';
|
|
@@ -65,14 +62,15 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
65
62
|
* Upgrades an inbound connection
|
|
66
63
|
*/
|
|
67
64
|
async upgradeInbound(maConn) {
|
|
65
|
+
const accept = await this.components.connectionManager.acceptIncomingConnection(maConn);
|
|
66
|
+
if (!accept) {
|
|
67
|
+
throw errCode(new Error('connection denied'), codes.ERR_CONNECTION_DENIED);
|
|
68
|
+
}
|
|
68
69
|
let encryptedConn;
|
|
69
70
|
let remotePeer;
|
|
70
71
|
let upgradedConn;
|
|
71
72
|
let muxerFactory;
|
|
72
73
|
let cryptoProtocol;
|
|
73
|
-
let setPeer;
|
|
74
|
-
let proxyPeer;
|
|
75
|
-
const metrics = this.components.getMetrics();
|
|
76
74
|
const timeoutController = new TimeoutController(this.inboundUpgradeTimeout);
|
|
77
75
|
try {
|
|
78
76
|
// fails on node < 15.4
|
|
@@ -83,19 +81,14 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
83
81
|
const abortableStream = abortableDuplex(maConn, timeoutController.signal);
|
|
84
82
|
maConn.source = abortableStream.source;
|
|
85
83
|
maConn.sink = abortableStream.sink;
|
|
86
|
-
if (await this.components.
|
|
84
|
+
if (await this.components.connectionGater.denyInboundConnection(maConn)) {
|
|
87
85
|
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
88
86
|
}
|
|
89
|
-
|
|
90
|
-
({ setTarget: setPeer, proxy: proxyPeer } = mutableProxy());
|
|
91
|
-
const idString = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;
|
|
92
|
-
setPeer({ toString: () => idString });
|
|
93
|
-
metrics.trackStream({ stream: maConn, remotePeer: proxyPeer });
|
|
94
|
-
}
|
|
87
|
+
this.components.metrics?.trackMultiaddrConnection(maConn);
|
|
95
88
|
log('starting the inbound connection upgrade');
|
|
96
89
|
// Protect
|
|
97
90
|
let protectedConn = maConn;
|
|
98
|
-
const protector = this.components.
|
|
91
|
+
const protector = this.components.connectionProtector;
|
|
99
92
|
if (protector != null) {
|
|
100
93
|
log('protecting the inbound connection');
|
|
101
94
|
protectedConn = await protector.protect(maConn);
|
|
@@ -107,7 +100,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
107
100
|
remotePeer,
|
|
108
101
|
protocol: cryptoProtocol
|
|
109
102
|
} = await this._encryptInbound(protectedConn));
|
|
110
|
-
if (await this.components.
|
|
103
|
+
if (await this.components.connectionGater.denyInboundEncryptedConnection(remotePeer, {
|
|
111
104
|
...protectedConn,
|
|
112
105
|
...encryptedConn
|
|
113
106
|
})) {
|
|
@@ -128,19 +121,14 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
128
121
|
}
|
|
129
122
|
catch (err) {
|
|
130
123
|
log.error('Failed to upgrade inbound connection', err);
|
|
131
|
-
await maConn.close(err);
|
|
132
124
|
throw err;
|
|
133
125
|
}
|
|
134
|
-
if (await this.components.
|
|
126
|
+
if (await this.components.connectionGater.denyInboundUpgradedConnection(remotePeer, {
|
|
135
127
|
...protectedConn,
|
|
136
128
|
...encryptedConn
|
|
137
129
|
})) {
|
|
138
130
|
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
139
131
|
}
|
|
140
|
-
if (metrics != null) {
|
|
141
|
-
metrics.updatePlaceholder(proxyPeer, remotePeer);
|
|
142
|
-
setPeer(remotePeer);
|
|
143
|
-
}
|
|
144
132
|
log('Successfully upgraded inbound connection');
|
|
145
133
|
return this._createConnection({
|
|
146
134
|
cryptoProtocol,
|
|
@@ -152,19 +140,20 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
152
140
|
});
|
|
153
141
|
}
|
|
154
142
|
finally {
|
|
143
|
+
this.components.connectionManager.afterUpgradeInbound();
|
|
155
144
|
timeoutController.clear();
|
|
156
145
|
}
|
|
157
146
|
}
|
|
158
147
|
/**
|
|
159
148
|
* Upgrades an outbound connection
|
|
160
149
|
*/
|
|
161
|
-
async upgradeOutbound(maConn) {
|
|
150
|
+
async upgradeOutbound(maConn, opts) {
|
|
162
151
|
const idStr = maConn.remoteAddr.getPeerId();
|
|
163
152
|
if (idStr == null) {
|
|
164
153
|
throw errCode(new Error('outbound connection must have a peer id'), codes.ERR_INVALID_MULTIADDR);
|
|
165
154
|
}
|
|
166
155
|
const remotePeerId = peerIdFromString(idStr);
|
|
167
|
-
if (await this.components.
|
|
156
|
+
if (await this.components.connectionGater.denyOutboundConnection(remotePeerId, maConn)) {
|
|
168
157
|
throw errCode(new Error('The multiaddr connection is blocked by connectionGater.denyOutboundConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
169
158
|
}
|
|
170
159
|
let encryptedConn;
|
|
@@ -172,37 +161,44 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
172
161
|
let upgradedConn;
|
|
173
162
|
let cryptoProtocol;
|
|
174
163
|
let muxerFactory;
|
|
175
|
-
|
|
176
|
-
let proxyPeer;
|
|
177
|
-
const metrics = this.components.getMetrics();
|
|
178
|
-
if (metrics != null) {
|
|
179
|
-
({ setTarget: setPeer, proxy: proxyPeer } = mutableProxy());
|
|
180
|
-
const idString = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;
|
|
181
|
-
setPeer({ toB58String: () => idString });
|
|
182
|
-
metrics.trackStream({ stream: maConn, remotePeer: proxyPeer });
|
|
183
|
-
}
|
|
164
|
+
this.components.metrics?.trackMultiaddrConnection(maConn);
|
|
184
165
|
log('Starting the outbound connection upgrade');
|
|
166
|
+
// If the transport natively supports encryption, skip connection
|
|
167
|
+
// protector and encryption
|
|
185
168
|
// Protect
|
|
186
169
|
let protectedConn = maConn;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
170
|
+
if (opts?.skipProtection !== true) {
|
|
171
|
+
const protector = this.components.connectionProtector;
|
|
172
|
+
if (protector != null) {
|
|
173
|
+
protectedConn = await protector.protect(maConn);
|
|
174
|
+
}
|
|
190
175
|
}
|
|
191
176
|
try {
|
|
192
177
|
// Encrypt the connection
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
178
|
+
encryptedConn = protectedConn;
|
|
179
|
+
if (opts?.skipEncryption !== true) {
|
|
180
|
+
({
|
|
181
|
+
conn: encryptedConn,
|
|
182
|
+
remotePeer,
|
|
183
|
+
protocol: cryptoProtocol
|
|
184
|
+
} = await this._encryptOutbound(protectedConn, remotePeerId));
|
|
185
|
+
if (await this.components.connectionGater.denyOutboundEncryptedConnection(remotePeer, {
|
|
186
|
+
...protectedConn,
|
|
187
|
+
...encryptedConn
|
|
188
|
+
})) {
|
|
189
|
+
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
cryptoProtocol = 'native';
|
|
194
|
+
remotePeer = remotePeerId;
|
|
195
|
+
}
|
|
196
|
+
upgradedConn = encryptedConn;
|
|
197
|
+
if (opts?.muxerFactory != null) {
|
|
198
|
+
muxerFactory = opts.muxerFactory;
|
|
203
199
|
}
|
|
204
|
-
|
|
205
|
-
|
|
200
|
+
else if (this.muxers.size > 0) {
|
|
201
|
+
// Multiplex the connection
|
|
206
202
|
const multiplexed = await this._multiplexOutbound({
|
|
207
203
|
...protectedConn,
|
|
208
204
|
...encryptedConn
|
|
@@ -210,25 +206,18 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
210
206
|
muxerFactory = multiplexed.muxerFactory;
|
|
211
207
|
upgradedConn = multiplexed.stream;
|
|
212
208
|
}
|
|
213
|
-
else {
|
|
214
|
-
upgradedConn = encryptedConn;
|
|
215
|
-
}
|
|
216
209
|
}
|
|
217
210
|
catch (err) {
|
|
218
211
|
log.error('Failed to upgrade outbound connection', err);
|
|
219
212
|
await maConn.close(err);
|
|
220
213
|
throw err;
|
|
221
214
|
}
|
|
222
|
-
if (await this.components.
|
|
215
|
+
if (await this.components.connectionGater.denyOutboundUpgradedConnection(remotePeer, {
|
|
223
216
|
...protectedConn,
|
|
224
217
|
...encryptedConn
|
|
225
218
|
})) {
|
|
226
219
|
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
227
220
|
}
|
|
228
|
-
if (metrics != null) {
|
|
229
|
-
metrics.updatePlaceholder(proxyPeer, remotePeer);
|
|
230
|
-
setPeer(remotePeer);
|
|
231
|
-
}
|
|
232
221
|
log('Successfully upgraded outbound connection');
|
|
233
222
|
return this._createConnection({
|
|
234
223
|
cryptoProtocol,
|
|
@@ -258,17 +247,13 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
258
247
|
}
|
|
259
248
|
void Promise.resolve()
|
|
260
249
|
.then(async () => {
|
|
261
|
-
const protocols = this.components.
|
|
250
|
+
const protocols = this.components.registrar.getProtocols();
|
|
262
251
|
const { stream, protocol } = await mss.handle(muxedStream, protocols);
|
|
263
252
|
log('%s: incoming stream opened on %s', direction, protocol);
|
|
264
|
-
const metrics = this.components.getMetrics();
|
|
265
|
-
if (metrics != null) {
|
|
266
|
-
metrics.trackStream({ stream, remotePeer, protocol });
|
|
267
|
-
}
|
|
268
253
|
if (connection == null) {
|
|
269
254
|
return;
|
|
270
255
|
}
|
|
271
|
-
const incomingLimit = findIncomingStreamLimit(protocol, this.components.
|
|
256
|
+
const incomingLimit = findIncomingStreamLimit(protocol, this.components.registrar);
|
|
272
257
|
const streamCount = countStreams(protocol, 'inbound', connection);
|
|
273
258
|
if (streamCount === incomingLimit) {
|
|
274
259
|
muxedStream.abort(errCode(new Error(`Too many inbound protocol streams for protocol "${protocol}" - limit ${incomingLimit}`), codes.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS));
|
|
@@ -281,8 +266,9 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
281
266
|
muxedStream.stat.protocol = protocol;
|
|
282
267
|
// If a protocol stream has been successfully negotiated and is to be passed to the application,
|
|
283
268
|
// the peerstore should ensure that the peer is registered with that protocol
|
|
284
|
-
this.components.
|
|
269
|
+
this.components.peerStore.protoBook.add(remotePeer, [protocol]).catch(err => log.error(err));
|
|
285
270
|
connection.addStream(muxedStream);
|
|
271
|
+
this.components.metrics?.trackProtocolStream(muxedStream, connection);
|
|
286
272
|
this._onStream({ connection, stream: muxedStream, protocol });
|
|
287
273
|
})
|
|
288
274
|
.catch(err => {
|
|
@@ -297,16 +283,12 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
297
283
|
connection?.removeStream(muxedStream.id);
|
|
298
284
|
}
|
|
299
285
|
});
|
|
300
|
-
if (isInitializable(muxer)) {
|
|
301
|
-
muxer.init(this.components);
|
|
302
|
-
}
|
|
303
286
|
newStream = async (protocols, options = {}) => {
|
|
304
287
|
if (muxer == null) {
|
|
305
288
|
throw errCode(new Error('Stream is not multiplexed'), codes.ERR_MUXER_UNAVAILABLE);
|
|
306
289
|
}
|
|
307
290
|
log('%s: starting new stream on %s', direction, protocols);
|
|
308
|
-
const muxedStream = muxer.newStream();
|
|
309
|
-
const metrics = this.components.getMetrics();
|
|
291
|
+
const muxedStream = await muxer.newStream();
|
|
310
292
|
let controller;
|
|
311
293
|
try {
|
|
312
294
|
if (options.signal == null) {
|
|
@@ -320,10 +302,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
320
302
|
catch { }
|
|
321
303
|
}
|
|
322
304
|
const { stream, protocol } = await mss.select(muxedStream, protocols, options);
|
|
323
|
-
|
|
324
|
-
metrics.trackStream({ stream, remotePeer, protocol });
|
|
325
|
-
}
|
|
326
|
-
const outgoingLimit = findOutgoingStreamLimit(protocol, this.components.getRegistrar());
|
|
305
|
+
const outgoingLimit = findOutgoingStreamLimit(protocol, this.components.registrar);
|
|
327
306
|
const streamCount = countStreams(protocol, 'outbound', connection);
|
|
328
307
|
if (streamCount === outgoingLimit) {
|
|
329
308
|
const err = errCode(new Error(`Too many outbound protocol streams for protocol "${protocol}" - limit ${outgoingLimit}`), codes.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);
|
|
@@ -332,12 +311,13 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
332
311
|
}
|
|
333
312
|
// If a protocol stream has been successfully negotiated and is to be passed to the application,
|
|
334
313
|
// the peerstore should ensure that the peer is registered with that protocol
|
|
335
|
-
this.components.
|
|
314
|
+
this.components.peerStore.protoBook.add(remotePeer, [protocol]).catch(err => log.error(err));
|
|
336
315
|
// after the handshake the returned stream can have early data so override
|
|
337
316
|
// the souce/sink
|
|
338
317
|
muxedStream.source = stream.source;
|
|
339
318
|
muxedStream.sink = stream.sink;
|
|
340
319
|
muxedStream.stat.protocol = protocol;
|
|
320
|
+
this.components.metrics?.trackProtocolStream(muxedStream, connection);
|
|
341
321
|
return muxedStream;
|
|
342
322
|
}
|
|
343
323
|
catch (err) {
|
|
@@ -420,7 +400,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
420
400
|
*/
|
|
421
401
|
_onStream(opts) {
|
|
422
402
|
const { connection, stream, protocol } = opts;
|
|
423
|
-
const { handler } = this.components.
|
|
403
|
+
const { handler } = this.components.registrar.getHandler(protocol);
|
|
424
404
|
handler({ connection, stream });
|
|
425
405
|
}
|
|
426
406
|
/**
|
|
@@ -439,7 +419,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
439
419
|
}
|
|
440
420
|
log('encrypting inbound connection...');
|
|
441
421
|
return {
|
|
442
|
-
...await encrypter.secureInbound(this.components.
|
|
422
|
+
...await encrypter.secureInbound(this.components.peerId, stream),
|
|
443
423
|
protocol
|
|
444
424
|
};
|
|
445
425
|
}
|
|
@@ -464,7 +444,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
464
444
|
}
|
|
465
445
|
log('encrypting outbound connection to %p', remotePeerId);
|
|
466
446
|
return {
|
|
467
|
-
...await encrypter.secureOutbound(this.components.
|
|
447
|
+
...await encrypter.secureOutbound(this.components.peerId, stream, remotePeerId),
|
|
468
448
|
protocol
|
|
469
449
|
};
|
|
470
450
|
}
|
package/dist/src/upgrader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libp2p",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0-030dbc8",
|
|
4
4
|
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p#readme",
|
|
@@ -98,25 +98,24 @@
|
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
100
|
"@achingbrain/nat-port-mapper": "^1.0.3",
|
|
101
|
-
"@libp2p/components": "^2.1.0",
|
|
102
101
|
"@libp2p/connection": "^4.0.2",
|
|
103
102
|
"@libp2p/crypto": "^1.0.4",
|
|
104
|
-
"@libp2p/interface-address-manager": "^
|
|
103
|
+
"@libp2p/interface-address-manager": "^2.0.0",
|
|
105
104
|
"@libp2p/interface-connection": "^3.0.2",
|
|
106
|
-
"@libp2p/interface-connection-encrypter": "^
|
|
105
|
+
"@libp2p/interface-connection-encrypter": "^3.0.1",
|
|
107
106
|
"@libp2p/interface-connection-manager": "^1.1.1",
|
|
108
107
|
"@libp2p/interface-content-routing": "^1.0.2",
|
|
109
108
|
"@libp2p/interface-dht": "^1.0.1",
|
|
110
|
-
"@libp2p/interface-metrics": "^
|
|
109
|
+
"@libp2p/interface-metrics": "^4.0.0",
|
|
111
110
|
"@libp2p/interface-peer-discovery": "^1.0.1",
|
|
112
111
|
"@libp2p/interface-peer-id": "^1.0.4",
|
|
113
112
|
"@libp2p/interface-peer-info": "^1.0.3",
|
|
114
113
|
"@libp2p/interface-peer-routing": "^1.0.1",
|
|
115
114
|
"@libp2p/interface-peer-store": "^1.2.2",
|
|
116
|
-
"@libp2p/interface-pubsub": "^
|
|
115
|
+
"@libp2p/interface-pubsub": "^3.0.0",
|
|
117
116
|
"@libp2p/interface-registrar": "^2.0.3",
|
|
118
|
-
"@libp2p/interface-stream-muxer": "^
|
|
119
|
-
"@libp2p/interface-transport": "^
|
|
117
|
+
"@libp2p/interface-stream-muxer": "^3.0.0",
|
|
118
|
+
"@libp2p/interface-transport": "^2.0.0",
|
|
120
119
|
"@libp2p/interfaces": "^3.0.3",
|
|
121
120
|
"@libp2p/logger": "^2.0.1",
|
|
122
121
|
"@libp2p/multistream-select": "^3.0.0",
|
|
@@ -124,8 +123,8 @@
|
|
|
124
123
|
"@libp2p/peer-id": "^1.1.15",
|
|
125
124
|
"@libp2p/peer-id-factory": "^1.0.18",
|
|
126
125
|
"@libp2p/peer-record": "^4.0.3",
|
|
127
|
-
"@libp2p/peer-store": "^
|
|
128
|
-
"@libp2p/tracked-map": "^
|
|
126
|
+
"@libp2p/peer-store": "^5.0.0",
|
|
127
|
+
"@libp2p/tracked-map": "^3.0.0",
|
|
129
128
|
"@libp2p/utils": "^3.0.2",
|
|
130
129
|
"@multiformats/mafmt": "^11.0.2",
|
|
131
130
|
"@multiformats/multiaddr": "^11.0.0",
|
|
@@ -136,56 +135,56 @@
|
|
|
136
135
|
"events": "^3.3.0",
|
|
137
136
|
"hashlru": "^2.3.0",
|
|
138
137
|
"interface-datastore": "^7.0.0",
|
|
139
|
-
"it-all": "^
|
|
140
|
-
"it-drain": "^
|
|
141
|
-
"it-filter": "^
|
|
142
|
-
"it-first": "^
|
|
143
|
-
"it-foreach": "^0.
|
|
138
|
+
"it-all": "^2.0.0",
|
|
139
|
+
"it-drain": "^2.0.0",
|
|
140
|
+
"it-filter": "^2.0.0",
|
|
141
|
+
"it-first": "^2.0.0",
|
|
142
|
+
"it-foreach": "^1.0.0",
|
|
144
143
|
"it-handshake": "^4.1.2",
|
|
145
144
|
"it-length-prefixed": "^8.0.2",
|
|
146
|
-
"it-map": "^
|
|
147
|
-
"it-merge": "^
|
|
145
|
+
"it-map": "^2.0.0",
|
|
146
|
+
"it-merge": "^2.0.0",
|
|
148
147
|
"it-pair": "^2.0.2",
|
|
149
148
|
"it-pipe": "^2.0.3",
|
|
150
|
-
"it-sort": "^
|
|
149
|
+
"it-sort": "^2.0.0",
|
|
151
150
|
"it-stream-types": "^1.0.4",
|
|
152
151
|
"merge-options": "^3.0.4",
|
|
153
|
-
"multiformats": "^
|
|
154
|
-
"mutable-proxy": "^1.0.0",
|
|
152
|
+
"multiformats": "^10.0.0",
|
|
155
153
|
"node-forge": "^1.3.1",
|
|
156
154
|
"p-fifo": "^1.0.0",
|
|
157
155
|
"p-retry": "^5.0.0",
|
|
158
156
|
"p-settle": "^5.0.0",
|
|
159
157
|
"private-ip": "^2.3.3",
|
|
160
|
-
"protons-runtime": "^
|
|
158
|
+
"protons-runtime": "^4.0.1",
|
|
159
|
+
"rate-limiter-flexible": "^2.3.11",
|
|
161
160
|
"retimer": "^3.0.0",
|
|
162
161
|
"sanitize-filename": "^1.6.3",
|
|
163
162
|
"set-delayed-interval": "^1.0.0",
|
|
164
163
|
"timeout-abort-controller": "^3.0.0",
|
|
165
164
|
"uint8arraylist": "^2.3.2",
|
|
166
|
-
"uint8arrays": "^
|
|
165
|
+
"uint8arrays": "^4.0.2",
|
|
167
166
|
"wherearewe": "^2.0.0",
|
|
168
167
|
"xsalsa20": "^1.1.0"
|
|
169
168
|
},
|
|
170
169
|
"devDependencies": {
|
|
171
|
-
"@chainsafe/libp2p-noise": "^
|
|
172
|
-
"@chainsafe/libp2p-yamux": "^
|
|
173
|
-
"@libp2p/bootstrap": "^
|
|
174
|
-
"@libp2p/daemon-client": "^3.0.
|
|
175
|
-
"@libp2p/daemon-server": "^3.0.
|
|
176
|
-
"@libp2p/floodsub": "^
|
|
170
|
+
"@chainsafe/libp2p-noise": "^10.0.1",
|
|
171
|
+
"@chainsafe/libp2p-yamux": "^3.0.3",
|
|
172
|
+
"@libp2p/bootstrap": "^5.0.0",
|
|
173
|
+
"@libp2p/daemon-client": "^3.0.5",
|
|
174
|
+
"@libp2p/daemon-server": "^3.0.4",
|
|
175
|
+
"@libp2p/floodsub": "^5.0.0",
|
|
177
176
|
"@libp2p/interface-compliance-tests": "^3.0.2",
|
|
178
|
-
"@libp2p/interface-connection-encrypter-compliance-tests": "^
|
|
179
|
-
"@libp2p/interface-mocks": "^
|
|
177
|
+
"@libp2p/interface-connection-encrypter-compliance-tests": "^3.0.0",
|
|
178
|
+
"@libp2p/interface-mocks": "^8.0.0",
|
|
180
179
|
"@libp2p/interop": "^3.0.1",
|
|
181
|
-
"@libp2p/kad-dht": "^
|
|
182
|
-
"@libp2p/mdns": "^
|
|
183
|
-
"@libp2p/mplex": "^
|
|
184
|
-
"@libp2p/pubsub": "^
|
|
185
|
-
"@libp2p/tcp": "^
|
|
180
|
+
"@libp2p/kad-dht": "^6.0.0",
|
|
181
|
+
"@libp2p/mdns": "^5.0.0",
|
|
182
|
+
"@libp2p/mplex": "^7.0.0",
|
|
183
|
+
"@libp2p/pubsub": "^5.0.0",
|
|
184
|
+
"@libp2p/tcp": "^6.0.0",
|
|
186
185
|
"@libp2p/topology": "^3.0.1",
|
|
187
|
-
"@libp2p/webrtc-star": "^
|
|
188
|
-
"@libp2p/websockets": "^
|
|
186
|
+
"@libp2p/webrtc-star": "^5.0.2",
|
|
187
|
+
"@libp2p/websockets": "^5.0.0",
|
|
189
188
|
"@types/node-forge": "^1.0.0",
|
|
190
189
|
"@types/p-fifo": "^1.0.0",
|
|
191
190
|
"@types/varint": "^6.0.0",
|
|
@@ -196,16 +195,16 @@
|
|
|
196
195
|
"execa": "^6.1.0",
|
|
197
196
|
"go-libp2p": "^0.0.6",
|
|
198
197
|
"it-pushable": "^3.0.0",
|
|
199
|
-
"it-to-buffer": "^
|
|
198
|
+
"it-to-buffer": "^3.0.0",
|
|
200
199
|
"npm-run-all": "^4.1.5",
|
|
201
200
|
"p-defer": "^4.0.0",
|
|
202
201
|
"p-event": "^5.0.1",
|
|
203
202
|
"p-times": "^4.0.0",
|
|
204
203
|
"p-wait-for": "^5.0.0",
|
|
205
|
-
"protons": "^
|
|
204
|
+
"protons": "^6.0.0",
|
|
206
205
|
"rimraf": "^3.0.2",
|
|
207
206
|
"sinon": "^14.0.0",
|
|
208
|
-
"ts
|
|
207
|
+
"sinon-ts": "^1.0.0"
|
|
209
208
|
},
|
|
210
209
|
"browser": {
|
|
211
210
|
"nat-api": false
|
|
@@ -3,7 +3,8 @@ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
|
|
|
3
3
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
4
4
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
5
5
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
6
|
-
import type {
|
|
6
|
+
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
7
|
+
import type { TransportManager } from '@libp2p/interface-transport'
|
|
7
8
|
|
|
8
9
|
export interface AddressManagerInit {
|
|
9
10
|
announceFilter?: AddressFilter
|
|
@@ -24,6 +25,11 @@ export interface AddressManagerInit {
|
|
|
24
25
|
noAnnounce?: string[]
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
export interface DefaultAddressManagerComponents {
|
|
29
|
+
peerId: PeerId
|
|
30
|
+
transportManager: TransportManager
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
export interface AddressFilter {
|
|
28
34
|
(addrs: Multiaddr[]): Multiaddr[]
|
|
29
35
|
}
|
|
@@ -31,8 +37,9 @@ export interface AddressFilter {
|
|
|
31
37
|
const defaultAddressFilter = (addrs: Multiaddr[]): Multiaddr[] => addrs
|
|
32
38
|
|
|
33
39
|
export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
34
|
-
private readonly components:
|
|
35
|
-
|
|
40
|
+
private readonly components: DefaultAddressManagerComponents
|
|
41
|
+
// this is an array to allow for duplicates, e.g. multiples of `/ip4/0.0.0.0/tcp/0`
|
|
42
|
+
private readonly listen: string[]
|
|
36
43
|
private readonly announce: Set<string>
|
|
37
44
|
private readonly observed: Set<string>
|
|
38
45
|
private readonly announceFilter: AddressFilter
|
|
@@ -43,13 +50,13 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
|
43
50
|
* The listen addresses will be used by the libp2p transports to listen for new connections,
|
|
44
51
|
* while the announce addresses will be used for the peer addresses' to other peers in the network.
|
|
45
52
|
*/
|
|
46
|
-
constructor (components:
|
|
53
|
+
constructor (components: DefaultAddressManagerComponents, init: AddressManagerInit) {
|
|
47
54
|
super()
|
|
48
55
|
|
|
49
56
|
const { listen = [], announce = [] } = init
|
|
50
57
|
|
|
51
58
|
this.components = components
|
|
52
|
-
this.listen =
|
|
59
|
+
this.listen = listen.map(ma => ma.toString())
|
|
53
60
|
this.announce = new Set(announce.map(ma => ma.toString()))
|
|
54
61
|
this.observed = new Set()
|
|
55
62
|
this.announceFilter = init.announceFilter ?? defaultAddressFilter
|
|
@@ -76,6 +83,23 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
|
76
83
|
return Array.from(this.observed).map((a) => multiaddr(a))
|
|
77
84
|
}
|
|
78
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Add peer observed addresses
|
|
88
|
+
* Signal that we have confidence an observed multiaddr is publicly dialable -
|
|
89
|
+
* this will make it appear in the output of getAddresses()
|
|
90
|
+
*/
|
|
91
|
+
confirmObservedAddr (addr: Multiaddr): void {
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Signal that we do not have confidence an observed multiaddr is publicly dialable -
|
|
97
|
+
* this will remove it from the output of getObservedAddrs()
|
|
98
|
+
*/
|
|
99
|
+
removeObservedAddr (addr: Multiaddr): void {
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
79
103
|
/**
|
|
80
104
|
* Add peer observed addresses
|
|
81
105
|
*/
|
|
@@ -88,8 +112,8 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
|
88
112
|
const remotePeerId = peerIdFromString(remotePeer)
|
|
89
113
|
|
|
90
114
|
// use same encoding for comparison
|
|
91
|
-
if (remotePeerId.equals(this.components.
|
|
92
|
-
ma = ma.decapsulate(multiaddr(`/p2p/${this.components.
|
|
115
|
+
if (remotePeerId.equals(this.components.peerId)) {
|
|
116
|
+
ma = ma.decapsulate(multiaddr(`/p2p/${this.components.peerId.toString()}`))
|
|
93
117
|
}
|
|
94
118
|
}
|
|
95
119
|
|
|
@@ -109,7 +133,7 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
|
109
133
|
|
|
110
134
|
if (addrs.length === 0) {
|
|
111
135
|
// no configured announce addrs, add configured listen addresses
|
|
112
|
-
addrs = this.components.
|
|
136
|
+
addrs = this.components.transportManager.getAddrs().map(ma => ma.toString())
|
|
113
137
|
}
|
|
114
138
|
|
|
115
139
|
addrs = addrs.concat(this.getObservedAddrs().map(ma => ma.toString()))
|
|
@@ -121,11 +145,11 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
|
|
|
121
145
|
return this.announceFilter(Array.from(addrSet)
|
|
122
146
|
.map(str => multiaddr(str)))
|
|
123
147
|
.map(ma => {
|
|
124
|
-
if (ma.getPeerId() === this.components.
|
|
148
|
+
if (ma.getPeerId() === this.components.peerId.toString()) {
|
|
125
149
|
return ma
|
|
126
150
|
}
|
|
127
151
|
|
|
128
|
-
return ma.encapsulate(`/p2p/${this.components.
|
|
152
|
+
return ma.encapsulate(`/p2p/${this.components.peerId.toString()}`)
|
|
129
153
|
})
|
|
130
154
|
}
|
|
131
155
|
}
|