@libp2p/circuit-relay-v2 3.2.23-cf9aab5c8 → 3.2.24-a02cb0461
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/index.d.ts +170 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/index.d.ts +41 -45
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +26 -43
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/reservation-store.d.ts +2 -36
- package/dist/src/server/reservation-store.d.ts.map +1 -1
- package/dist/src/server/reservation-store.js.map +1 -1
- package/dist/src/transport/discovery.d.ts +2 -17
- package/dist/src/transport/discovery.d.ts.map +1 -1
- package/dist/src/transport/discovery.js +2 -2
- package/dist/src/transport/discovery.js.map +1 -1
- package/dist/src/transport/index.d.ts +34 -42
- package/dist/src/transport/index.d.ts.map +1 -1
- package/dist/src/transport/index.js +296 -5
- package/dist/src/transport/index.js.map +1 -1
- package/dist/src/transport/reservation-store.d.ts +3 -37
- package/dist/src/transport/reservation-store.d.ts.map +1 -1
- package/dist/src/transport/reservation-store.js +2 -4
- package/dist/src/transport/reservation-store.js.map +1 -1
- package/dist/src/transport/stream-to-conn.d.ts +19 -0
- package/dist/src/transport/stream-to-conn.d.ts.map +1 -0
- package/dist/src/transport/stream-to-conn.js +60 -0
- package/dist/src/transport/stream-to-conn.js.map +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +36 -59
- package/dist/src/utils.js.map +1 -1
- package/package.json +19 -24
- package/src/index.ts +207 -8
- package/src/server/index.ts +32 -94
- package/src/server/reservation-store.ts +2 -42
- package/src/transport/discovery.ts +4 -22
- package/src/transport/index.ts +344 -46
- package/src/transport/reservation-store.ts +6 -44
- package/src/transport/stream-to-conn.ts +91 -0
- package/src/utils.ts +37 -66
- package/dist/src/transport/transport.d.ts +0 -54
- package/dist/src/transport/transport.d.ts.map +0 -1
- package/dist/src/transport/transport.js +0 -314
- package/dist/src/transport/transport.js.map +0 -1
- package/src/transport/transport.ts +0 -380
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/server/reservation-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
1
|
+
{"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/server/reservation-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAA;AAEjG,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,gBAAgB;IAC3B,SAAgB,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,0BAA0B,EAAE,IAAI,GAAE,0BAA+B;IAc1F,OAAO,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAwCtG,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIhD,KAAK,IAAK,IAAI;CAGf"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/server/reservation-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7I,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
1
|
+
{"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/server/reservation-store.ts"],"names":[],"mappings":"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"}
|
@@ -1,21 +1,6 @@
|
|
1
1
|
import { TypedEventEmitter } from 'main-event';
|
2
|
-
import type {
|
3
|
-
import type {
|
4
|
-
export interface RelayDiscoveryEvents {
|
5
|
-
'relay:discover': CustomEvent<PeerId>;
|
6
|
-
}
|
7
|
-
export interface RelayDiscoveryComponents {
|
8
|
-
peerStore: PeerStore;
|
9
|
-
connectionManager: ConnectionManager;
|
10
|
-
transportManager: TransportManager;
|
11
|
-
registrar: Registrar;
|
12
|
-
logger: ComponentLogger;
|
13
|
-
randomWalk: RandomWalk;
|
14
|
-
events: TypedEventTarget<Libp2pEvents>;
|
15
|
-
}
|
16
|
-
export interface RelayDiscoveryInit {
|
17
|
-
filter?: TopologyFilter;
|
18
|
-
}
|
2
|
+
import type { RelayDiscoveryComponents, RelayDiscoveryEvents, RelayDiscoveryInit } from '../index.ts';
|
3
|
+
import type { PeerId, PeerInfo, Startable } from '@libp2p/interface';
|
19
4
|
/**
|
20
5
|
* ReservationManager automatically makes a circuit v2 reservation on any connected
|
21
6
|
* peers that support the circuit v2 HOP protocol.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/transport/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAK/D,OAAO,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/transport/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAK/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,KAAK,EAAgB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,mBAAmB,CAAA;AAElG;;;GAGG;AACH,qBAAa,cAAe,SAAQ,iBAAiB,CAAC,oBAAoB,CAAE,YAAW,SAAS;IAC9F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAgB;IACxC,OAAO,CAAC,KAAK,CAAC,CAAW;gBAEZ,UAAU,EAAE,wBAAwB,EAAE,IAAI,GAAE,kBAAuB;IAchF,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAc7B,IAAI,IAAK,IAAI;IAYb;;;;;;;;OAQG;IACH,cAAc,IAAK,IAAI;IAqHvB,aAAa,IAAK,IAAI;IAUtB,MAAM,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IASnC,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCzD,QAAQ,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7F"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { PeerQueue } from '@libp2p/utils
|
1
|
+
import { PeerQueue } from '@libp2p/utils';
|
2
2
|
import { anySignal } from 'any-signal';
|
3
3
|
import { TypedEventEmitter, setMaxListeners } from 'main-event';
|
4
4
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
@@ -162,7 +162,7 @@ export class RelayDiscovery extends TypedEventEmitter {
|
|
162
162
|
this.components.events.removeEventListener('peer:discovery', this.onPeer);
|
163
163
|
}
|
164
164
|
onPeer(evt) {
|
165
|
-
this.log.trace('maybe dialing discovered peer %p
|
165
|
+
this.log.trace('maybe dialing discovered peer %p', evt.detail.id);
|
166
166
|
this.maybeDialPeer(evt)
|
167
167
|
.catch(err => {
|
168
168
|
this.log.trace('error dialing discovered peer %p - %e', evt.detail.id, err);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/transport/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/transport/discovery.ts"],"names":[],"mappings":"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"}
|
@@ -1,54 +1,46 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
import type {
|
4
|
-
import type {
|
5
|
-
import type {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
import { serviceCapabilities, serviceDependencies, transportSymbol } from '@libp2p/interface';
|
2
|
+
import { ReservationStore } from './reservation-store.js';
|
3
|
+
import type { CircuitRelayTransportComponents, CircuitRelayTransportInit } from '../index.ts';
|
4
|
+
import type { Transport, CreateListenerOptions, Listener, Connection, Stream, OutboundConnectionUpgradeEvents, DialTransportOptions, OpenConnectionProgressEvents } from '@libp2p/interface';
|
5
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
6
|
+
import type { ProgressEvent } from 'progress-events';
|
7
|
+
export type CircuitRelayDialEvents = OutboundConnectionUpgradeEvents | OpenConnectionProgressEvents | ProgressEvent<'circuit-relay:open-connection'> | ProgressEvent<'circuit-relay:reuse-connection'> | ProgressEvent<'circuit-relay:open-hop-stream'> | ProgressEvent<'circuit-relay:write-connect-message'> | ProgressEvent<'circuit-relay:read-connect-response'>;
|
8
|
+
export declare class CircuitRelayTransport implements Transport<CircuitRelayDialEvents> {
|
9
|
+
private readonly components;
|
10
|
+
private readonly discovery?;
|
11
|
+
readonly reservationStore: ReservationStore;
|
12
|
+
private readonly maxInboundStopStreams;
|
13
|
+
private readonly maxOutboundStopStreams?;
|
14
|
+
private started;
|
15
|
+
private readonly log;
|
16
|
+
private shutdownController;
|
17
|
+
constructor(components: CircuitRelayTransportComponents, init?: CircuitRelayTransportInit);
|
18
|
+
readonly [Symbol.toStringTag] = "@libp2p/circuit-relay-v2-transport";
|
19
|
+
readonly [serviceCapabilities]: string[];
|
20
|
+
get [serviceDependencies](): string[];
|
21
|
+
readonly [transportSymbol] = true;
|
22
|
+
isStarted(): boolean;
|
23
|
+
start(): Promise<void>;
|
24
|
+
stop(): Promise<void>;
|
18
25
|
/**
|
19
|
-
*
|
20
|
-
* slots on the same peer
|
26
|
+
* Dial a peer over a relay
|
21
27
|
*/
|
22
|
-
|
28
|
+
dial(ma: Multiaddr, options: DialTransportOptions<CircuitRelayDialEvents>): Promise<Connection>;
|
23
29
|
/**
|
24
|
-
*
|
25
|
-
* once - each inbound relayed connection uses a STOP stream
|
26
|
-
*
|
27
|
-
* @default 300
|
30
|
+
* Create a listener
|
28
31
|
*/
|
29
|
-
|
32
|
+
createListener(options: CreateListenerOptions): Listener;
|
30
33
|
/**
|
31
|
-
*
|
32
|
-
* at once. If this transport is used along with the relay server these
|
33
|
-
* settings should be set to the same value
|
34
|
-
*
|
35
|
-
* @default 300
|
34
|
+
* Filter check for all Multiaddrs that this transport can listen on
|
36
35
|
*/
|
37
|
-
|
36
|
+
listenFilter(multiaddrs: Multiaddr[]): Multiaddr[];
|
38
37
|
/**
|
39
|
-
*
|
40
|
-
* relay) must finish the initial protocol negotiation within this timeout in
|
41
|
-
* ms
|
42
|
-
*
|
43
|
-
* @deprecated Configure `connectionManager.inboundUpgradeTimeout` instead
|
38
|
+
* Filter check for all Multiaddrs that this transport can dial
|
44
39
|
*/
|
45
|
-
|
40
|
+
dialFilter(multiaddrs: Multiaddr[]): Multiaddr[];
|
46
41
|
/**
|
47
|
-
*
|
48
|
-
*
|
49
|
-
* @default 10_000
|
42
|
+
* An incoming STOP request means a remote peer wants to dial us via a relay
|
50
43
|
*/
|
51
|
-
|
44
|
+
onStop(stream: Stream, connection: Connection): Promise<void>;
|
52
45
|
}
|
53
|
-
export declare function circuitRelayTransport(init?: CircuitRelayTransportInit): (components: CircuitRelayTransportComponents) => Transport;
|
54
46
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,mBAAmB,EAAE,mBAAmB,EAAe,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAc1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAC7F,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACpM,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAsBpD,MAAM,MAAM,sBAAsB,GAChC,+BAA+B,GAC/B,4BAA4B,GAC5B,aAAa,CAAC,+BAA+B,CAAC,GAC9C,aAAa,CAAC,gCAAgC,CAAC,GAC/C,aAAa,CAAC,+BAA+B,CAAC,GAC9C,aAAa,CAAC,qCAAqC,CAAC,GACpD,aAAa,CAAC,qCAAqC,CAAC,CAAA;AAEtD,qBAAa,qBAAsB,YAAW,SAAS,CAAC,sBAAsB,CAAC;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAgB;IAC3C,SAAgB,gBAAgB,EAAE,gBAAgB,CAAA;IAClD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAQ;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,kBAAkB,CAAiB;gBAE9B,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IA+B9F,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,wCAAuC;IAEpE,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAGvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CASrC;IAED,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAevB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwFtG;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAUzD;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAQnD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAQjD;;OAEG;IACG,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA+FrE"}
|
@@ -1,7 +1,298 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
import { DialError, InvalidMessageError, serviceCapabilities, serviceDependencies, start, stop, transportSymbol } from '@libp2p/interface';
|
2
|
+
import { peerFilter } from '@libp2p/peer-collections';
|
3
|
+
import { peerIdFromMultihash, peerIdFromString } from '@libp2p/peer-id';
|
4
|
+
import { pbStream } from '@libp2p/utils';
|
5
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
6
|
+
import { Circuit } from '@multiformats/multiaddr-matcher';
|
7
|
+
import { setMaxListeners } from 'main-event';
|
8
|
+
import * as Digest from 'multiformats/hashes/digest';
|
9
|
+
import { CustomProgressEvent } from 'progress-events';
|
10
|
+
import { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE, MAX_CONNECTIONS, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js';
|
11
|
+
import { StopMessage, HopMessage, Status } from '../pb/index.js';
|
12
|
+
import { CircuitListen, CircuitSearch, LimitTracker } from '../utils.js';
|
13
|
+
import { RelayDiscovery } from './discovery.js';
|
14
|
+
import { createListener } from './listener.js';
|
15
|
+
import { ReservationStore } from './reservation-store.js';
|
16
|
+
import { streamToMaConnection } from './stream-to-conn.js';
|
17
|
+
const isValidStop = (request) => {
|
18
|
+
if (request.peer == null) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
try {
|
22
|
+
request.peer.addrs.forEach(multiaddr);
|
23
|
+
}
|
24
|
+
catch {
|
25
|
+
return false;
|
26
|
+
}
|
27
|
+
return true;
|
28
|
+
};
|
29
|
+
const defaults = {
|
30
|
+
maxInboundStopStreams: MAX_CONNECTIONS,
|
31
|
+
maxOutboundStopStreams: MAX_CONNECTIONS,
|
32
|
+
stopTimeout: 30000
|
33
|
+
};
|
34
|
+
export class CircuitRelayTransport {
|
35
|
+
components;
|
36
|
+
discovery;
|
37
|
+
reservationStore;
|
38
|
+
maxInboundStopStreams;
|
39
|
+
maxOutboundStopStreams;
|
40
|
+
started;
|
41
|
+
log;
|
42
|
+
shutdownController;
|
43
|
+
constructor(components, init = {}) {
|
44
|
+
this.components = components;
|
45
|
+
this.log = components.logger.forComponent('libp2p:circuit-relay:transport');
|
46
|
+
this.maxInboundStopStreams = init.maxInboundStopStreams ?? defaults.maxInboundStopStreams;
|
47
|
+
this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams;
|
48
|
+
this.shutdownController = new AbortController();
|
49
|
+
this.discovery = new RelayDiscovery(components, {
|
50
|
+
filter: init.discoveryFilter ?? peerFilter(DEFAULT_DISCOVERY_FILTER_SIZE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE)
|
51
|
+
});
|
52
|
+
this.discovery.addEventListener('relay:discover', (evt) => {
|
53
|
+
this.reservationStore.addRelay(evt.detail, 'discovered')
|
54
|
+
.catch(err => {
|
55
|
+
if (err.name !== 'HadEnoughRelaysError' && err.name !== 'RelayQueueFullError') {
|
56
|
+
this.log.error('could not add discovered relay %p', evt.detail, err);
|
57
|
+
}
|
58
|
+
});
|
59
|
+
});
|
60
|
+
this.reservationStore = new ReservationStore(components, init);
|
61
|
+
this.reservationStore.addEventListener('relay:not-enough-relays', () => {
|
62
|
+
this.discovery?.startDiscovery();
|
63
|
+
});
|
64
|
+
this.reservationStore.addEventListener('relay:found-enough-relays', () => {
|
65
|
+
this.discovery?.stopDiscovery();
|
66
|
+
});
|
67
|
+
this.started = false;
|
68
|
+
this.onStop = this.onStop.bind(this);
|
69
|
+
}
|
70
|
+
[Symbol.toStringTag] = '@libp2p/circuit-relay-v2-transport';
|
71
|
+
[serviceCapabilities] = [
|
72
|
+
'@libp2p/transport',
|
73
|
+
'@libp2p/circuit-relay-v2-transport'
|
74
|
+
];
|
75
|
+
get [serviceDependencies]() {
|
76
|
+
// we only need identify if discovery is enabled
|
77
|
+
if (this.discovery != null) {
|
78
|
+
return [
|
79
|
+
'@libp2p/identify'
|
80
|
+
];
|
81
|
+
}
|
82
|
+
return [];
|
83
|
+
}
|
84
|
+
[transportSymbol] = true;
|
85
|
+
isStarted() {
|
86
|
+
return this.started;
|
87
|
+
}
|
88
|
+
async start() {
|
89
|
+
this.shutdownController = new AbortController();
|
90
|
+
setMaxListeners(Infinity, this.shutdownController.signal);
|
91
|
+
await this.components.registrar.handle(RELAY_V2_STOP_CODEC, this.onStop, {
|
92
|
+
maxInboundStreams: this.maxInboundStopStreams,
|
93
|
+
maxOutboundStreams: this.maxOutboundStopStreams,
|
94
|
+
runOnLimitedConnection: true
|
95
|
+
});
|
96
|
+
await start(this.discovery, this.reservationStore);
|
97
|
+
this.started = true;
|
98
|
+
}
|
99
|
+
async stop() {
|
100
|
+
this.shutdownController.abort();
|
101
|
+
await stop(this.discovery, this.reservationStore);
|
102
|
+
await this.components.registrar.unhandle(RELAY_V2_STOP_CODEC);
|
103
|
+
this.started = false;
|
104
|
+
}
|
105
|
+
/**
|
106
|
+
* Dial a peer over a relay
|
107
|
+
*/
|
108
|
+
async dial(ma, options) {
|
109
|
+
if (ma.protoCodes().filter(code => code === CIRCUIT_PROTO_CODE).length !== 1) {
|
110
|
+
const errMsg = 'Invalid circuit relay address';
|
111
|
+
this.log.error(errMsg, ma);
|
112
|
+
throw new DialError(errMsg);
|
113
|
+
}
|
114
|
+
// Check the multiaddr to see if it contains a relay and a destination peer
|
115
|
+
const addrs = ma.toString().split('/p2p-circuit');
|
116
|
+
const relayAddr = multiaddr(addrs[0]);
|
117
|
+
const destinationAddr = multiaddr(addrs[addrs.length - 1]);
|
118
|
+
const relayId = relayAddr.getPeerId();
|
119
|
+
const destinationId = destinationAddr.getPeerId();
|
120
|
+
if (relayId == null || destinationId == null) {
|
121
|
+
const errMsg = `ircuit relay dial to ${ma.toString()} failed as address did not have both relay and destination PeerIDs`;
|
122
|
+
this.log.error(`c${errMsg}`);
|
123
|
+
throw new DialError(`C${errMsg}`);
|
124
|
+
}
|
125
|
+
const relayPeer = peerIdFromString(relayId);
|
126
|
+
const destinationPeer = peerIdFromString(destinationId);
|
127
|
+
const relayConnections = this.components.connectionManager.getConnections(relayPeer);
|
128
|
+
let relayConnection = relayConnections[0];
|
129
|
+
if (relayConnection == null) {
|
130
|
+
await this.components.peerStore.merge(relayPeer, {
|
131
|
+
multiaddrs: [relayAddr]
|
132
|
+
});
|
133
|
+
options.onProgress?.(new CustomProgressEvent('circuit-relay:open-connection'));
|
134
|
+
relayConnection = await this.components.connectionManager.openConnection(relayPeer, options);
|
135
|
+
}
|
136
|
+
else {
|
137
|
+
options.onProgress?.(new CustomProgressEvent('circuit-relay:reuse-connection'));
|
138
|
+
}
|
139
|
+
let stream;
|
140
|
+
try {
|
141
|
+
options.onProgress?.(new CustomProgressEvent('circuit-relay:open-hop-stream'));
|
142
|
+
stream = await relayConnection.newStream(RELAY_V2_HOP_CODEC, options);
|
143
|
+
const hopstr = pbStream(stream).pb(HopMessage);
|
144
|
+
options.onProgress?.(new CustomProgressEvent('circuit-relay:write-connect-message'));
|
145
|
+
await hopstr.write({
|
146
|
+
type: HopMessage.Type.CONNECT,
|
147
|
+
peer: {
|
148
|
+
id: destinationPeer.toMultihash().bytes,
|
149
|
+
addrs: [multiaddr(destinationAddr).bytes]
|
150
|
+
}
|
151
|
+
}, options);
|
152
|
+
options.onProgress?.(new CustomProgressEvent('circuit-relay:read-connect-response'));
|
153
|
+
const status = await hopstr.read(options);
|
154
|
+
if (status.status !== Status.OK) {
|
155
|
+
throw new InvalidMessageError(`failed to connect via relay with status ${status?.status?.toString() ?? 'undefined'}`);
|
156
|
+
}
|
157
|
+
const limits = new LimitTracker(status.limit);
|
158
|
+
const maConn = streamToMaConnection({
|
159
|
+
stream: hopstr.unwrap().unwrap(),
|
160
|
+
remoteAddr: ma,
|
161
|
+
localAddr: relayAddr.encapsulate(`/p2p-circuit/p2p/${this.components.peerId.toString()}`),
|
162
|
+
onDataRead: limits.onData,
|
163
|
+
onDataWrite: limits.onData,
|
164
|
+
log: stream.log.newScope('circuit-relay:connection')
|
165
|
+
});
|
166
|
+
const conn = await this.components.upgrader.upgradeOutbound(maConn, {
|
167
|
+
...options,
|
168
|
+
limits: limits.getLimits()
|
169
|
+
});
|
170
|
+
conn.log('outbound relayed connection established to %p with limits %o, over connection %s', conn.remotePeer, status.limit ?? 'none', relayConnection.id);
|
171
|
+
return conn;
|
172
|
+
}
|
173
|
+
catch (err) {
|
174
|
+
this.log.error('circuit relay dial to destination %p via relay %p failed', destinationPeer, relayPeer, err);
|
175
|
+
stream?.abort(err);
|
176
|
+
throw err;
|
177
|
+
}
|
178
|
+
}
|
179
|
+
/**
|
180
|
+
* Create a listener
|
181
|
+
*/
|
182
|
+
createListener(options) {
|
183
|
+
return createListener({
|
184
|
+
peerId: this.components.peerId,
|
185
|
+
connectionManager: this.components.connectionManager,
|
186
|
+
addressManager: this.components.addressManager,
|
187
|
+
reservationStore: this.reservationStore,
|
188
|
+
logger: this.components.logger
|
189
|
+
});
|
190
|
+
}
|
191
|
+
/**
|
192
|
+
* Filter check for all Multiaddrs that this transport can listen on
|
193
|
+
*/
|
194
|
+
listenFilter(multiaddrs) {
|
195
|
+
multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
|
196
|
+
return multiaddrs.filter((ma) => {
|
197
|
+
return CircuitListen.exactMatch(ma) || CircuitSearch.exactMatch(ma);
|
198
|
+
});
|
199
|
+
}
|
200
|
+
/**
|
201
|
+
* Filter check for all Multiaddrs that this transport can dial
|
202
|
+
*/
|
203
|
+
dialFilter(multiaddrs) {
|
204
|
+
multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
|
205
|
+
return multiaddrs.filter((ma) => {
|
206
|
+
return Circuit.exactMatch(ma);
|
207
|
+
});
|
208
|
+
}
|
209
|
+
/**
|
210
|
+
* An incoming STOP request means a remote peer wants to dial us via a relay
|
211
|
+
*/
|
212
|
+
async onStop(stream, connection) {
|
213
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);
|
214
|
+
try {
|
215
|
+
if (!this.reservationStore.hasReservation(connection.remotePeer)) {
|
216
|
+
try {
|
217
|
+
this.log('dialed via relay we did not have a reservation on, start listening on that relay address');
|
218
|
+
await this.components.transportManager.listen([connection.remoteAddr.encapsulate('/p2p-circuit')]);
|
219
|
+
}
|
220
|
+
catch (err) {
|
221
|
+
// failed to refresh our hitherto unknown relay reservation but allow the connection attempt anyway
|
222
|
+
this.log.error('failed to listen on a relay peer we were dialed via but did not have a reservation on', err);
|
223
|
+
}
|
224
|
+
}
|
225
|
+
const stopStream = pbStream(stream).pb(StopMessage);
|
226
|
+
const request = await stopStream.read({
|
227
|
+
signal
|
228
|
+
});
|
229
|
+
this.log('new circuit relay v2 stop stream from %p with type %s', connection.remotePeer, request.type);
|
230
|
+
if (request?.type === undefined) {
|
231
|
+
this.log.error('type was missing from circuit v2 stop protocol request from %s', connection.remotePeer);
|
232
|
+
await stopStream.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {
|
233
|
+
signal
|
234
|
+
});
|
235
|
+
await stream.close({
|
236
|
+
signal
|
237
|
+
});
|
238
|
+
return;
|
239
|
+
}
|
240
|
+
// Validate the STOP request has the required input
|
241
|
+
if (request.type !== StopMessage.Type.CONNECT) {
|
242
|
+
this.log.error('invalid stop connect request via peer %p', connection.remotePeer);
|
243
|
+
await stopStream.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE }, {
|
244
|
+
signal
|
245
|
+
});
|
246
|
+
await stream.close({
|
247
|
+
signal
|
248
|
+
});
|
249
|
+
return;
|
250
|
+
}
|
251
|
+
if (!isValidStop(request)) {
|
252
|
+
this.log.error('invalid stop connect request via peer %p', connection.remotePeer);
|
253
|
+
await stopStream.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE }, {
|
254
|
+
signal
|
255
|
+
});
|
256
|
+
await stream.close({
|
257
|
+
signal
|
258
|
+
});
|
259
|
+
return;
|
260
|
+
}
|
261
|
+
const remotePeerId = peerIdFromMultihash(Digest.decode(request.peer.id));
|
262
|
+
if ((await this.components.connectionGater.denyInboundRelayedConnection?.(connection.remotePeer, remotePeerId)) === true) {
|
263
|
+
this.log.error('connection gater denied inbound relayed connection from %p', connection.remotePeer);
|
264
|
+
await stopStream.write({ type: StopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, {
|
265
|
+
signal
|
266
|
+
});
|
267
|
+
await stream.close({
|
268
|
+
signal
|
269
|
+
});
|
270
|
+
return;
|
271
|
+
}
|
272
|
+
this.log.trace('sending success response to %p', connection.remotePeer);
|
273
|
+
await stopStream.write({ type: StopMessage.Type.STATUS, status: Status.OK }, {
|
274
|
+
signal
|
275
|
+
});
|
276
|
+
const limits = new LimitTracker(request.limit);
|
277
|
+
const remoteAddr = connection.remoteAddr.encapsulate(`/p2p-circuit/p2p/${remotePeerId.toString()}`);
|
278
|
+
const localAddr = this.components.addressManager.getAddresses()[0];
|
279
|
+
const maConn = streamToMaConnection({
|
280
|
+
stream: stopStream.unwrap().unwrap(),
|
281
|
+
remoteAddr,
|
282
|
+
localAddr,
|
283
|
+
onDataRead: limits.onData,
|
284
|
+
onDataWrite: limits.onData,
|
285
|
+
log: stream.log.newScope('circuit-relay:connection')
|
286
|
+
});
|
287
|
+
await this.components.upgrader.upgradeInbound(maConn, {
|
288
|
+
limits: limits.getLimits(),
|
289
|
+
signal
|
290
|
+
});
|
291
|
+
maConn.log('inbound relayed connection established to %p with limits %o, over connection %s', remotePeerId, request.limit ?? 'none', connection.id);
|
292
|
+
}
|
293
|
+
finally {
|
294
|
+
signal?.clear();
|
295
|
+
}
|
296
|
+
}
|
6
297
|
}
|
7
298
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AA4DtD,MAAM,UAAU,qBAAqB,CAAE,OAAkC,EAAE;IACzE,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,41 +1,7 @@
|
|
1
1
|
import { TypedEventEmitter } from 'main-event';
|
2
|
+
import type { TransportReservationStoreComponents, TransportReservationStoreInit } from '../index.ts';
|
2
3
|
import type { Reservation } from '../pb/index.js';
|
3
|
-
import type {
|
4
|
-
import type { ConnectionManager } from '@libp2p/interface-internal';
|
5
|
-
import type { TypedEventTarget } from 'main-event';
|
6
|
-
export interface ReservationStoreComponents {
|
7
|
-
peerId: PeerId;
|
8
|
-
connectionManager: ConnectionManager;
|
9
|
-
peerStore: PeerStore;
|
10
|
-
events: TypedEventTarget<Libp2pEvents>;
|
11
|
-
logger: ComponentLogger;
|
12
|
-
metrics?: Metrics;
|
13
|
-
}
|
14
|
-
export interface ReservationStoreInit {
|
15
|
-
/**
|
16
|
-
* Multiple relays may be discovered simultaneously - to prevent listening
|
17
|
-
* on too many relays, this value controls how many to attempt to reserve a
|
18
|
-
* slot on at once. If set to more than one, we may end up listening on
|
19
|
-
* more relays than the `maxReservations` value, but on networks with poor
|
20
|
-
* connectivity the user may wish to attempt to reserve on multiple relays
|
21
|
-
* simultaneously.
|
22
|
-
*
|
23
|
-
* @default 1
|
24
|
-
*/
|
25
|
-
reservationConcurrency?: number;
|
26
|
-
/**
|
27
|
-
* Limit the number of potential relays we will dial
|
28
|
-
*
|
29
|
-
* @default 100
|
30
|
-
*/
|
31
|
-
maxReservationQueueLength?: number;
|
32
|
-
/**
|
33
|
-
* When creating a reservation it must complete within this number of ms
|
34
|
-
*
|
35
|
-
* @default 5000
|
36
|
-
*/
|
37
|
-
reservationCompletionTimeout?: number;
|
38
|
-
}
|
4
|
+
import type { PeerId, Startable } from '@libp2p/interface';
|
39
5
|
export type RelayType = 'discovered' | 'configured';
|
40
6
|
export interface DiscoveredRelayEntry {
|
41
7
|
timeout: ReturnType<typeof setTimeout>;
|
@@ -84,7 +50,7 @@ export declare class ReservationStore extends TypedEventEmitter<ReservationStore
|
|
84
50
|
private started;
|
85
51
|
private readonly log;
|
86
52
|
private relayFilter;
|
87
|
-
constructor(components:
|
53
|
+
constructor(components: TransportReservationStoreComponents, init?: TransportReservationStoreInit);
|
88
54
|
isStarted(): boolean;
|
89
55
|
start(): void;
|
90
56
|
afterStart(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAM/D,OAAO,KAAK,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAsC,MAAM,EAAa,SAAS,EAAoB,MAAM,mBAAmB,CAAA;AAc3H,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,yBAAyB,EAAE,WAAW,CAAA;IACtC,2BAA2B,EAAE,WAAW,CAAA;IACxC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAC9C,2BAA2B,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;CAC3D;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAE,YAAW,SAAS;;IAClG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAQ;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAQ;gBAEd,UAAU,EAAE,mCAAmC,EAAE,IAAI,CAAC,EAAE,6BAA6B;IAwClG,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAId,UAAU,IAAK,IAAI;IAmCnB,IAAI,IAAK,IAAI;IASb,YAAY,IAAK,MAAM;IAUvB;;;;;OAKG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0K3E,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxD,gBAAgB,CAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM;IAc3C,kBAAkB,IAAK,IAAI;CAyH5B"}
|
@@ -1,10 +1,8 @@
|
|
1
1
|
import { ListenError } from '@libp2p/interface';
|
2
2
|
import { PeerMap } from '@libp2p/peer-collections';
|
3
|
-
import { createScalableCuckooFilter } from '@libp2p/utils
|
4
|
-
import { PeerQueue } from '@libp2p/utils/peer-queue';
|
3
|
+
import { createScalableCuckooFilter, PeerQueue, pbStream } from '@libp2p/utils';
|
5
4
|
import { multiaddr } from '@multiformats/multiaddr';
|
6
5
|
import { Circuit } from '@multiformats/multiaddr-matcher';
|
7
|
-
import { pbStream } from 'it-protobuf-stream';
|
8
6
|
import { TypedEventEmitter, setMaxListeners } from 'main-event';
|
9
7
|
import { nanoid } from 'nanoid';
|
10
8
|
import { DEFAULT_MAX_RESERVATION_QUEUE_LENGTH, DEFAULT_RESERVATION_COMPLETION_TIMEOUT, DEFAULT_RESERVATION_CONCURRENCY, KEEP_ALIVE_TAG, RELAY_V2_HOP_CODEC } from '../constants.js';
|
@@ -297,7 +295,7 @@ export class ReservationStore extends TypedEventEmitter {
|
|
297
295
|
await stream.close(options);
|
298
296
|
}
|
299
297
|
}
|
300
|
-
this.log.trace('read response %
|
298
|
+
this.log.trace('read response %s', response.status);
|
301
299
|
if (response.status === Status.OK && response.reservation != null) {
|
302
300
|
// check that the returned relay has the relay address - this can be
|
303
301
|
// omitted when requesting a reservation from a go-libp2p relay we
|