@libp2p/dcutr 2.0.37 → 2.0.38-8484de8a2
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/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/dcutr.d.ts.map +1 -1
- package/dist/src/dcutr.js +45 -57
- package/dist/src/dcutr.js.map +1 -1
- package/dist/src/utils.js +2 -2
- package/dist/src/utils.js.map +1 -1
- package/package.json +10 -11
- package/src/dcutr.ts +49 -58
- package/src/utils.ts +2 -2
- package/dist/typedoc-urls.json +0 -10
package/dist/src/dcutr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQ5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAgBxD,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQ5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAgBxD,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAiBvE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAkB;IAE/C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAoCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;OAIG;IACG,cAAc,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGnE;;;OAGG;IACG,kCAAkC,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA0D1F;;;;OAIG;IACG,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D1F;;OAEG;IACH,qBAAqB,CAAE,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE;CAqB1F"}
|
package/dist/src/dcutr.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { InvalidMessageError, serviceDependencies } from '@libp2p/interface';
|
|
2
|
-
import {
|
|
2
|
+
import { pbStream } from '@libp2p/utils';
|
|
3
|
+
import { CODE_P2P, multiaddr } from '@multiformats/multiaddr';
|
|
3
4
|
import { Circuit } from '@multiformats/multiaddr-matcher';
|
|
4
5
|
import delay from 'delay';
|
|
5
|
-
import { pbStream } from 'it-protobuf-stream';
|
|
6
6
|
import { HolePunch } from './pb/message.js';
|
|
7
7
|
import { isPublicAndDialable } from './utils.js';
|
|
8
8
|
import { multicodec } from './index.js';
|
|
@@ -43,6 +43,7 @@ export class DefaultDCUtRService {
|
|
|
43
43
|
this.retries = init.retries ?? defaultValues.retries;
|
|
44
44
|
this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;
|
|
45
45
|
this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;
|
|
46
|
+
this.handleIncomingUpgrade = this.handleIncomingUpgrade.bind(this);
|
|
46
47
|
}
|
|
47
48
|
[Symbol.toStringTag] = '@libp2p/dcutr';
|
|
48
49
|
[serviceDependencies] = [
|
|
@@ -74,12 +75,7 @@ export class DefaultDCUtRService {
|
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
});
|
|
77
|
-
await this.registrar.handle(multicodec,
|
|
78
|
-
void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
|
|
79
|
-
this.log.error('error during incoming DCUtR attempt', err);
|
|
80
|
-
data.stream.abort(err);
|
|
81
|
-
});
|
|
82
|
-
}, {
|
|
78
|
+
await this.registrar.handle(multicodec, this.handleIncomingUpgrade, {
|
|
83
79
|
maxInboundStreams: this.maxInboundStreams,
|
|
84
80
|
maxOutboundStreams: this.maxOutboundStreams,
|
|
85
81
|
runOnLimitedConnection: true
|
|
@@ -198,7 +194,7 @@ export class DefaultDCUtRService {
|
|
|
198
194
|
.map(address => {
|
|
199
195
|
const ma = address.multiaddr;
|
|
200
196
|
// ensure all multiaddrs have the peer id
|
|
201
|
-
if (ma.
|
|
197
|
+
if (ma.getComponents().find(c => c.code === CODE_P2P)?.value == null) {
|
|
202
198
|
return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`);
|
|
203
199
|
}
|
|
204
200
|
return ma;
|
|
@@ -244,57 +240,49 @@ export class DefaultDCUtRService {
|
|
|
244
240
|
const options = {
|
|
245
241
|
signal: AbortSignal.timeout(this.timeout)
|
|
246
242
|
};
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
throw new InvalidMessageError('DCUtR message type was incorrect');
|
|
258
|
-
}
|
|
259
|
-
if (connect.observedAddresses.length === 0) {
|
|
260
|
-
this.log('B sent no multiaddrs');
|
|
261
|
-
throw new InvalidMessageError('DCUtR connect message had no multiaddrs');
|
|
262
|
-
}
|
|
263
|
-
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
|
|
264
|
-
if (multiaddrs.length === 0) {
|
|
265
|
-
this.log('B had no dialable multiaddrs');
|
|
266
|
-
throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs');
|
|
267
|
-
}
|
|
268
|
-
this.log('A sending connect');
|
|
269
|
-
await pb.write({
|
|
270
|
-
type: HolePunch.Type.CONNECT,
|
|
271
|
-
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
272
|
-
});
|
|
273
|
-
this.log('A receiving sync');
|
|
274
|
-
const sync = await pb.read(options);
|
|
275
|
-
if (sync.type !== HolePunch.Type.SYNC) {
|
|
276
|
-
throw new InvalidMessageError('DCUtR message type was incorrect');
|
|
277
|
-
}
|
|
278
|
-
// TODO: when we have a QUIC transport, the dial step is different - for
|
|
279
|
-
// now we only have tcp support
|
|
280
|
-
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
281
|
-
// Upon receiving the Sync, A immediately dials the address to B
|
|
282
|
-
this.log('A dialing', multiaddrs);
|
|
283
|
-
const connection = await this.connectionManager.openConnection(multiaddrs, {
|
|
284
|
-
signal: options.signal,
|
|
285
|
-
priority: DCUTR_DIAL_PRIORITY,
|
|
286
|
-
force: true
|
|
287
|
-
});
|
|
288
|
-
this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
289
|
-
await relayedConnection.close(options);
|
|
243
|
+
const pb = pbStream(stream, {
|
|
244
|
+
maxDataLength: MAX_DCUTR_MESSAGE_SIZE
|
|
245
|
+
}).pb(HolePunch);
|
|
246
|
+
this.log('A receiving connect');
|
|
247
|
+
// 3. Upon receiving the Connect, A responds back with a Connect message
|
|
248
|
+
// containing its observed (and possibly predicted) addresses.
|
|
249
|
+
const connect = await pb.read(options);
|
|
250
|
+
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
251
|
+
this.log('B sent wrong message type');
|
|
252
|
+
throw new InvalidMessageError('DCUtR message type was incorrect');
|
|
290
253
|
}
|
|
291
|
-
|
|
292
|
-
this.log
|
|
293
|
-
|
|
254
|
+
if (connect.observedAddresses.length === 0) {
|
|
255
|
+
this.log('B sent no multiaddrs');
|
|
256
|
+
throw new InvalidMessageError('DCUtR connect message had no multiaddrs');
|
|
294
257
|
}
|
|
295
|
-
|
|
296
|
-
|
|
258
|
+
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
|
|
259
|
+
if (multiaddrs.length === 0) {
|
|
260
|
+
this.log('B had no dialable multiaddrs in %o', connect.observedAddresses.map(b => multiaddr(b)));
|
|
261
|
+
throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs');
|
|
297
262
|
}
|
|
263
|
+
this.log('A sending connect');
|
|
264
|
+
await pb.write({
|
|
265
|
+
type: HolePunch.Type.CONNECT,
|
|
266
|
+
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
267
|
+
});
|
|
268
|
+
this.log('A receiving sync');
|
|
269
|
+
const sync = await pb.read(options);
|
|
270
|
+
if (sync.type !== HolePunch.Type.SYNC) {
|
|
271
|
+
throw new InvalidMessageError('DCUtR message type was incorrect');
|
|
272
|
+
}
|
|
273
|
+
// TODO: when we have a QUIC transport, the dial step is different - for
|
|
274
|
+
// now we only have tcp support
|
|
275
|
+
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
276
|
+
// Upon receiving the Sync, A immediately dials the address to B
|
|
277
|
+
this.log('A dialing', multiaddrs);
|
|
278
|
+
const connection = await this.connectionManager.openConnection(multiaddrs, {
|
|
279
|
+
signal: options.signal,
|
|
280
|
+
priority: DCUTR_DIAL_PRIORITY,
|
|
281
|
+
force: true
|
|
282
|
+
});
|
|
283
|
+
this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
284
|
+
await relayedConnection.close(options);
|
|
285
|
+
await stream.close(options);
|
|
298
286
|
}
|
|
299
287
|
/**
|
|
300
288
|
* Takes the `addr` and converts it to a Multiaddr if possible
|
package/dist/src/dcutr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isPrivate } from '@libp2p/utils';
|
|
2
2
|
import { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher';
|
|
3
3
|
/**
|
|
4
4
|
* Returns true if the passed multiaddr is public, not relayed and we have a
|
|
@@ -21,6 +21,6 @@ export function isPublicAndDialable(ma, transportManager) {
|
|
|
21
21
|
if (!IP.matches(ma)) {
|
|
22
22
|
return false;
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return !isPrivate(ma);
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAIlE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAE,EAAa,EAAE,gBAAkC;IACpF,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAA;IAEhE,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/dcutr",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.38-8484de8a2",
|
|
4
4
|
"description": "Implementation of the DCUtR Protocol",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-dcutr#readme",
|
|
@@ -45,20 +45,19 @@
|
|
|
45
45
|
"doc-check": "aegir doc-check"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@libp2p/interface": "
|
|
49
|
-
"@libp2p/interface-internal": "
|
|
50
|
-
"@libp2p/utils": "
|
|
51
|
-
"@multiformats/multiaddr": "^
|
|
52
|
-
"@multiformats/multiaddr-matcher": "^
|
|
48
|
+
"@libp2p/interface": "2.11.0-8484de8a2",
|
|
49
|
+
"@libp2p/interface-internal": "2.3.19-8484de8a2",
|
|
50
|
+
"@libp2p/utils": "6.7.2-8484de8a2",
|
|
51
|
+
"@multiformats/multiaddr": "^13.0.1",
|
|
52
|
+
"@multiformats/multiaddr-matcher": "^3.0.1",
|
|
53
53
|
"delay": "^6.0.0",
|
|
54
|
-
"
|
|
55
|
-
"protons-runtime": "^5.5.0",
|
|
54
|
+
"protons-runtime": "^5.6.0",
|
|
56
55
|
"uint8arraylist": "^2.4.8"
|
|
57
56
|
},
|
|
58
57
|
"devDependencies": {
|
|
59
|
-
"aegir": "^47.0.
|
|
60
|
-
"protons": "^7.
|
|
61
|
-
"sinon": "^
|
|
58
|
+
"aegir": "^47.0.21",
|
|
59
|
+
"protons": "^7.7.0",
|
|
60
|
+
"sinon": "^21.0.0",
|
|
62
61
|
"sinon-ts": "^2.0.0"
|
|
63
62
|
},
|
|
64
63
|
"sideEffects": false
|
package/src/dcutr.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { InvalidMessageError, serviceDependencies } from '@libp2p/interface'
|
|
2
|
-
import {
|
|
2
|
+
import { pbStream } from '@libp2p/utils'
|
|
3
|
+
import { CODE_P2P, multiaddr } from '@multiformats/multiaddr'
|
|
3
4
|
import { Circuit } from '@multiformats/multiaddr-matcher'
|
|
4
5
|
import delay from 'delay'
|
|
5
|
-
import { pbStream } from 'it-protobuf-stream'
|
|
6
6
|
import { HolePunch } from './pb/message.js'
|
|
7
7
|
import { isPublicAndDialable } from './utils.js'
|
|
8
8
|
import { multicodec } from './index.js'
|
|
@@ -52,6 +52,8 @@ export class DefaultDCUtRService implements Startable {
|
|
|
52
52
|
this.retries = init.retries ?? defaultValues.retries
|
|
53
53
|
this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams
|
|
54
54
|
this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams
|
|
55
|
+
|
|
56
|
+
this.handleIncomingUpgrade = this.handleIncomingUpgrade.bind(this)
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
readonly [Symbol.toStringTag] = '@libp2p/dcutr'
|
|
@@ -91,12 +93,7 @@ export class DefaultDCUtRService implements Startable {
|
|
|
91
93
|
}
|
|
92
94
|
})
|
|
93
95
|
|
|
94
|
-
await this.registrar.handle(multicodec,
|
|
95
|
-
void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
|
|
96
|
-
this.log.error('error during incoming DCUtR attempt', err)
|
|
97
|
-
data.stream.abort(err)
|
|
98
|
-
})
|
|
99
|
-
}, {
|
|
96
|
+
await this.registrar.handle(multicodec, this.handleIncomingUpgrade, {
|
|
100
97
|
maxInboundStreams: this.maxInboundStreams,
|
|
101
98
|
maxOutboundStreams: this.maxOutboundStreams,
|
|
102
99
|
runOnLimitedConnection: true
|
|
@@ -238,7 +235,7 @@ export class DefaultDCUtRService implements Startable {
|
|
|
238
235
|
const ma = address.multiaddr
|
|
239
236
|
|
|
240
237
|
// ensure all multiaddrs have the peer id
|
|
241
|
-
if (ma.
|
|
238
|
+
if (ma.getComponents().find(c => c.code === CODE_P2P)?.value == null) {
|
|
242
239
|
return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`)
|
|
243
240
|
}
|
|
244
241
|
|
|
@@ -293,66 +290,60 @@ export class DefaultDCUtRService implements Startable {
|
|
|
293
290
|
signal: AbortSignal.timeout(this.timeout)
|
|
294
291
|
}
|
|
295
292
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}).pb(HolePunch)
|
|
293
|
+
const pb = pbStream(stream, {
|
|
294
|
+
maxDataLength: MAX_DCUTR_MESSAGE_SIZE
|
|
295
|
+
}).pb(HolePunch)
|
|
300
296
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
297
|
+
this.log('A receiving connect')
|
|
298
|
+
// 3. Upon receiving the Connect, A responds back with a Connect message
|
|
299
|
+
// containing its observed (and possibly predicted) addresses.
|
|
300
|
+
const connect = await pb.read(options)
|
|
305
301
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
302
|
+
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
303
|
+
this.log('B sent wrong message type')
|
|
304
|
+
throw new InvalidMessageError('DCUtR message type was incorrect')
|
|
305
|
+
}
|
|
310
306
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
307
|
+
if (connect.observedAddresses.length === 0) {
|
|
308
|
+
this.log('B sent no multiaddrs')
|
|
309
|
+
throw new InvalidMessageError('DCUtR connect message had no multiaddrs')
|
|
310
|
+
}
|
|
315
311
|
|
|
316
|
-
|
|
312
|
+
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses)
|
|
317
313
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
314
|
+
if (multiaddrs.length === 0) {
|
|
315
|
+
this.log('B had no dialable multiaddrs in %o', connect.observedAddresses.map(b => multiaddr(b)))
|
|
316
|
+
throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs')
|
|
317
|
+
}
|
|
322
318
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
319
|
+
this.log('A sending connect')
|
|
320
|
+
await pb.write({
|
|
321
|
+
type: HolePunch.Type.CONNECT,
|
|
322
|
+
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
323
|
+
})
|
|
328
324
|
|
|
329
|
-
|
|
330
|
-
|
|
325
|
+
this.log('A receiving sync')
|
|
326
|
+
const sync = await pb.read(options)
|
|
331
327
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
328
|
+
if (sync.type !== HolePunch.Type.SYNC) {
|
|
329
|
+
throw new InvalidMessageError('DCUtR message type was incorrect')
|
|
330
|
+
}
|
|
335
331
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
332
|
+
// TODO: when we have a QUIC transport, the dial step is different - for
|
|
333
|
+
// now we only have tcp support
|
|
334
|
+
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
339
335
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
336
|
+
// Upon receiving the Sync, A immediately dials the address to B
|
|
337
|
+
this.log('A dialing', multiaddrs)
|
|
338
|
+
const connection = await this.connectionManager.openConnection(multiaddrs, {
|
|
339
|
+
signal: options.signal,
|
|
340
|
+
priority: DCUTR_DIAL_PRIORITY,
|
|
341
|
+
force: true
|
|
342
|
+
})
|
|
347
343
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err)
|
|
352
|
-
stream.abort(err)
|
|
353
|
-
} finally {
|
|
354
|
-
await stream.close(options)
|
|
355
|
-
}
|
|
344
|
+
this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
|
|
345
|
+
await relayedConnection.close(options)
|
|
346
|
+
await stream.close(options)
|
|
356
347
|
}
|
|
357
348
|
|
|
358
349
|
/**
|
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isPrivate } from '@libp2p/utils'
|
|
2
2
|
import { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher'
|
|
3
3
|
import type { TransportManager } from '@libp2p/interface-internal'
|
|
4
4
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
@@ -29,5 +29,5 @@ export function isPublicAndDialable (ma: Multiaddr, transportManager: TransportM
|
|
|
29
29
|
return false
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
return
|
|
32
|
+
return !isPrivate(ma)
|
|
33
33
|
}
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"DCUtRServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceComponents.html",
|
|
3
|
-
".:DCUtRServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceComponents.html",
|
|
4
|
-
"DCUtRServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceInit.html",
|
|
5
|
-
".:DCUtRServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceInit.html",
|
|
6
|
-
"multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_dcutr.multicodec.html",
|
|
7
|
-
".:multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_dcutr.multicodec.html",
|
|
8
|
-
"dcutr": "https://libp2p.github.io/js-libp2p/functions/_libp2p_dcutr.dcutr.html",
|
|
9
|
-
".:dcutr": "https://libp2p.github.io/js-libp2p/functions/_libp2p_dcutr.dcutr.html"
|
|
10
|
-
}
|