@libp2p/mdns 4.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/compat/index.d.ts +3 -4
- package/dist/src/compat/index.d.ts.map +1 -1
- package/dist/src/compat/index.js +3 -7
- package/dist/src/compat/index.js.map +1 -1
- package/dist/src/compat/querier.d.ts +8 -5
- package/dist/src/compat/querier.d.ts.map +1 -1
- package/dist/src/compat/querier.js +3 -7
- package/dist/src/compat/querier.js.map +1 -1
- package/dist/src/compat/responder.d.ts +4 -5
- package/dist/src/compat/responder.d.ts.map +1 -1
- package/dist/src/compat/responder.js +5 -9
- package/dist/src/compat/responder.js.map +1 -1
- package/dist/src/index.d.ts +9 -36
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +18 -19
- package/dist/src/index.js.map +1 -1
- package/package.json +4 -5
- package/src/compat/index.ts +5 -10
- package/src/compat/querier.ts +11 -9
- package/src/compat/responder.ts +8 -11
- package/src/index.ts +30 -22
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
2
2
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery';
|
|
3
|
-
import type { Components, Initializable } from '@libp2p/components';
|
|
4
3
|
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
4
|
+
import type { MulticastDNSComponents } from '../index.js';
|
|
5
5
|
export interface GoMulticastDNSInit {
|
|
6
6
|
queryPeriod?: number;
|
|
7
7
|
queryInterval?: number;
|
|
8
8
|
}
|
|
9
|
-
export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery
|
|
9
|
+
export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
|
|
10
10
|
private _started;
|
|
11
11
|
private readonly _responder;
|
|
12
12
|
private readonly _querier;
|
|
13
|
-
constructor(options?: GoMulticastDNSInit);
|
|
13
|
+
constructor(components: MulticastDNSComponents, options?: GoMulticastDNSInit);
|
|
14
14
|
get [symbol](): true;
|
|
15
15
|
get [Symbol.toStringTag](): string;
|
|
16
|
-
init(components: Components): void;
|
|
17
16
|
isStarted(): boolean;
|
|
18
17
|
start(): Promise<void>;
|
|
19
18
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzD,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IAC5F,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAErB,UAAU,EAAE,sBAAsB,EAAE,OAAO,GAAE,kBAAuB;IAiBjF,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
|
package/dist/src/compat/index.js
CHANGED
|
@@ -4,12 +4,12 @@ import { Responder } from './responder.js';
|
|
|
4
4
|
import { Querier } from './querier.js';
|
|
5
5
|
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
6
6
|
export class GoMulticastDNS extends EventEmitter {
|
|
7
|
-
constructor(options = {}) {
|
|
7
|
+
constructor(components, options = {}) {
|
|
8
8
|
super();
|
|
9
9
|
const { queryPeriod, queryInterval } = options;
|
|
10
10
|
this._started = false;
|
|
11
|
-
this._responder = new Responder();
|
|
12
|
-
this._querier = new Querier({
|
|
11
|
+
this._responder = new Responder(components);
|
|
12
|
+
this._querier = new Querier(components, {
|
|
13
13
|
queryInterval,
|
|
14
14
|
queryPeriod
|
|
15
15
|
});
|
|
@@ -23,10 +23,6 @@ export class GoMulticastDNS extends EventEmitter {
|
|
|
23
23
|
get [Symbol.toStringTag]() {
|
|
24
24
|
return '@libp2p/go-mdns';
|
|
25
25
|
}
|
|
26
|
-
init(components) {
|
|
27
|
-
this._responder.init(components);
|
|
28
|
-
this._querier.init(components);
|
|
29
|
-
}
|
|
30
26
|
isStarted() {
|
|
31
27
|
return this._started;
|
|
32
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAQzD,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,UAAkC,EAAE,UAA8B,EAAE;QAC/E,KAAK,EAAE,CAAA;QACP,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAE9C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;YACtC,aAAa;YACb,WAAW;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -3,23 +3,26 @@ import { EventEmitter } from '@libp2p/interfaces/events';
|
|
|
3
3
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery';
|
|
4
4
|
import type { ResponsePacket } from 'multicast-dns';
|
|
5
5
|
import type { RemoteInfo } from 'dgram';
|
|
6
|
-
import { Components, Initializable } from '@libp2p/components';
|
|
7
6
|
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
7
|
+
import type { Startable } from '@libp2p/interfaces/dist/src/startable.js';
|
|
8
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
8
9
|
export interface QuerierInit {
|
|
9
10
|
queryInterval?: number;
|
|
10
11
|
queryPeriod?: number;
|
|
11
12
|
}
|
|
13
|
+
export interface QuerierComponents {
|
|
14
|
+
peerId: PeerId;
|
|
15
|
+
}
|
|
12
16
|
export interface Handle {
|
|
13
17
|
stop: () => Promise<void>;
|
|
14
18
|
}
|
|
15
|
-
export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery,
|
|
19
|
+
export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Startable {
|
|
16
20
|
private readonly _init;
|
|
17
21
|
private _handle?;
|
|
18
|
-
private components;
|
|
19
|
-
constructor(init?: QuerierInit);
|
|
22
|
+
private readonly components;
|
|
23
|
+
constructor(components: QuerierComponents, init?: QuerierInit);
|
|
20
24
|
get [symbol](): true;
|
|
21
25
|
get [Symbol.toStringTag](): string;
|
|
22
|
-
init(components: Components): void;
|
|
23
26
|
isStarted(): boolean;
|
|
24
27
|
start(): void;
|
|
25
28
|
_onResponse(event: ResponsePacket, info: RemoteInfo): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa,EAAE,SAAS;IAChG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;gBAEjC,UAAU,EAAE,iBAAiB,EAAE,IAAI,GAAE,WAAgB;IAmBlE,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAuB9C,IAAI;CAKX"}
|
|
@@ -2,15 +2,14 @@ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
|
|
|
2
2
|
import MDNS from 'multicast-dns';
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import { SERVICE_TAG_LOCAL, MULTICAST_IP, MULTICAST_PORT } from './constants.js';
|
|
5
|
-
import { Components } from '@libp2p/components';
|
|
6
5
|
import { findPeerInfoInAnswers } from './utils.js';
|
|
7
6
|
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
8
7
|
const log = logger('libp2p:mdns:compat:querier');
|
|
9
8
|
export class Querier extends EventEmitter {
|
|
10
|
-
constructor(init = {}) {
|
|
9
|
+
constructor(components, init = {}) {
|
|
11
10
|
super();
|
|
12
|
-
this.components = new Components();
|
|
13
11
|
const { queryInterval, queryPeriod } = init;
|
|
12
|
+
this.components = components;
|
|
14
13
|
this._init = {
|
|
15
14
|
// Re-query in leu of network change detection (every 60s by default)
|
|
16
15
|
queryInterval: queryInterval ?? 60000,
|
|
@@ -26,9 +25,6 @@ export class Querier extends EventEmitter {
|
|
|
26
25
|
get [Symbol.toStringTag]() {
|
|
27
26
|
return '@libp2p/go-mdns-querier';
|
|
28
27
|
}
|
|
29
|
-
init(components) {
|
|
30
|
-
this.components = components;
|
|
31
|
-
}
|
|
32
28
|
isStarted() {
|
|
33
29
|
return Boolean(this._handle);
|
|
34
30
|
}
|
|
@@ -63,7 +59,7 @@ export class Querier extends EventEmitter {
|
|
|
63
59
|
_onResponse(event, info) {
|
|
64
60
|
log.trace('received mDNS query response');
|
|
65
61
|
const answers = event.answers ?? [];
|
|
66
|
-
const peerInfo = findPeerInfoInAnswers(answers, this.components.
|
|
62
|
+
const peerInfo = findPeerInfoInAnswers(answers, this.components.peerId);
|
|
67
63
|
if (peerInfo == null) {
|
|
68
64
|
log('could not read peer data from query response');
|
|
69
65
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIhF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { QueryPacket } from 'multicast-dns';
|
|
3
3
|
import type { RemoteInfo } from 'dgram';
|
|
4
|
-
import {
|
|
5
|
-
export declare class Responder
|
|
6
|
-
private components;
|
|
4
|
+
import type { MulticastDNSComponents } from '../index.js';
|
|
5
|
+
export declare class Responder {
|
|
6
|
+
private readonly components;
|
|
7
7
|
private _mdns?;
|
|
8
|
-
constructor();
|
|
9
|
-
init(components: Components): void;
|
|
8
|
+
constructor(components: MulticastDNSComponents);
|
|
10
9
|
start(): void;
|
|
11
10
|
_onQuery(event: QueryPacket, info: RemoteInfo): void;
|
|
12
11
|
stop(): Promise<void> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responder.d.ts","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":";AACA,OAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"responder.d.ts","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":";AACA,OAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAIzD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,KAAK,CAAC,CAAmB;gBAEpB,UAAU,EAAE,sBAAsB;IAK/C,KAAK;IAKL,QAAQ,CAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IA8E9C,IAAI;CAYL"}
|
|
@@ -3,22 +3,18 @@ import MDNS from 'multicast-dns';
|
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import { SERVICE_TAG_LOCAL } from './constants.js';
|
|
5
5
|
import { protocols } from '@multiformats/multiaddr';
|
|
6
|
-
import { Components } from '@libp2p/components';
|
|
7
6
|
const log = logger('libp2p:mdns:compat:responder');
|
|
8
7
|
export class Responder {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.components = new Components();
|
|
11
|
-
this._onQuery = this._onQuery.bind(this);
|
|
12
|
-
}
|
|
13
|
-
init(components) {
|
|
8
|
+
constructor(components) {
|
|
14
9
|
this.components = components;
|
|
10
|
+
this._onQuery = this._onQuery.bind(this);
|
|
15
11
|
}
|
|
16
12
|
start() {
|
|
17
13
|
this._mdns = MDNS();
|
|
18
14
|
this._mdns.on('query', this._onQuery);
|
|
19
15
|
}
|
|
20
16
|
_onQuery(event, info) {
|
|
21
|
-
const addresses = this.components.
|
|
17
|
+
const addresses = this.components.addressManager.getAddresses().reduce((acc, addr) => {
|
|
22
18
|
addr = addr.decapsulateCode(protocols('p2p').code);
|
|
23
19
|
if (addr.isThinWaistAddress()) {
|
|
24
20
|
acc.push(addr.toOptions());
|
|
@@ -36,7 +32,7 @@ export class Responder {
|
|
|
36
32
|
return;
|
|
37
33
|
log.trace('got query', event, info);
|
|
38
34
|
const answers = [];
|
|
39
|
-
const peerServiceTagLocal = `${this.components.
|
|
35
|
+
const peerServiceTagLocal = `${this.components.peerId.toString()}.${SERVICE_TAG_LOCAL}`;
|
|
40
36
|
answers.push({
|
|
41
37
|
name: SERVICE_TAG_LOCAL,
|
|
42
38
|
type: 'PTR',
|
|
@@ -49,7 +45,7 @@ export class Responder {
|
|
|
49
45
|
type: 'TXT',
|
|
50
46
|
class: 'IN',
|
|
51
47
|
ttl: 120,
|
|
52
|
-
data: [Buffer.from(this.components.
|
|
48
|
+
data: [Buffer.from(this.components.peerId.toString())]
|
|
53
49
|
});
|
|
54
50
|
addresses.forEach(ma => {
|
|
55
51
|
if (![4, 6].includes(ma.family)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAqB,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAmB,SAAS,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAqB,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAmB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAKpE,MAAM,GAAG,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAA;AAElD,MAAM,OAAO,SAAS;IAIpB,YAAa,UAAkC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAA;QACnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAE,KAAkB,EAAE,IAAgB;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACtG,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;YAElD,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;aAC3B;YAED,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,4BAA4B;QAC5B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,GAAG,CAAC,6DAA6D,CAAC,CAAA;YAClE,OAAM;SACP;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QAEvC,8CAA8C;QAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;YAAE,OAAM;QAE9D,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEnC,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,MAAM,mBAAmB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,iBAAiB,EAAE,CAAA;QAEvF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,mBAAmB;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvD,CAAC,CAAA;QAEF,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAM;aACP;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,CAAC;oBACT,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE;iBACtB;aACF,CAAC,CAAA;YAEF,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACnB,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBACpC,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;YAChC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;YAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;SAClC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjD,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBACjC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;oBACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;iBAC5B;qBAAM;oBACL,OAAO,EAAE,CAAA;iBACV;YACH,CAAC,CAAC,CAAA;SACH;IACH,CAAC;CACF"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,46 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
import { Components, Initializable } from '@libp2p/components';
|
|
6
|
-
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
7
|
-
export interface MulticastDNSOptions {
|
|
1
|
+
import type { PeerDiscovery } from '@libp2p/interface-peer-discovery';
|
|
2
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
3
|
+
import type { AddressManager } from '@libp2p/interface-address-manager';
|
|
4
|
+
export interface MulticastDNSInit {
|
|
8
5
|
broadcast?: boolean;
|
|
9
6
|
interval?: number;
|
|
10
7
|
serviceTag?: string;
|
|
11
8
|
port?: number;
|
|
9
|
+
ip?: string;
|
|
12
10
|
compat?: boolean;
|
|
13
11
|
compatQueryPeriod?: number;
|
|
14
12
|
compatQueryInterval?: number;
|
|
15
13
|
}
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
private readonly interval;
|
|
20
|
-
private readonly serviceTag;
|
|
21
|
-
private readonly port;
|
|
22
|
-
private _queryInterval;
|
|
23
|
-
private readonly _goMdns?;
|
|
24
|
-
private components;
|
|
25
|
-
constructor(options?: MulticastDNSOptions);
|
|
26
|
-
get [symbol](): true;
|
|
27
|
-
get [Symbol.toStringTag](): string;
|
|
28
|
-
init(components: Components): void;
|
|
29
|
-
isStarted(): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Start sending queries to the LAN.
|
|
32
|
-
*
|
|
33
|
-
* @returns {void}
|
|
34
|
-
*/
|
|
35
|
-
start(): Promise<void>;
|
|
36
|
-
_onMdnsQuery(event: multicastDNS.QueryPacket): void;
|
|
37
|
-
_onMdnsResponse(event: multicastDNS.ResponsePacket): void;
|
|
38
|
-
_onPeer(evt: CustomEvent<PeerInfo>): void;
|
|
39
|
-
/**
|
|
40
|
-
* Stop sending queries to the LAN.
|
|
41
|
-
*
|
|
42
|
-
* @returns {Promise}
|
|
43
|
-
*/
|
|
44
|
-
stop(): Promise<void>;
|
|
14
|
+
export interface MulticastDNSComponents {
|
|
15
|
+
peerId: PeerId;
|
|
16
|
+
addressManager: AddressManager;
|
|
45
17
|
}
|
|
18
|
+
export declare function mdns(init?: MulticastDNSInit): (components: MulticastDNSComponents) => PeerDiscovery;
|
|
46
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,kCAAkC,CAAA;AAG1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;CAC/B;AA6ID,wBAAgB,IAAI,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,aAAa,CAExG"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,25 +3,25 @@ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
|
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import * as query from './query.js';
|
|
5
5
|
import { GoMulticastDNS } from './compat/index.js';
|
|
6
|
-
import { Components } from '@libp2p/components';
|
|
7
6
|
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
8
7
|
const log = logger('libp2p:mdns');
|
|
9
|
-
|
|
10
|
-
constructor(
|
|
8
|
+
class MulticastDNS extends EventEmitter {
|
|
9
|
+
constructor(components, init = {}) {
|
|
11
10
|
super();
|
|
12
|
-
this.components =
|
|
13
|
-
this.broadcast =
|
|
14
|
-
this.interval =
|
|
15
|
-
this.serviceTag =
|
|
16
|
-
this.
|
|
11
|
+
this.components = components;
|
|
12
|
+
this.broadcast = init.broadcast !== false;
|
|
13
|
+
this.interval = init.interval ?? (1e3 * 10);
|
|
14
|
+
this.serviceTag = init.serviceTag ?? 'ipfs.local';
|
|
15
|
+
this.ip = init.ip ?? '224.0.0.251';
|
|
16
|
+
this.port = init.port ?? 5353;
|
|
17
17
|
this._queryInterval = null;
|
|
18
18
|
this._onPeer = this._onPeer.bind(this);
|
|
19
19
|
this._onMdnsQuery = this._onMdnsQuery.bind(this);
|
|
20
20
|
this._onMdnsResponse = this._onMdnsResponse.bind(this);
|
|
21
|
-
if (
|
|
22
|
-
this._goMdns = new GoMulticastDNS({
|
|
23
|
-
queryPeriod:
|
|
24
|
-
queryInterval:
|
|
21
|
+
if (init.compat !== false) {
|
|
22
|
+
this._goMdns = new GoMulticastDNS(components, {
|
|
23
|
+
queryPeriod: init.compatQueryPeriod,
|
|
24
|
+
queryInterval: init.compatQueryInterval
|
|
25
25
|
});
|
|
26
26
|
this._goMdns.addEventListener('peer', this._onPeer);
|
|
27
27
|
}
|
|
@@ -32,10 +32,6 @@ export class MulticastDNS extends EventEmitter {
|
|
|
32
32
|
get [Symbol.toStringTag]() {
|
|
33
33
|
return '@libp2p/mdns';
|
|
34
34
|
}
|
|
35
|
-
init(components) {
|
|
36
|
-
this.components = components;
|
|
37
|
-
this._goMdns?.init(components);
|
|
38
|
-
}
|
|
39
35
|
isStarted() {
|
|
40
36
|
return Boolean(this.mdns);
|
|
41
37
|
}
|
|
@@ -48,7 +44,7 @@ export class MulticastDNS extends EventEmitter {
|
|
|
48
44
|
if (this.mdns != null) {
|
|
49
45
|
return;
|
|
50
46
|
}
|
|
51
|
-
this.mdns = multicastDNS({ port: this.port });
|
|
47
|
+
this.mdns = multicastDNS({ port: this.port, ip: this.ip });
|
|
52
48
|
this.mdns.on('query', this._onMdnsQuery);
|
|
53
49
|
this.mdns.on('response', this._onMdnsResponse);
|
|
54
50
|
this._queryInterval = query.queryLAN(this.mdns, this.serviceTag, this.interval);
|
|
@@ -61,12 +57,12 @@ export class MulticastDNS extends EventEmitter {
|
|
|
61
57
|
return;
|
|
62
58
|
}
|
|
63
59
|
log.trace('received incoming mDNS query');
|
|
64
|
-
query.gotQuery(event, this.mdns, this.components.
|
|
60
|
+
query.gotQuery(event, this.mdns, this.components.peerId, this.components.addressManager.getAddresses(), this.serviceTag, this.broadcast);
|
|
65
61
|
}
|
|
66
62
|
_onMdnsResponse(event) {
|
|
67
63
|
log.trace('received mDNS query response');
|
|
68
64
|
try {
|
|
69
|
-
const foundPeer = query.gotResponse(event, this.components.
|
|
65
|
+
const foundPeer = query.gotResponse(event, this.components.peerId, this.serviceTag);
|
|
70
66
|
if (foundPeer != null) {
|
|
71
67
|
log('discovered peer in mDNS qeury response %p', foundPeer.id);
|
|
72
68
|
this.dispatchEvent(new CustomEvent('peer', {
|
|
@@ -116,6 +112,9 @@ export class MulticastDNS extends EventEmitter {
|
|
|
116
112
|
this.mdns = undefined;
|
|
117
113
|
}
|
|
118
114
|
}
|
|
115
|
+
export function mdns(init = {}) {
|
|
116
|
+
return (components) => new MulticastDNS(components, init);
|
|
117
|
+
}
|
|
119
118
|
/* for reference
|
|
120
119
|
|
|
121
120
|
[ { name: 'discovery.ipfs.io.local',
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/mdns",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Node.js libp2p mDNS discovery implementation for peer discovery",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-mdns#readme",
|
|
@@ -134,7 +134,6 @@
|
|
|
134
134
|
"release": "aegir release"
|
|
135
135
|
},
|
|
136
136
|
"dependencies": {
|
|
137
|
-
"@libp2p/components": "^3.0.0",
|
|
138
137
|
"@libp2p/interface-peer-discovery": "^1.0.1",
|
|
139
138
|
"@libp2p/interface-peer-id": "^1.0.4",
|
|
140
139
|
"@libp2p/interface-peer-info": "^1.0.3",
|
|
@@ -144,11 +143,11 @@
|
|
|
144
143
|
"@multiformats/multiaddr": "^11.0.0",
|
|
145
144
|
"@types/multicast-dns": "^7.2.1",
|
|
146
145
|
"multicast-dns": "^7.2.0",
|
|
147
|
-
"multiformats": "^
|
|
146
|
+
"multiformats": "^10.0.0"
|
|
148
147
|
},
|
|
149
148
|
"devDependencies": {
|
|
150
|
-
"@libp2p/interface-address-manager": "^
|
|
151
|
-
"@libp2p/interface-peer-discovery-compliance-tests": "^
|
|
149
|
+
"@libp2p/interface-address-manager": "^2.0.0",
|
|
150
|
+
"@libp2p/interface-peer-discovery-compliance-tests": "^2.0.0",
|
|
152
151
|
"@libp2p/peer-id-factory": "^1.0.18",
|
|
153
152
|
"aegir": "^37.5.3",
|
|
154
153
|
"delay": "^5.0.0",
|
package/src/compat/index.ts
CHANGED
|
@@ -3,27 +3,27 @@ import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events'
|
|
|
3
3
|
import { Responder } from './responder.js'
|
|
4
4
|
import { Querier } from './querier.js'
|
|
5
5
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery'
|
|
6
|
-
import type { Components, Initializable } from '@libp2p/components'
|
|
7
6
|
import { symbol } from '@libp2p/interface-peer-discovery'
|
|
7
|
+
import type { MulticastDNSComponents } from '../index.js'
|
|
8
8
|
|
|
9
9
|
export interface GoMulticastDNSInit {
|
|
10
10
|
queryPeriod?: number
|
|
11
11
|
queryInterval?: number
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery
|
|
14
|
+
export class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
|
|
15
15
|
private _started: boolean
|
|
16
16
|
private readonly _responder: Responder
|
|
17
17
|
private readonly _querier: Querier
|
|
18
18
|
|
|
19
|
-
constructor (options: GoMulticastDNSInit = {}) {
|
|
19
|
+
constructor (components: MulticastDNSComponents, options: GoMulticastDNSInit = {}) {
|
|
20
20
|
super()
|
|
21
21
|
const { queryPeriod, queryInterval } = options
|
|
22
22
|
|
|
23
23
|
this._started = false
|
|
24
24
|
|
|
25
|
-
this._responder = new Responder()
|
|
26
|
-
this._querier = new Querier({
|
|
25
|
+
this._responder = new Responder(components)
|
|
26
|
+
this._querier = new Querier(components, {
|
|
27
27
|
queryInterval,
|
|
28
28
|
queryPeriod
|
|
29
29
|
})
|
|
@@ -41,11 +41,6 @@ export class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements
|
|
|
41
41
|
return '@libp2p/go-mdns'
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
init (components: Components): void {
|
|
45
|
-
this._responder.init(components)
|
|
46
|
-
this._querier.init(components)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
44
|
isStarted () {
|
|
50
45
|
return this._started
|
|
51
46
|
}
|
package/src/compat/querier.ts
CHANGED
|
@@ -5,9 +5,10 @@ import { SERVICE_TAG_LOCAL, MULTICAST_IP, MULTICAST_PORT } from './constants.js'
|
|
|
5
5
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery'
|
|
6
6
|
import type { ResponsePacket } from 'multicast-dns'
|
|
7
7
|
import type { RemoteInfo } from 'dgram'
|
|
8
|
-
import { Components, Initializable } from '@libp2p/components'
|
|
9
8
|
import { findPeerInfoInAnswers } from './utils.js'
|
|
10
9
|
import { symbol } from '@libp2p/interface-peer-discovery'
|
|
10
|
+
import type { Startable } from '@libp2p/interfaces/dist/src/startable.js'
|
|
11
|
+
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
11
12
|
|
|
12
13
|
const log = logger('libp2p:mdns:compat:querier')
|
|
13
14
|
|
|
@@ -16,20 +17,25 @@ export interface QuerierInit {
|
|
|
16
17
|
queryPeriod?: number
|
|
17
18
|
}
|
|
18
19
|
|
|
20
|
+
export interface QuerierComponents {
|
|
21
|
+
peerId: PeerId
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
export interface Handle {
|
|
20
25
|
stop: () => Promise<void>
|
|
21
26
|
}
|
|
22
27
|
|
|
23
|
-
export class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery,
|
|
28
|
+
export class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Startable {
|
|
24
29
|
private readonly _init: Required<QuerierInit>
|
|
25
30
|
private _handle?: Handle
|
|
26
|
-
private components:
|
|
31
|
+
private readonly components: QuerierComponents
|
|
27
32
|
|
|
28
|
-
constructor (init: QuerierInit = {}) {
|
|
33
|
+
constructor (components: QuerierComponents, init: QuerierInit = {}) {
|
|
29
34
|
super()
|
|
30
35
|
|
|
31
36
|
const { queryInterval, queryPeriod } = init
|
|
32
37
|
|
|
38
|
+
this.components = components
|
|
33
39
|
this._init = {
|
|
34
40
|
// Re-query in leu of network change detection (every 60s by default)
|
|
35
41
|
queryInterval: queryInterval ?? 60000,
|
|
@@ -51,10 +57,6 @@ export class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDi
|
|
|
51
57
|
return '@libp2p/go-mdns-querier'
|
|
52
58
|
}
|
|
53
59
|
|
|
54
|
-
init (components: Components): void {
|
|
55
|
-
this.components = components
|
|
56
|
-
}
|
|
57
|
-
|
|
58
60
|
isStarted () {
|
|
59
61
|
return Boolean(this._handle)
|
|
60
62
|
}
|
|
@@ -95,7 +97,7 @@ export class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDi
|
|
|
95
97
|
log.trace('received mDNS query response')
|
|
96
98
|
const answers = event.answers ?? []
|
|
97
99
|
|
|
98
|
-
const peerInfo = findPeerInfoInAnswers(answers, this.components.
|
|
100
|
+
const peerInfo = findPeerInfoInAnswers(answers, this.components.peerId)
|
|
99
101
|
|
|
100
102
|
if (peerInfo == null) {
|
|
101
103
|
log('could not read peer data from query response')
|
package/src/compat/responder.ts
CHANGED
|
@@ -5,20 +5,17 @@ import { SERVICE_TAG_LOCAL } from './constants.js'
|
|
|
5
5
|
import { MultiaddrObject, protocols } from '@multiformats/multiaddr'
|
|
6
6
|
import type { RemoteInfo } from 'dgram'
|
|
7
7
|
import type { Answer } from 'dns-packet'
|
|
8
|
-
import {
|
|
8
|
+
import type { MulticastDNSComponents } from '../index.js'
|
|
9
9
|
|
|
10
10
|
const log = logger('libp2p:mdns:compat:responder')
|
|
11
11
|
|
|
12
|
-
export class Responder
|
|
13
|
-
private components:
|
|
12
|
+
export class Responder {
|
|
13
|
+
private readonly components: MulticastDNSComponents
|
|
14
14
|
private _mdns?: MDNS.MulticastDNS
|
|
15
15
|
|
|
16
|
-
constructor () {
|
|
17
|
-
this._onQuery = this._onQuery.bind(this)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
init (components: Components): void {
|
|
16
|
+
constructor (components: MulticastDNSComponents) {
|
|
21
17
|
this.components = components
|
|
18
|
+
this._onQuery = this._onQuery.bind(this)
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
start () {
|
|
@@ -27,7 +24,7 @@ export class Responder implements Initializable {
|
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
_onQuery (event: QueryPacket, info: RemoteInfo) {
|
|
30
|
-
const addresses = this.components.
|
|
27
|
+
const addresses = this.components.addressManager.getAddresses().reduce<MultiaddrObject[]>((acc, addr) => {
|
|
31
28
|
addr = addr.decapsulateCode(protocols('p2p').code)
|
|
32
29
|
|
|
33
30
|
if (addr.isThinWaistAddress()) {
|
|
@@ -51,7 +48,7 @@ export class Responder implements Initializable {
|
|
|
51
48
|
log.trace('got query', event, info)
|
|
52
49
|
|
|
53
50
|
const answers: Answer[] = []
|
|
54
|
-
const peerServiceTagLocal = `${this.components.
|
|
51
|
+
const peerServiceTagLocal = `${this.components.peerId.toString()}.${SERVICE_TAG_LOCAL}`
|
|
55
52
|
|
|
56
53
|
answers.push({
|
|
57
54
|
name: SERVICE_TAG_LOCAL,
|
|
@@ -66,7 +63,7 @@ export class Responder implements Initializable {
|
|
|
66
63
|
type: 'TXT',
|
|
67
64
|
class: 'IN',
|
|
68
65
|
ttl: 120,
|
|
69
|
-
data: [Buffer.from(this.components.
|
|
66
|
+
data: [Buffer.from(this.components.peerId.toString())]
|
|
70
67
|
})
|
|
71
68
|
|
|
72
69
|
addresses.forEach(ma => {
|
package/src/index.ts
CHANGED
|
@@ -5,48 +5,58 @@ import * as query from './query.js'
|
|
|
5
5
|
import { GoMulticastDNS } from './compat/index.js'
|
|
6
6
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery'
|
|
7
7
|
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
|
8
|
-
import { Components, Initializable } from '@libp2p/components'
|
|
9
8
|
import { symbol } from '@libp2p/interface-peer-discovery'
|
|
9
|
+
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
10
|
+
import type { AddressManager } from '@libp2p/interface-address-manager'
|
|
10
11
|
|
|
11
12
|
const log = logger('libp2p:mdns')
|
|
12
13
|
|
|
13
|
-
export interface
|
|
14
|
+
export interface MulticastDNSInit {
|
|
14
15
|
broadcast?: boolean
|
|
15
16
|
interval?: number
|
|
16
17
|
serviceTag?: string
|
|
17
18
|
port?: number
|
|
19
|
+
ip?: string
|
|
18
20
|
compat?: boolean
|
|
19
21
|
compatQueryPeriod?: number
|
|
20
22
|
compatQueryInterval?: number
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
export
|
|
25
|
+
export interface MulticastDNSComponents {
|
|
26
|
+
peerId: PeerId
|
|
27
|
+
addressManager: AddressManager
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
|
|
24
31
|
public mdns?: multicastDNS.MulticastDNS
|
|
25
32
|
|
|
26
33
|
private readonly broadcast: boolean
|
|
27
34
|
private readonly interval: number
|
|
28
35
|
private readonly serviceTag: string
|
|
29
36
|
private readonly port: number
|
|
37
|
+
private readonly ip: string
|
|
30
38
|
private _queryInterval: ReturnType<typeof setInterval> | null
|
|
31
39
|
private readonly _goMdns?: GoMulticastDNS
|
|
32
|
-
private components:
|
|
40
|
+
private readonly components: MulticastDNSComponents
|
|
33
41
|
|
|
34
|
-
constructor (
|
|
42
|
+
constructor (components: MulticastDNSComponents, init: MulticastDNSInit = {}) {
|
|
35
43
|
super()
|
|
36
44
|
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
45
|
+
this.components = components
|
|
46
|
+
this.broadcast = init.broadcast !== false
|
|
47
|
+
this.interval = init.interval ?? (1e3 * 10)
|
|
48
|
+
this.serviceTag = init.serviceTag ?? 'ipfs.local'
|
|
49
|
+
this.ip = init.ip ?? '224.0.0.251'
|
|
50
|
+
this.port = init.port ?? 5353
|
|
41
51
|
this._queryInterval = null
|
|
42
52
|
this._onPeer = this._onPeer.bind(this)
|
|
43
53
|
this._onMdnsQuery = this._onMdnsQuery.bind(this)
|
|
44
54
|
this._onMdnsResponse = this._onMdnsResponse.bind(this)
|
|
45
55
|
|
|
46
|
-
if (
|
|
47
|
-
this._goMdns = new GoMulticastDNS({
|
|
48
|
-
queryPeriod:
|
|
49
|
-
queryInterval:
|
|
56
|
+
if (init.compat !== false) {
|
|
57
|
+
this._goMdns = new GoMulticastDNS(components, {
|
|
58
|
+
queryPeriod: init.compatQueryPeriod,
|
|
59
|
+
queryInterval: init.compatQueryInterval
|
|
50
60
|
})
|
|
51
61
|
this._goMdns.addEventListener('peer', this._onPeer)
|
|
52
62
|
}
|
|
@@ -60,12 +70,6 @@ export class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements P
|
|
|
60
70
|
return '@libp2p/mdns'
|
|
61
71
|
}
|
|
62
72
|
|
|
63
|
-
init (components: Components): void {
|
|
64
|
-
this.components = components
|
|
65
|
-
|
|
66
|
-
this._goMdns?.init(components)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
73
|
isStarted () {
|
|
70
74
|
return Boolean(this.mdns)
|
|
71
75
|
}
|
|
@@ -80,7 +84,7 @@ export class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements P
|
|
|
80
84
|
return
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
this.mdns = multicastDNS({ port: this.port })
|
|
87
|
+
this.mdns = multicastDNS({ port: this.port, ip: this.ip })
|
|
84
88
|
this.mdns.on('query', this._onMdnsQuery)
|
|
85
89
|
this.mdns.on('response', this._onMdnsResponse)
|
|
86
90
|
|
|
@@ -97,14 +101,14 @@ export class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements P
|
|
|
97
101
|
}
|
|
98
102
|
|
|
99
103
|
log.trace('received incoming mDNS query')
|
|
100
|
-
query.gotQuery(event, this.mdns, this.components.
|
|
104
|
+
query.gotQuery(event, this.mdns, this.components.peerId, this.components.addressManager.getAddresses(), this.serviceTag, this.broadcast)
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
_onMdnsResponse (event: multicastDNS.ResponsePacket) {
|
|
104
108
|
log.trace('received mDNS query response')
|
|
105
109
|
|
|
106
110
|
try {
|
|
107
|
-
const foundPeer = query.gotResponse(event, this.components.
|
|
111
|
+
const foundPeer = query.gotResponse(event, this.components.peerId, this.serviceTag)
|
|
108
112
|
|
|
109
113
|
if (foundPeer != null) {
|
|
110
114
|
log('discovered peer in mDNS qeury response %p', foundPeer.id)
|
|
@@ -162,6 +166,10 @@ export class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements P
|
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
|
|
169
|
+
export function mdns (init: MulticastDNSInit = {}): (components: MulticastDNSComponents) => PeerDiscovery {
|
|
170
|
+
return (components: MulticastDNSComponents) => new MulticastDNS(components, init)
|
|
171
|
+
}
|
|
172
|
+
|
|
165
173
|
/* for reference
|
|
166
174
|
|
|
167
175
|
[ { name: 'discovery.ipfs.io.local',
|