@libp2p/mdns 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,12 +14,12 @@
14
14
  ## Usage
15
15
 
16
16
  ```JavaScript
17
- const MDNS = require('libp2p-mdns')
17
+ import { MDNS } from '@libp2p/mdns'
18
18
 
19
19
  const mdns = new MDNS(options)
20
20
 
21
21
  mdns.on('peer', (peerData) => {
22
- console.log('Found a peer in the local network', peerData.id.toString(base58btc), peerData.multiaddrs)
22
+ console.log('Found a peer in the local network', peerData.id.toString(), peerData.multiaddrs)
23
23
  })
24
24
 
25
25
  // Broadcast for 20 seconds
@@ -1,17 +1,16 @@
1
1
  import { EventEmitter } from '@libp2p/interfaces';
2
- import type { Multiaddr } from '@multiformats/multiaddr';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
2
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
- export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
3
+ import type { Components, Initializable } from '@libp2p/interfaces/components';
4
+ export interface GoMulticastDNSInit {
5
+ queryPeriod?: number;
6
+ queryInterval?: number;
7
+ }
8
+ export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
6
9
  private _started;
7
10
  private readonly _responder;
8
11
  private readonly _querier;
9
- constructor(options: {
10
- peerId: PeerId;
11
- multiaddrs: Multiaddr[];
12
- queryPeriod?: number;
13
- queryInterval?: number;
14
- });
12
+ constructor(options?: GoMulticastDNSInit);
13
+ init(components: Components): void;
15
14
  isStarted(): boolean;
16
15
  start(): Promise<void>;
17
16
  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,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAE3F,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,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAqB/G,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE9E,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,EAAE,aAAa;IAC3G,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAErB,OAAO,GAAE,kBAAuB;IAiB7C,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAKnC,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
@@ -3,16 +3,12 @@ import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
3
3
  import { Responder } from './responder.js';
4
4
  import { Querier } from './querier.js';
5
5
  export class GoMulticastDNS extends EventEmitter {
6
- constructor(options) {
6
+ constructor(options = {}) {
7
7
  super();
8
- const { peerId, multiaddrs, queryPeriod, queryInterval } = options;
8
+ const { queryPeriod, queryInterval } = options;
9
9
  this._started = false;
10
- this._responder = new Responder({
11
- peerId,
12
- multiaddrs
13
- });
10
+ this._responder = new Responder();
14
11
  this._querier = new Querier({
15
- peerId,
16
12
  queryInterval,
17
13
  queryPeriod
18
14
  });
@@ -20,6 +16,10 @@ export class GoMulticastDNS extends EventEmitter {
20
16
  this.dispatchEvent(new CustomEvent('peer', { detail: evt.detail }));
21
17
  });
22
18
  }
19
+ init(components) {
20
+ this._responder.init(components);
21
+ this._querier.init(components);
22
+ }
23
23
  isStarted() {
24
24
  return this._started;
25
25
  }
@@ -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,oBAAoB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAKtC,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,OAAkG;QAC7G,KAAK,EAAE,CAAA;QACP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAElE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC9B,MAAM;YACN,UAAU;SACX,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC;YAC1B,MAAM;YACN,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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAStC,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,UAA8B,EAAE;QAC3C,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,EAAE,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC;YAC1B,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,CAAE,UAAsB;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChC,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"}
@@ -1,22 +1,22 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from '@libp2p/interfaces';
3
- import { PeerId } from '@libp2p/peer-id';
4
3
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
4
  import type { ResponsePacket } from 'multicast-dns';
6
5
  import type { RemoteInfo } from 'dgram';
7
- export interface QuerierOptions {
8
- peerId: PeerId;
6
+ import { Components, Initializable } from '@libp2p/interfaces/components';
7
+ export interface QuerierInit {
9
8
  queryInterval?: number;
10
9
  queryPeriod?: number;
11
10
  }
12
11
  export interface Handle {
13
12
  stop: () => Promise<void>;
14
13
  }
15
- export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
16
- private readonly _peerIdStr;
17
- private readonly _options;
14
+ export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
15
+ private readonly _init;
18
16
  private _handle?;
19
- constructor(options: QuerierOptions);
17
+ private components;
18
+ constructor(init?: QuerierInit);
19
+ init(components: Components): void;
20
20
  isStarted(): boolean;
21
21
  start(): void;
22
22
  _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,oBAAoB,CAAA;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIvC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IACrF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEX,OAAO,EAAE,cAAc;IAyBpC,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAoE9C,IAAI;CAKX"}
1
+ {"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAKzE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;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,aAAa;IACpG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,UAAU,CAA+B;gBAEpC,IAAI,GAAE,WAAgB;IAkBnC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAuB9C,IAAI;CAKX"}
@@ -1,21 +1,16 @@
1
- import { EventEmitter } from '@libp2p/interfaces';
1
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces';
2
2
  import MDNS from 'multicast-dns';
3
- import { Multiaddr } from '@multiformats/multiaddr';
4
- import { PeerId } from '@libp2p/peer-id';
5
3
  import { logger } from '@libp2p/logger';
6
4
  import { SERVICE_TAG_LOCAL, MULTICAST_IP, MULTICAST_PORT } from './constants.js';
7
- import { base58btc } from 'multiformats/bases/base58';
5
+ import { Components } from '@libp2p/interfaces/components';
6
+ import { findPeerInfoInAnswers } from './utils.js';
8
7
  const log = logger('libp2p:mdns:compat:querier');
9
8
  export class Querier extends EventEmitter {
10
- constructor(options) {
9
+ constructor(init = {}) {
11
10
  super();
12
- const { peerId, queryInterval, queryPeriod } = options;
13
- if (peerId == null) {
14
- throw new Error('missing peerId parameter');
15
- }
16
- this._peerIdStr = peerId.toString(base58btc);
17
- this._options = {
18
- peerId,
11
+ this.components = new Components();
12
+ const { queryInterval, queryPeriod } = init;
13
+ this._init = {
19
14
  // Re-query in leu of network change detection (every 60s by default)
20
15
  queryInterval: queryInterval ?? 60000,
21
16
  // Time for which the MDNS server will stay alive waiting for responses
@@ -24,6 +19,9 @@ export class Querier extends EventEmitter {
24
19
  };
25
20
  this._onResponse = this._onResponse.bind(this);
26
21
  }
22
+ init(components) {
23
+ this.components = components;
24
+ }
27
25
  isStarted() {
28
26
  return Boolean(this._handle);
29
27
  }
@@ -51,67 +49,25 @@ export class Querier extends EventEmitter {
51
49
  }
52
50
  };
53
51
  }, {
54
- period: this._options.queryPeriod,
55
- interval: this._options.queryInterval
52
+ period: this._init.queryPeriod,
53
+ interval: this._init.queryInterval
56
54
  });
57
55
  }
58
56
  _onResponse(event, info) {
57
+ log.trace('received mDNS query response');
59
58
  const answers = event.answers ?? [];
60
- const ptrRecord = answers.find(a => a.type === 'PTR' && a.name === SERVICE_TAG_LOCAL);
61
- // Only deal with responses for our service tag
62
- if (ptrRecord == null)
59
+ const peerInfo = findPeerInfoInAnswers(answers, this.components.getPeerId());
60
+ if (peerInfo == null) {
61
+ log('could not read peer data from query response');
63
62
  return;
64
- log('got response', event, info);
65
- const txtRecord = answers.find(a => a.type === 'TXT');
66
- if (txtRecord == null || txtRecord.type !== 'TXT') {
67
- return log('missing TXT record in response');
68
- }
69
- let peerIdStr;
70
- try {
71
- peerIdStr = txtRecord.data[0].toString();
72
- }
73
- catch (err) {
74
- return log('failed to extract peer ID from TXT record data', txtRecord, err);
75
- }
76
- if (this._peerIdStr === peerIdStr) {
77
- return log('ignoring reply to myself');
78
- }
79
- let peerId;
80
- try {
81
- peerId = PeerId.fromString(peerIdStr);
82
63
  }
83
- catch (err) {
84
- return log('failed to create peer ID from TXT record data', peerIdStr, err);
85
- }
86
- const srvRecord = answers.find(a => a.type === 'SRV');
87
- if (srvRecord == null || srvRecord.type !== 'SRV') {
88
- return log('missing SRV record in response');
64
+ if (peerInfo.multiaddrs.length === 0) {
65
+ log('could not parse multiaddrs from mDNS response');
66
+ return;
89
67
  }
90
- log('peer found', peerIdStr);
91
- const { port } = srvRecord.data ?? {};
92
- const protos = { A: 'ip4', AAAA: 'ip6' };
93
- const multiaddrs = answers
94
- .filter(a => ['A', 'AAAA'].includes(a.type))
95
- .reduce((addrs, a) => {
96
- if (a.type !== 'A' && a.type !== 'AAAA') {
97
- return addrs;
98
- }
99
- const maStr = `/${protos[a.type]}/${a.data}/tcp/${port}`;
100
- try {
101
- addrs.push(new Multiaddr(maStr));
102
- log(maStr);
103
- }
104
- catch (err) {
105
- log(`failed to create multiaddr from ${a.type} record data`, maStr, port, err);
106
- }
107
- return addrs;
108
- }, []);
68
+ log('discovered peer in mDNS qeury response %p', peerInfo.id);
109
69
  this.dispatchEvent(new CustomEvent('peer', {
110
- detail: {
111
- id: peerId,
112
- multiaddrs,
113
- protcols: []
114
- }
70
+ detail: peerInfo
115
71
  }));
116
72
  }
117
73
  async stop() {
@@ -1 +1 @@
1
- {"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  import { QueryPacket } from 'multicast-dns';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
- import type { Multiaddr } from '@multiformats/multiaddr';
5
3
  import type { RemoteInfo } from 'dgram';
6
- export interface ResponderOptions {
7
- peerId: PeerId;
8
- multiaddrs: Multiaddr[];
9
- }
10
- export declare class Responder {
11
- private readonly _peerIdStr;
12
- private readonly _multiaddrs;
4
+ import { Components, Initializable } from '@libp2p/interfaces/components';
5
+ export declare class Responder implements Initializable {
6
+ private components;
13
7
  private _mdns?;
14
- constructor(options: ResponderOptions);
8
+ constructor();
9
+ init(components: Components): void;
15
10
  start(): void;
16
11
  _onQuery(event: QueryPacket, info: RemoteInfo): void;
17
12
  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;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAKvC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,KAAK,CAAC,CAAmB;gBAEpB,OAAO,EAAE,gBAAgB;IAYtC,KAAK;IAKL,QAAQ,CAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IAyE9C,IAAI;CAYL"}
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,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE,qBAAa,SAAU,YAAW,aAAa;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,KAAK,CAAC,CAAmB;;IAMjC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,KAAK;IAKL,QAAQ,CAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IA8E9C,IAAI;CAYL"}
@@ -2,24 +2,24 @@ import OS from 'os';
2
2
  import MDNS from 'multicast-dns';
3
3
  import { logger } from '@libp2p/logger';
4
4
  import { SERVICE_TAG_LOCAL } from './constants.js';
5
- import { base58btc } from 'multiformats/bases/base58';
5
+ import { protocols } from '@multiformats/multiaddr';
6
+ import { Components } from '@libp2p/interfaces/components';
6
7
  const log = logger('libp2p:mdns:compat:responder');
7
8
  export class Responder {
8
- constructor(options) {
9
- const { peerId, multiaddrs } = options;
10
- if (peerId == null) {
11
- throw new Error('missing peerId parameter');
12
- }
13
- this._peerIdStr = peerId.toString(base58btc);
14
- this._multiaddrs = multiaddrs;
9
+ constructor() {
10
+ this.components = new Components();
15
11
  this._onQuery = this._onQuery.bind(this);
16
12
  }
13
+ init(components) {
14
+ this.components = components;
15
+ }
17
16
  start() {
18
17
  this._mdns = MDNS();
19
18
  this._mdns.on('query', this._onQuery);
20
19
  }
21
20
  _onQuery(event, info) {
22
- const addresses = this._multiaddrs.reduce((acc, addr) => {
21
+ const addresses = this.components.getAddressManager().getAddresses().reduce((acc, addr) => {
22
+ addr = addr.decapsulateCode(protocols('p2p').code);
23
23
  if (addr.isThinWaistAddress()) {
24
24
  acc.push(addr.toOptions());
25
25
  }
@@ -27,15 +27,16 @@ export class Responder {
27
27
  }, []);
28
28
  // Only announce TCP for now
29
29
  if (addresses.length === 0) {
30
+ log('no tcp addresses configured so cannot respond to mDNS query');
30
31
  return;
31
32
  }
32
33
  const questions = event.questions ?? [];
33
34
  // Only respond to queries for our service tag
34
35
  if (!questions.some(q => q.name === SERVICE_TAG_LOCAL))
35
36
  return;
36
- log('got query', event, info);
37
+ log.trace('got query', event, info);
37
38
  const answers = [];
38
- const peerServiceTagLocal = `${this._peerIdStr}.${SERVICE_TAG_LOCAL}`;
39
+ const peerServiceTagLocal = `${this.components.getPeerId().toString()}.${SERVICE_TAG_LOCAL}`;
39
40
  answers.push({
40
41
  name: SERVICE_TAG_LOCAL,
41
42
  type: 'PTR',
@@ -43,40 +44,40 @@ export class Responder {
43
44
  ttl: 120,
44
45
  data: peerServiceTagLocal
45
46
  });
46
- // Only announce TCP multiaddrs for now
47
- const port = addresses[0].port;
48
- answers.push({
49
- name: peerServiceTagLocal,
50
- type: 'SRV',
51
- class: 'IN',
52
- ttl: 120,
53
- data: {
54
- priority: 10,
55
- weight: 1,
56
- port,
57
- target: OS.hostname()
58
- }
59
- });
60
47
  answers.push({
61
48
  name: peerServiceTagLocal,
62
49
  type: 'TXT',
63
50
  class: 'IN',
64
51
  ttl: 120,
65
- data: [Buffer.from(this._peerIdStr)]
52
+ data: [Buffer.from(this.components.getPeerId().toString())]
66
53
  });
67
- addresses.forEach((ma) => {
68
- if ([4, 6].includes(ma.family)) {
69
- answers.push({
70
- name: OS.hostname(),
71
- type: ma.family === 4 ? 'A' : 'AAAA',
72
- class: 'IN',
73
- ttl: 120,
74
- data: ma.host
75
- });
54
+ addresses.forEach(ma => {
55
+ if (![4, 6].includes(ma.family)) {
56
+ return;
76
57
  }
58
+ answers.push({
59
+ name: peerServiceTagLocal,
60
+ type: 'SRV',
61
+ class: 'IN',
62
+ ttl: 120,
63
+ data: {
64
+ priority: 10,
65
+ weight: 1,
66
+ port: ma.port,
67
+ target: OS.hostname()
68
+ }
69
+ });
70
+ answers.push({
71
+ name: OS.hostname(),
72
+ type: ma.family === 4 ? 'A' : 'AAAA',
73
+ class: 'IN',
74
+ ttl: 120,
75
+ data: ma.host
76
+ });
77
77
  });
78
78
  if (this._mdns != null) {
79
- log('responding to query', answers);
79
+ log.trace('responding to query');
80
+ log.trace('query answers', answers);
80
81
  this._mdns.respond(answers, info);
81
82
  }
82
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info';
2
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
3
+ import type { Answer } from 'dns-packet';
4
+ export declare function findPeerInfoInAnswers(answers: Answer[], ourPeerId: PeerId): PeerInfo | undefined;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/compat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAIxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKxC,wBAAgB,qBAAqB,CAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAsEjG"}
@@ -0,0 +1,70 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import { peerIdFromString } from '@libp2p/peer-id';
3
+ import { Multiaddr } from '@multiformats/multiaddr';
4
+ import { SERVICE_TAG_LOCAL } from './constants.js';
5
+ const log = logger('libp2p:mdns:compat:utils');
6
+ export function findPeerInfoInAnswers(answers, ourPeerId) {
7
+ const ptrRecord = answers.find(a => a.type === 'PTR' && a.name === SERVICE_TAG_LOCAL);
8
+ // Only deal with responses for our service tag
9
+ if (ptrRecord == null) {
10
+ return;
11
+ }
12
+ log.trace('got response', SERVICE_TAG_LOCAL);
13
+ const txtRecord = answers.find(a => a.type === 'TXT');
14
+ if (txtRecord == null || txtRecord.type !== 'TXT') {
15
+ log('missing TXT record in response');
16
+ return;
17
+ }
18
+ let peerIdStr;
19
+ try {
20
+ peerIdStr = txtRecord.data[0].toString();
21
+ }
22
+ catch (err) {
23
+ log('failed to extract peer ID from TXT record data', txtRecord, err);
24
+ return;
25
+ }
26
+ let peerId;
27
+ try {
28
+ peerId = peerIdFromString(peerIdStr);
29
+ }
30
+ catch (err) {
31
+ log('failed to create peer ID from TXT record data', peerIdStr, err);
32
+ return;
33
+ }
34
+ if (ourPeerId.equals(peerId)) {
35
+ log('ignoring reply to myself');
36
+ return;
37
+ }
38
+ const multiaddrs = [];
39
+ const hosts = {
40
+ A: {},
41
+ AAAA: {}
42
+ };
43
+ answers.forEach(answer => {
44
+ if (answer.type === 'A') {
45
+ hosts.A[answer.name] = answer.data;
46
+ }
47
+ if (answer.type === 'AAAA') {
48
+ hosts.AAAA[answer.name] = answer.data;
49
+ }
50
+ });
51
+ answers.forEach(answer => {
52
+ if (answer.type === 'SRV') {
53
+ if (hosts.A[answer.data.target] != null) {
54
+ multiaddrs.push(new Multiaddr(`/ip4/${hosts.A[answer.data.target]}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
55
+ }
56
+ else if (hosts.AAAA[answer.data.target] != null) {
57
+ multiaddrs.push(new Multiaddr(`/ip6/${hosts.AAAA[answer.data.target]}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
58
+ }
59
+ else {
60
+ multiaddrs.push(new Multiaddr(`/dnsaddr/${answer.data.target}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
61
+ }
62
+ }
63
+ });
64
+ return {
65
+ id: peerId,
66
+ multiaddrs,
67
+ protocols: []
68
+ };
69
+ }
70
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/compat/utils.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,29 @@
1
1
  import multicastDNS from 'multicast-dns';
2
2
  import { EventEmitter } from '@libp2p/interfaces';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
3
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
- import type { Multiaddr } from '@multiformats/multiaddr';
6
- import type { PeerData } from '@libp2p/interfaces/peer-data';
4
+ import type { PeerInfo } from '@libp2p/interfaces/peer-info';
5
+ import { Components, Initializable } from '@libp2p/interfaces/components';
7
6
  export interface MulticastDNSOptions {
8
- peerId: PeerId;
9
7
  broadcast?: boolean;
10
8
  interval?: number;
11
9
  serviceTag?: string;
12
10
  port?: number;
13
- multiaddrs?: Multiaddr[];
14
11
  compat?: boolean;
15
12
  compatQueryPeriod?: number;
16
13
  compatQueryInterval?: number;
17
14
  }
18
- export declare class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
15
+ export declare class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
19
16
  static tag: string;
20
17
  mdns?: multicastDNS.MulticastDNS;
21
18
  private readonly broadcast;
22
19
  private readonly interval;
23
20
  private readonly serviceTag;
24
21
  private readonly port;
25
- private readonly peerId;
26
- private readonly peerMultiaddrs;
27
22
  private _queryInterval;
28
23
  private readonly _goMdns?;
29
- constructor(options: MulticastDNSOptions);
24
+ private components;
25
+ constructor(options?: MulticastDNSOptions);
26
+ init(components: Components): void;
30
27
  isStarted(): boolean;
31
28
  /**
32
29
  * Start sending queries to the LAN.
@@ -36,7 +33,7 @@ export declare class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> impl
36
33
  start(): Promise<void>;
37
34
  _onMdnsQuery(event: multicastDNS.QueryPacket): void;
38
35
  _onMdnsResponse(event: multicastDNS.ResponsePacket): void;
39
- _onPeer(evt: CustomEvent<PeerData>): void;
36
+ _onPeer(evt: CustomEvent<PeerInfo>): void;
40
37
  /**
41
38
  * Stop sending queries to the LAN.
42
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAI5D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,qBAAa,YAAa,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IAC1F,MAAM,CAAC,GAAG,SAAS;IAEZ,IAAI,CAAC,EAAE,YAAY,CAAC,YAAY,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;gBAE5B,OAAO,EAAE,mBAAmB;IA6BzC,SAAS;IAIT;;;;OAIG;IACG,KAAK;IAgBX,YAAY,CAAE,KAAK,EAAE,YAAY,CAAC,WAAW;IAQ7C,eAAe,CAAE,KAAK,EAAE,YAAY,CAAC,cAAc;IAcnD,OAAO,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;IAUnC;;;;OAIG;IACG,IAAI;CA2BX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,qBAAa,YAAa,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa,EAAE,aAAa;IACzG,MAAM,CAAC,GAAG,SAAS;IAEZ,IAAI,CAAC,EAAE,YAAY,CAAC,YAAY,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,UAAU,CAA+B;gBAEpC,OAAO,GAAE,mBAAwB;IAqB9C,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAMnC,SAAS;IAIT;;;;OAIG;IACG,KAAK;IAgBX,YAAY,CAAE,KAAK,EAAE,YAAY,CAAC,WAAW;IAS7C,eAAe,CAAE,KAAK,EAAE,YAAY,CAAC,cAAc;IAkBnD,OAAO,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;IAUnC;;;;OAIG;IACG,IAAI;CA2BX"}