libp2p 0.46.21 → 1.0.0-551622a96

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.
Files changed (301) hide show
  1. package/README.md +51 -47
  2. package/dist/index.min.js +40 -28
  3. package/dist/src/address-manager/index.d.ts +4 -5
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +3 -3
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/components.d.ts +4 -15
  8. package/dist/src/components.d.ts.map +1 -1
  9. package/dist/src/components.js +2 -2
  10. package/dist/src/components.js.map +1 -1
  11. package/dist/src/config/connection-gater.browser.d.ts +1 -1
  12. package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
  13. package/dist/src/config/connection-gater.browser.js.map +1 -1
  14. package/dist/src/config/connection-gater.d.ts +1 -1
  15. package/dist/src/config/connection-gater.d.ts.map +1 -1
  16. package/dist/src/config.d.ts.map +1 -1
  17. package/dist/src/config.js +1 -2
  18. package/dist/src/config.js.map +1 -1
  19. package/dist/src/connection/index.d.ts +4 -6
  20. package/dist/src/connection/index.d.ts.map +1 -1
  21. package/dist/src/connection/index.js +11 -13
  22. package/dist/src/connection/index.js.map +1 -1
  23. package/dist/src/connection-manager/auto-dial.d.ts +3 -6
  24. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  25. package/dist/src/connection-manager/auto-dial.js +21 -21
  26. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  27. package/dist/src/connection-manager/connection-pruner.d.ts +3 -5
  28. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  29. package/dist/src/connection-manager/connection-pruner.js +8 -8
  30. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  31. package/dist/src/connection-manager/constants.defaults.d.ts +0 -4
  32. package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
  33. package/dist/src/connection-manager/constants.defaults.js +0 -4
  34. package/dist/src/connection-manager/constants.defaults.js.map +1 -1
  35. package/dist/src/connection-manager/dial-queue.d.ts +3 -10
  36. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  37. package/dist/src/connection-manager/dial-queue.js +30 -38
  38. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  39. package/dist/src/connection-manager/index.d.ts +3 -18
  40. package/dist/src/connection-manager/index.d.ts.map +1 -1
  41. package/dist/src/connection-manager/index.js +17 -18
  42. package/dist/src/connection-manager/index.js.map +1 -1
  43. package/dist/src/connection-manager/utils.js +1 -1
  44. package/dist/src/connection-manager/utils.js.map +1 -1
  45. package/dist/src/content-routing/index.d.ts +1 -5
  46. package/dist/src/content-routing/index.d.ts.map +1 -1
  47. package/dist/src/content-routing/index.js +2 -2
  48. package/dist/src/content-routing/index.js.map +1 -1
  49. package/dist/src/content-routing/utils.d.ts +1 -2
  50. package/dist/src/content-routing/utils.d.ts.map +1 -1
  51. package/dist/src/content-routing/utils.js +1 -1
  52. package/dist/src/content-routing/utils.js.map +1 -1
  53. package/dist/src/errors.d.ts +0 -2
  54. package/dist/src/errors.d.ts.map +1 -1
  55. package/dist/src/errors.js +0 -2
  56. package/dist/src/errors.js.map +1 -1
  57. package/dist/src/get-peer.d.ts +1 -1
  58. package/dist/src/get-peer.d.ts.map +1 -1
  59. package/dist/src/get-peer.js +1 -5
  60. package/dist/src/get-peer.js.map +1 -1
  61. package/dist/src/index.d.ts +5 -16
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/libp2p.d.ts +4 -12
  65. package/dist/src/libp2p.d.ts.map +1 -1
  66. package/dist/src/libp2p.js +31 -65
  67. package/dist/src/libp2p.js.map +1 -1
  68. package/dist/src/peer-routing.d.ts +6 -6
  69. package/dist/src/peer-routing.d.ts.map +1 -1
  70. package/dist/src/peer-routing.js +12 -9
  71. package/dist/src/peer-routing.js.map +1 -1
  72. package/dist/src/registrar.d.ts +5 -7
  73. package/dist/src/registrar.d.ts.map +1 -1
  74. package/dist/src/registrar.js +4 -4
  75. package/dist/src/registrar.js.map +1 -1
  76. package/dist/src/transport-manager.d.ts +5 -9
  77. package/dist/src/transport-manager.d.ts.map +1 -1
  78. package/dist/src/transport-manager.js +12 -13
  79. package/dist/src/transport-manager.js.map +1 -1
  80. package/dist/src/upgrader.d.ts +8 -19
  81. package/dist/src/upgrader.d.ts.map +1 -1
  82. package/dist/src/upgrader.js +75 -38
  83. package/dist/src/upgrader.js.map +1 -1
  84. package/dist/src/version.d.ts +1 -1
  85. package/dist/src/version.d.ts.map +1 -1
  86. package/dist/src/version.js +1 -1
  87. package/dist/src/version.js.map +1 -1
  88. package/package.json +37 -106
  89. package/src/address-manager/index.ts +6 -9
  90. package/src/components.ts +5 -16
  91. package/src/config/connection-gater.browser.ts +1 -1
  92. package/src/config/connection-gater.ts +1 -1
  93. package/src/config.ts +1 -2
  94. package/src/connection/index.ts +12 -17
  95. package/src/connection-manager/auto-dial.ts +23 -26
  96. package/src/connection-manager/connection-pruner.ts +10 -12
  97. package/src/connection-manager/constants.defaults.ts +0 -5
  98. package/src/connection-manager/dial-queue.ts +31 -46
  99. package/src/connection-manager/index.ts +19 -36
  100. package/src/connection-manager/utils.ts +1 -1
  101. package/src/content-routing/index.ts +3 -7
  102. package/src/content-routing/utils.ts +2 -3
  103. package/src/errors.ts +0 -2
  104. package/src/get-peer.ts +2 -7
  105. package/src/index.ts +6 -17
  106. package/src/libp2p.ts +32 -80
  107. package/src/peer-routing.ts +16 -15
  108. package/src/registrar.ts +8 -12
  109. package/src/transport-manager.ts +15 -22
  110. package/src/upgrader.ts +110 -64
  111. package/src/version.ts +1 -1
  112. package/dist/src/autonat/constants.d.ts +0 -18
  113. package/dist/src/autonat/constants.d.ts.map +0 -1
  114. package/dist/src/autonat/constants.js +0 -18
  115. package/dist/src/autonat/constants.js.map +0 -1
  116. package/dist/src/autonat/index.d.ts +0 -62
  117. package/dist/src/autonat/index.d.ts.map +0 -1
  118. package/dist/src/autonat/index.js +0 -447
  119. package/dist/src/autonat/index.js.map +0 -1
  120. package/dist/src/autonat/pb/index.d.ts +0 -57
  121. package/dist/src/autonat/pb/index.d.ts.map +0 -1
  122. package/dist/src/autonat/pb/index.js +0 -250
  123. package/dist/src/autonat/pb/index.js.map +0 -1
  124. package/dist/src/circuit-relay/constants.d.ts +0 -50
  125. package/dist/src/circuit-relay/constants.d.ts.map +0 -1
  126. package/dist/src/circuit-relay/constants.js +0 -56
  127. package/dist/src/circuit-relay/constants.js.map +0 -1
  128. package/dist/src/circuit-relay/index.d.ts +0 -55
  129. package/dist/src/circuit-relay/index.d.ts.map +0 -1
  130. package/dist/src/circuit-relay/index.js +0 -38
  131. package/dist/src/circuit-relay/index.js.map +0 -1
  132. package/dist/src/circuit-relay/pb/index.d.ts +0 -93
  133. package/dist/src/circuit-relay/pb/index.d.ts.map +0 -1
  134. package/dist/src/circuit-relay/pb/index.js +0 -425
  135. package/dist/src/circuit-relay/pb/index.js.map +0 -1
  136. package/dist/src/circuit-relay/server/advert-service.d.ts +0 -43
  137. package/dist/src/circuit-relay/server/advert-service.d.ts.map +0 -1
  138. package/dist/src/circuit-relay/server/advert-service.js +0 -73
  139. package/dist/src/circuit-relay/server/advert-service.js.map +0 -1
  140. package/dist/src/circuit-relay/server/index.d.ts +0 -65
  141. package/dist/src/circuit-relay/server/index.d.ts.map +0 -1
  142. package/dist/src/circuit-relay/server/index.js +0 -312
  143. package/dist/src/circuit-relay/server/index.js.map +0 -1
  144. package/dist/src/circuit-relay/server/reservation-store.d.ts +0 -49
  145. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +0 -1
  146. package/dist/src/circuit-relay/server/reservation-store.js +0 -65
  147. package/dist/src/circuit-relay/server/reservation-store.js.map +0 -1
  148. package/dist/src/circuit-relay/server/reservation-voucher.d.ts +0 -18
  149. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +0 -1
  150. package/dist/src/circuit-relay/server/reservation-voucher.js +0 -36
  151. package/dist/src/circuit-relay/server/reservation-voucher.js.map +0 -1
  152. package/dist/src/circuit-relay/transport/discovery.d.ts +0 -45
  153. package/dist/src/circuit-relay/transport/discovery.d.ts.map +0 -1
  154. package/dist/src/circuit-relay/transport/discovery.js +0 -97
  155. package/dist/src/circuit-relay/transport/discovery.js.map +0 -1
  156. package/dist/src/circuit-relay/transport/index.d.ts +0 -57
  157. package/dist/src/circuit-relay/transport/index.d.ts.map +0 -1
  158. package/dist/src/circuit-relay/transport/index.js +0 -276
  159. package/dist/src/circuit-relay/transport/index.js.map +0 -1
  160. package/dist/src/circuit-relay/transport/listener.d.ts +0 -9
  161. package/dist/src/circuit-relay/transport/listener.d.ts.map +0 -1
  162. package/dist/src/circuit-relay/transport/listener.js +0 -66
  163. package/dist/src/circuit-relay/transport/listener.js.map +0 -1
  164. package/dist/src/circuit-relay/transport/reservation-store.d.ts +0 -72
  165. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +0 -1
  166. package/dist/src/circuit-relay/transport/reservation-store.js +0 -209
  167. package/dist/src/circuit-relay/transport/reservation-store.js.map +0 -1
  168. package/dist/src/circuit-relay/utils.d.ts +0 -13
  169. package/dist/src/circuit-relay/utils.d.ts.map +0 -1
  170. package/dist/src/circuit-relay/utils.js +0 -108
  171. package/dist/src/circuit-relay/utils.js.map +0 -1
  172. package/dist/src/dcutr/dcutr.d.ts +0 -43
  173. package/dist/src/dcutr/dcutr.d.ts.map +0 -1
  174. package/dist/src/dcutr/dcutr.js +0 -313
  175. package/dist/src/dcutr/dcutr.js.map +0 -1
  176. package/dist/src/dcutr/index.d.ts +0 -92
  177. package/dist/src/dcutr/index.d.ts.map +0 -1
  178. package/dist/src/dcutr/index.js +0 -63
  179. package/dist/src/dcutr/index.js.map +0 -1
  180. package/dist/src/dcutr/pb/message.d.ts +0 -20
  181. package/dist/src/dcutr/pb/message.d.ts.map +0 -1
  182. package/dist/src/dcutr/pb/message.js +0 -77
  183. package/dist/src/dcutr/pb/message.js.map +0 -1
  184. package/dist/src/dcutr/utils.d.ts +0 -8
  185. package/dist/src/dcutr/utils.d.ts.map +0 -1
  186. package/dist/src/dcutr/utils.js +0 -27
  187. package/dist/src/dcutr/utils.js.map +0 -1
  188. package/dist/src/fetch/constants.d.ts +0 -3
  189. package/dist/src/fetch/constants.d.ts.map +0 -1
  190. package/dist/src/fetch/constants.js +0 -4
  191. package/dist/src/fetch/constants.js.map +0 -1
  192. package/dist/src/fetch/index.d.ts +0 -61
  193. package/dist/src/fetch/index.d.ts.map +0 -1
  194. package/dist/src/fetch/index.js +0 -205
  195. package/dist/src/fetch/index.js.map +0 -1
  196. package/dist/src/fetch/pb/proto.d.ts +0 -28
  197. package/dist/src/fetch/pb/proto.d.ts.map +0 -1
  198. package/dist/src/fetch/pb/proto.js +0 -120
  199. package/dist/src/fetch/pb/proto.js.map +0 -1
  200. package/dist/src/identify/consts.d.ts +0 -10
  201. package/dist/src/identify/consts.d.ts.map +0 -1
  202. package/dist/src/identify/consts.js +0 -11
  203. package/dist/src/identify/consts.js.map +0 -1
  204. package/dist/src/identify/identify.d.ts +0 -54
  205. package/dist/src/identify/identify.d.ts.map +0 -1
  206. package/dist/src/identify/identify.js +0 -447
  207. package/dist/src/identify/identify.js.map +0 -1
  208. package/dist/src/identify/index.d.ts +0 -72
  209. package/dist/src/identify/index.d.ts.map +0 -1
  210. package/dist/src/identify/index.js +0 -15
  211. package/dist/src/identify/index.js.map +0 -1
  212. package/dist/src/identify/pb/message.d.ts +0 -17
  213. package/dist/src/identify/pb/message.d.ts.map +0 -1
  214. package/dist/src/identify/pb/message.js +0 -98
  215. package/dist/src/identify/pb/message.js.map +0 -1
  216. package/dist/src/insecure/index.d.ts +0 -26
  217. package/dist/src/insecure/index.d.ts.map +0 -1
  218. package/dist/src/insecure/index.js +0 -110
  219. package/dist/src/insecure/index.js.map +0 -1
  220. package/dist/src/insecure/pb/proto.d.ts +0 -30
  221. package/dist/src/insecure/pb/proto.d.ts.map +0 -1
  222. package/dist/src/insecure/pb/proto.js +0 -127
  223. package/dist/src/insecure/pb/proto.js.map +0 -1
  224. package/dist/src/ping/constants.d.ts +0 -9
  225. package/dist/src/ping/constants.d.ts.map +0 -1
  226. package/dist/src/ping/constants.js +0 -15
  227. package/dist/src/ping/constants.js.map +0 -1
  228. package/dist/src/ping/index.d.ts +0 -24
  229. package/dist/src/ping/index.d.ts.map +0 -1
  230. package/dist/src/ping/index.js +0 -115
  231. package/dist/src/ping/index.js.map +0 -1
  232. package/dist/src/pnet/crypto.d.ts +0 -18
  233. package/dist/src/pnet/crypto.d.ts.map +0 -1
  234. package/dist/src/pnet/crypto.js +0 -60
  235. package/dist/src/pnet/crypto.js.map +0 -1
  236. package/dist/src/pnet/errors.d.ts +0 -6
  237. package/dist/src/pnet/errors.d.ts.map +0 -1
  238. package/dist/src/pnet/errors.js +0 -6
  239. package/dist/src/pnet/errors.js.map +0 -1
  240. package/dist/src/pnet/index.d.ts +0 -31
  241. package/dist/src/pnet/index.d.ts.map +0 -1
  242. package/dist/src/pnet/index.js +0 -97
  243. package/dist/src/pnet/index.js.map +0 -1
  244. package/dist/src/pnet/key-generator.d.ts +0 -11
  245. package/dist/src/pnet/key-generator.d.ts.map +0 -1
  246. package/dist/src/pnet/key-generator.js +0 -22
  247. package/dist/src/pnet/key-generator.js.map +0 -1
  248. package/dist/src/upnp-nat/index.d.ts +0 -71
  249. package/dist/src/upnp-nat/index.d.ts.map +0 -1
  250. package/dist/src/upnp-nat/index.js +0 -136
  251. package/dist/src/upnp-nat/index.js.map +0 -1
  252. package/dist/src/utils/peer-job-queue.d.ts +0 -33
  253. package/dist/src/utils/peer-job-queue.d.ts.map +0 -1
  254. package/dist/src/utils/peer-job-queue.js +0 -82
  255. package/dist/src/utils/peer-job-queue.js.map +0 -1
  256. package/dist/typedoc-urls.json +0 -71
  257. package/src/autonat/constants.ts +0 -19
  258. package/src/autonat/index.ts +0 -597
  259. package/src/autonat/pb/index.proto +0 -35
  260. package/src/autonat/pb/index.ts +0 -320
  261. package/src/circuit-relay/constants.ts +0 -72
  262. package/src/circuit-relay/index.ts +0 -59
  263. package/src/circuit-relay/pb/index.proto +0 -67
  264. package/src/circuit-relay/pb/index.ts +0 -539
  265. package/src/circuit-relay/server/advert-service.ts +0 -108
  266. package/src/circuit-relay/server/index.ts +0 -443
  267. package/src/circuit-relay/server/reservation-store.ts +0 -116
  268. package/src/circuit-relay/server/reservation-voucher.ts +0 -51
  269. package/src/circuit-relay/transport/discovery.ts +0 -136
  270. package/src/circuit-relay/transport/index.ts +0 -396
  271. package/src/circuit-relay/transport/listener.ts +0 -97
  272. package/src/circuit-relay/transport/reservation-store.ts +0 -312
  273. package/src/circuit-relay/utils.ts +0 -136
  274. package/src/dcutr/dcutr.ts +0 -378
  275. package/src/dcutr/index.ts +0 -102
  276. package/src/dcutr/pb/message.proto +0 -12
  277. package/src/dcutr/pb/message.ts +0 -96
  278. package/src/dcutr/utils.ts +0 -33
  279. package/src/fetch/README.md +0 -41
  280. package/src/fetch/constants.ts +0 -3
  281. package/src/fetch/index.ts +0 -315
  282. package/src/fetch/pb/proto.proto +0 -15
  283. package/src/fetch/pb/proto.ts +0 -153
  284. package/src/identify/README.md +0 -13
  285. package/src/identify/consts.ts +0 -12
  286. package/src/identify/identify.ts +0 -561
  287. package/src/identify/index.ts +0 -90
  288. package/src/identify/pb/message.proto +0 -30
  289. package/src/identify/pb/message.ts +0 -126
  290. package/src/insecure/index.ts +0 -138
  291. package/src/insecure/pb/proto.proto +0 -18
  292. package/src/insecure/pb/proto.ts +0 -161
  293. package/src/ping/constants.ts +0 -15
  294. package/src/ping/index.ts +0 -170
  295. package/src/pnet/README.md +0 -68
  296. package/src/pnet/crypto.ts +0 -67
  297. package/src/pnet/errors.ts +0 -5
  298. package/src/pnet/index.ts +0 -126
  299. package/src/pnet/key-generator.ts +0 -23
  300. package/src/upnp-nat/index.ts +0 -212
  301. package/src/utils/peer-job-queue.ts +0 -119
@@ -1,447 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- *
4
- * Use the `autoNATService` function to add support for the [AutoNAT protocol](https://docs.libp2p.io/concepts/nat/autonat/)
5
- * to libp2p.
6
- *
7
- * @example
8
- *
9
- * ```typescript
10
- * import { createLibp2p } from 'libp2p'
11
- * import { autoNATService } from 'libp2p/autonat'
12
- *
13
- * const node = await createLibp2p({
14
- * // ...other options
15
- * services: {
16
- * autoNAT: autoNATService()
17
- * }
18
- * })
19
- * ```
20
- */
21
- import { CodeError } from '@libp2p/interface/errors';
22
- import { setMaxListeners } from '@libp2p/interface/events';
23
- import { logger } from '@libp2p/logger';
24
- import { peerIdFromBytes } from '@libp2p/peer-id';
25
- import { createEd25519PeerId } from '@libp2p/peer-id-factory';
26
- import { multiaddr, protocols } from '@multiformats/multiaddr';
27
- import first from 'it-first';
28
- import * as lp from 'it-length-prefixed';
29
- import map from 'it-map';
30
- import parallel from 'it-parallel';
31
- import { pipe } from 'it-pipe';
32
- import isPrivateIp from 'private-ip';
33
- import { codes } from '../errors.js';
34
- import { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, REFRESH_INTERVAL, STARTUP_DELAY, TIMEOUT } from './constants.js';
35
- import { Message } from './pb/index.js';
36
- const log = logger('libp2p:autonat');
37
- // if more than 3 peers manage to dial us on what we believe to be our external
38
- // IP then we are convinced that it is, in fact, our external IP
39
- // https://github.com/libp2p/specs/blob/master/autonat/README.md#autonat-protocol
40
- const REQUIRED_SUCCESSFUL_DIALS = 4;
41
- class DefaultAutoNATService {
42
- components;
43
- startupDelay;
44
- refreshInterval;
45
- protocol;
46
- timeout;
47
- maxInboundStreams;
48
- maxOutboundStreams;
49
- verifyAddressTimeout;
50
- started;
51
- constructor(components, init) {
52
- this.components = components;
53
- this.started = false;
54
- this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
55
- this.timeout = init.timeout ?? TIMEOUT;
56
- this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;
57
- this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;
58
- this.startupDelay = init.startupDelay ?? STARTUP_DELAY;
59
- this.refreshInterval = init.refreshInterval ?? REFRESH_INTERVAL;
60
- this._verifyExternalAddresses = this._verifyExternalAddresses.bind(this);
61
- }
62
- isStarted() {
63
- return this.started;
64
- }
65
- async start() {
66
- if (this.started) {
67
- return;
68
- }
69
- await this.components.registrar.handle(this.protocol, (data) => {
70
- void this.handleIncomingAutonatStream(data)
71
- .catch(err => {
72
- log.error('error handling incoming autonat stream', err);
73
- });
74
- }, {
75
- maxInboundStreams: this.maxInboundStreams,
76
- maxOutboundStreams: this.maxOutboundStreams
77
- });
78
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.startupDelay);
79
- this.started = true;
80
- }
81
- async stop() {
82
- await this.components.registrar.unhandle(this.protocol);
83
- clearTimeout(this.verifyAddressTimeout);
84
- this.started = false;
85
- }
86
- /**
87
- * Handle an incoming AutoNAT request
88
- */
89
- async handleIncomingAutonatStream(data) {
90
- const signal = AbortSignal.timeout(this.timeout);
91
- const onAbort = () => {
92
- data.stream.abort(new CodeError('handleIncomingAutonatStream timeout', codes.ERR_TIMEOUT));
93
- };
94
- signal.addEventListener('abort', onAbort, { once: true });
95
- // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
96
- // appearing in the console
97
- setMaxListeners(Infinity, signal);
98
- const ourHosts = this.components.addressManager.getAddresses()
99
- .map(ma => ma.toOptions().host);
100
- try {
101
- const self = this;
102
- await pipe(data.stream, (source) => lp.decode(source), async function* (stream) {
103
- const buf = await first(stream);
104
- if (buf == null) {
105
- log('no message received');
106
- yield Message.encode({
107
- type: Message.MessageType.DIAL_RESPONSE,
108
- dialResponse: {
109
- status: Message.ResponseStatus.E_BAD_REQUEST,
110
- statusText: 'No message was sent'
111
- }
112
- });
113
- return;
114
- }
115
- let request;
116
- try {
117
- request = Message.decode(buf);
118
- }
119
- catch (err) {
120
- log.error('could not decode message', err);
121
- yield Message.encode({
122
- type: Message.MessageType.DIAL_RESPONSE,
123
- dialResponse: {
124
- status: Message.ResponseStatus.E_BAD_REQUEST,
125
- statusText: 'Could not decode message'
126
- }
127
- });
128
- return;
129
- }
130
- const dialRequest = request.dial;
131
- if (dialRequest == null) {
132
- log.error('dial was missing from message');
133
- yield Message.encode({
134
- type: Message.MessageType.DIAL_RESPONSE,
135
- dialResponse: {
136
- status: Message.ResponseStatus.E_BAD_REQUEST,
137
- statusText: 'No Dial message found in message'
138
- }
139
- });
140
- return;
141
- }
142
- let peerId;
143
- const peer = dialRequest.peer;
144
- if (peer == null || peer.id == null) {
145
- log.error('PeerId missing from message');
146
- yield Message.encode({
147
- type: Message.MessageType.DIAL_RESPONSE,
148
- dialResponse: {
149
- status: Message.ResponseStatus.E_BAD_REQUEST,
150
- statusText: 'missing peer info'
151
- }
152
- });
153
- return;
154
- }
155
- try {
156
- peerId = peerIdFromBytes(peer.id);
157
- }
158
- catch (err) {
159
- log.error('invalid PeerId', err);
160
- yield Message.encode({
161
- type: Message.MessageType.DIAL_RESPONSE,
162
- dialResponse: {
163
- status: Message.ResponseStatus.E_BAD_REQUEST,
164
- statusText: 'bad peer id'
165
- }
166
- });
167
- return;
168
- }
169
- log('incoming request from %p', peerId);
170
- // reject any dial requests that arrive via relays
171
- if (!data.connection.remotePeer.equals(peerId)) {
172
- log('target peer %p did not equal sending peer %p', peerId, data.connection.remotePeer);
173
- yield Message.encode({
174
- type: Message.MessageType.DIAL_RESPONSE,
175
- dialResponse: {
176
- status: Message.ResponseStatus.E_BAD_REQUEST,
177
- statusText: 'peer id mismatch'
178
- }
179
- });
180
- return;
181
- }
182
- // get a list of multiaddrs to dial
183
- const multiaddrs = peer.addrs
184
- .map(buf => multiaddr(buf))
185
- .filter(ma => {
186
- const isFromSameHost = ma.toOptions().host === data.connection.remoteAddr.toOptions().host;
187
- log.trace('request to dial %a was sent from %a is same host %s', ma, data.connection.remoteAddr, isFromSameHost);
188
- // skip any Multiaddrs where the target node's IP does not match the sending node's IP
189
- return isFromSameHost;
190
- })
191
- .filter(ma => {
192
- const host = ma.toOptions().host;
193
- const isPublicIp = !(isPrivateIp(host) ?? false);
194
- log.trace('host %s was public %s', host, isPublicIp);
195
- // don't try to dial private addresses
196
- return isPublicIp;
197
- })
198
- .filter(ma => {
199
- const host = ma.toOptions().host;
200
- const isNotOurHost = !ourHosts.includes(host);
201
- log.trace('host %s was not our host %s', host, isNotOurHost);
202
- // don't try to dial nodes on the same host as us
203
- return isNotOurHost;
204
- })
205
- .filter(ma => {
206
- const isSupportedTransport = Boolean(self.components.transportManager.transportForMultiaddr(ma));
207
- log.trace('transport for %a is supported %s', ma, isSupportedTransport);
208
- // skip any Multiaddrs that have transports we do not support
209
- return isSupportedTransport;
210
- })
211
- .map(ma => {
212
- if (ma.getPeerId() == null) {
213
- // make sure we have the PeerId as part of the Multiaddr
214
- ma = ma.encapsulate(`/p2p/${peerId.toString()}`);
215
- }
216
- return ma;
217
- });
218
- // make sure we have something to dial
219
- if (multiaddrs.length === 0) {
220
- log('no valid multiaddrs for %p in message', peerId);
221
- yield Message.encode({
222
- type: Message.MessageType.DIAL_RESPONSE,
223
- dialResponse: {
224
- status: Message.ResponseStatus.E_DIAL_REFUSED,
225
- statusText: 'no dialable addresses'
226
- }
227
- });
228
- return;
229
- }
230
- log('dial multiaddrs %s for peer %p', multiaddrs.map(ma => ma.toString()).join(', '), peerId);
231
- let errorMessage = '';
232
- let lastMultiaddr = multiaddrs[0];
233
- for await (const multiaddr of multiaddrs) {
234
- let connection;
235
- lastMultiaddr = multiaddr;
236
- try {
237
- connection = await self.components.connectionManager.openConnection(multiaddr, {
238
- signal
239
- });
240
- if (!connection.remoteAddr.equals(multiaddr)) {
241
- log.error('tried to dial %a but dialed %a', multiaddr, connection.remoteAddr);
242
- throw new Error('Unexpected remote address');
243
- }
244
- log('Success %p', peerId);
245
- yield Message.encode({
246
- type: Message.MessageType.DIAL_RESPONSE,
247
- dialResponse: {
248
- status: Message.ResponseStatus.OK,
249
- addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
250
- }
251
- });
252
- return;
253
- }
254
- catch (err) {
255
- log('could not dial %p', peerId, err);
256
- errorMessage = err.message;
257
- }
258
- finally {
259
- if (connection != null) {
260
- await connection.close();
261
- }
262
- }
263
- }
264
- yield Message.encode({
265
- type: Message.MessageType.DIAL_RESPONSE,
266
- dialResponse: {
267
- status: Message.ResponseStatus.E_DIAL_ERROR,
268
- statusText: errorMessage,
269
- addr: lastMultiaddr.bytes
270
- }
271
- });
272
- }, (source) => lp.encode(source), data.stream);
273
- }
274
- catch (err) {
275
- log.error('error handling incoming autonat stream', err);
276
- }
277
- finally {
278
- signal.removeEventListener('abort', onAbort);
279
- }
280
- }
281
- _verifyExternalAddresses() {
282
- void this.verifyExternalAddresses()
283
- .catch(err => {
284
- log.error('error verifying external address', err);
285
- });
286
- }
287
- /**
288
- * Our multicodec topology noticed a new peer that supports autonat
289
- */
290
- async verifyExternalAddresses() {
291
- clearTimeout(this.verifyAddressTimeout);
292
- // Do not try to push if we are not running
293
- if (!this.isStarted()) {
294
- return;
295
- }
296
- const addressManager = this.components.addressManager;
297
- const multiaddrs = addressManager.getObservedAddrs()
298
- .filter(ma => {
299
- const options = ma.toOptions();
300
- return !(isPrivateIp(options.host) ?? false);
301
- });
302
- if (multiaddrs.length === 0) {
303
- log('no public addresses found, not requesting verification');
304
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);
305
- return;
306
- }
307
- const signal = AbortSignal.timeout(this.timeout);
308
- // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
309
- // appearing in the console
310
- setMaxListeners(Infinity, signal);
311
- const self = this;
312
- try {
313
- log('verify multiaddrs %s', multiaddrs.map(ma => ma.toString()).join(', '));
314
- const request = Message.encode({
315
- type: Message.MessageType.DIAL,
316
- dial: {
317
- peer: {
318
- id: this.components.peerId.toBytes(),
319
- addrs: multiaddrs.map(map => map.bytes)
320
- }
321
- }
322
- });
323
- // find some random peers
324
- const randomPeer = await createEd25519PeerId();
325
- const randomCid = randomPeer.toBytes();
326
- const results = {};
327
- const networkSegments = [];
328
- const verifyAddress = async (peer) => {
329
- let onAbort = () => { };
330
- try {
331
- log('asking %p to verify multiaddr', peer.id);
332
- const connection = await self.components.connectionManager.openConnection(peer.id, {
333
- signal
334
- });
335
- const stream = await connection.newStream(this.protocol, {
336
- signal
337
- });
338
- onAbort = () => { stream.abort(new CodeError('verifyAddress timeout', codes.ERR_TIMEOUT)); };
339
- signal.addEventListener('abort', onAbort, { once: true });
340
- const buf = await pipe([request], (source) => lp.encode(source), stream, (source) => lp.decode(source), async (stream) => first(stream));
341
- if (buf == null) {
342
- log('no response received from %p', connection.remotePeer);
343
- return undefined;
344
- }
345
- const response = Message.decode(buf);
346
- if (response.type !== Message.MessageType.DIAL_RESPONSE || response.dialResponse == null) {
347
- log('invalid autonat response from %p', connection.remotePeer);
348
- return undefined;
349
- }
350
- if (response.dialResponse.status === Message.ResponseStatus.OK) {
351
- // make sure we use different network segments
352
- const options = connection.remoteAddr.toOptions();
353
- let segment;
354
- if (options.family === 4) {
355
- const octets = options.host.split('.');
356
- segment = octets[0];
357
- }
358
- else if (options.family === 6) {
359
- const octets = options.host.split(':');
360
- segment = octets[0];
361
- }
362
- else {
363
- log('remote address "%s" was not IP4 or IP6?', options.host);
364
- return undefined;
365
- }
366
- if (networkSegments.includes(segment)) {
367
- log('already have response from network segment %d - %s', segment, options.host);
368
- return undefined;
369
- }
370
- networkSegments.push(segment);
371
- }
372
- return response.dialResponse;
373
- }
374
- catch (err) {
375
- log.error('error asking remote to verify multiaddr', err);
376
- }
377
- finally {
378
- signal.removeEventListener('abort', onAbort);
379
- }
380
- };
381
- for await (const dialResponse of parallel(map(this.components.peerRouting.getClosestPeers(randomCid, {
382
- signal
383
- }), (peer) => async () => verifyAddress(peer)), {
384
- concurrency: REQUIRED_SUCCESSFUL_DIALS
385
- })) {
386
- try {
387
- if (dialResponse == null) {
388
- continue;
389
- }
390
- // they either told us which address worked/didn't work, or we only sent them one address
391
- const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr);
392
- log('autonat response for %a is %s', addr, dialResponse.status);
393
- if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {
394
- // the remote could not parse our request
395
- continue;
396
- }
397
- if (dialResponse.status === Message.ResponseStatus.E_DIAL_REFUSED) {
398
- // the remote could not honour our request
399
- continue;
400
- }
401
- if (dialResponse.addr == null && multiaddrs.length > 1) {
402
- // we sent the remote multiple addrs but they didn't tell us which ones worked/didn't work
403
- continue;
404
- }
405
- if (!multiaddrs.some(ma => ma.equals(addr))) {
406
- log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status);
407
- continue;
408
- }
409
- const addrStr = addr.toString();
410
- if (results[addrStr] == null) {
411
- results[addrStr] = { success: 0, failure: 0 };
412
- }
413
- if (dialResponse.status === Message.ResponseStatus.OK) {
414
- results[addrStr].success++;
415
- }
416
- else if (dialResponse.status === Message.ResponseStatus.E_DIAL_ERROR) {
417
- results[addrStr].failure++;
418
- }
419
- if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {
420
- // we are now convinced
421
- log('%a is externally dialable', addr);
422
- addressManager.confirmObservedAddr(addr);
423
- return;
424
- }
425
- if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {
426
- // we are now unconvinced
427
- log('%a is not externally dialable', addr);
428
- addressManager.removeObservedAddr(addr);
429
- return;
430
- }
431
- }
432
- catch (err) {
433
- log.error('could not verify external address', err);
434
- }
435
- }
436
- }
437
- finally {
438
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);
439
- }
440
- }
441
- }
442
- export function autoNATService(init = {}) {
443
- return (components) => {
444
- return new DefaultAutoNATService(components, init);
445
- };
446
- }
447
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/autonat/index.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import type { Codec } from 'protons-runtime';
2
- import type { Uint8ArrayList } from 'uint8arraylist';
3
- export interface Message {
4
- type?: Message.MessageType;
5
- dial?: Message.Dial;
6
- dialResponse?: Message.DialResponse;
7
- }
8
- export declare namespace Message {
9
- enum MessageType {
10
- DIAL = "DIAL",
11
- DIAL_RESPONSE = "DIAL_RESPONSE"
12
- }
13
- namespace MessageType {
14
- const codec: () => Codec<MessageType>;
15
- }
16
- enum ResponseStatus {
17
- OK = "OK",
18
- E_DIAL_ERROR = "E_DIAL_ERROR",
19
- E_DIAL_REFUSED = "E_DIAL_REFUSED",
20
- E_BAD_REQUEST = "E_BAD_REQUEST",
21
- E_INTERNAL_ERROR = "E_INTERNAL_ERROR"
22
- }
23
- namespace ResponseStatus {
24
- const codec: () => Codec<ResponseStatus>;
25
- }
26
- interface PeerInfo {
27
- id?: Uint8Array;
28
- addrs: Uint8Array[];
29
- }
30
- namespace PeerInfo {
31
- const codec: () => Codec<PeerInfo>;
32
- const encode: (obj: Partial<PeerInfo>) => Uint8Array;
33
- const decode: (buf: Uint8Array | Uint8ArrayList) => PeerInfo;
34
- }
35
- interface Dial {
36
- peer?: Message.PeerInfo;
37
- }
38
- namespace Dial {
39
- const codec: () => Codec<Dial>;
40
- const encode: (obj: Partial<Dial>) => Uint8Array;
41
- const decode: (buf: Uint8Array | Uint8ArrayList) => Dial;
42
- }
43
- interface DialResponse {
44
- status?: Message.ResponseStatus;
45
- statusText?: string;
46
- addr?: Uint8Array;
47
- }
48
- namespace DialResponse {
49
- const codec: () => Codec<DialResponse>;
50
- const encode: (obj: Partial<DialResponse>) => Uint8Array;
51
- const decode: (buf: Uint8Array | Uint8ArrayList) => DialResponse;
52
- }
53
- const codec: () => Codec<Message>;
54
- const encode: (obj: Partial<Message>) => Uint8Array;
55
- const decode: (buf: Uint8Array | Uint8ArrayList) => Message;
56
- }
57
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/autonat/pb/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAA;CACpC;AAED,yBAAiB,OAAO,CAAC;IACvB,KAAY,WAAW;QACrB,IAAI,SAAS;QACb,aAAa,kBAAkB;KAChC;IAOD,UAAiB,WAAW,CAAC;QACpB,MAAM,KAAK,QAAO,MAAM,WAAW,CAEzC,CAAA;KACF;IAED,KAAY,cAAc;QACxB,EAAE,OAAO;QACT,YAAY,iBAAiB;QAC7B,cAAc,mBAAmB;QACjC,aAAa,kBAAkB;QAC/B,gBAAgB,qBAAqB;KACtC;IAUD,UAAiB,cAAc,CAAC;QACvB,MAAM,KAAK,QAAO,MAAM,cAAc,CAE5C,CAAA;KACF;IAED,UAAiB,QAAQ;QACvB,EAAE,CAAC,EAAE,UAAU,CAAA;QACf,KAAK,EAAE,UAAU,EAAE,CAAA;KACpB;IAED,UAAiB,QAAQ,CAAC;QAGjB,MAAM,KAAK,QAAO,MAAM,QAAQ,CAkDtC,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,QAAQ,CAAC,KAAG,UAE/C,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,QAEzD,CAAA;KACF;IAED,UAAiB,IAAI;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;KACxB;IAED,UAAiB,IAAI,CAAC;QAGb,MAAM,KAAK,QAAO,MAAM,IAAI,CAsClC,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,IAAI,CAAC,KAAG,UAE3C,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,IAEzD,CAAA;KACF;IAED,UAAiB,YAAY;QAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAA;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,YAAY,CAAC;QAGrB,MAAM,KAAK,QAAO,MAAM,YAAY,CAsD1C,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,YAAY,CAAC,KAAG,UAEnD,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,YAEzD,CAAA;KACF;IAIM,MAAM,KAAK,QAAO,MAAM,OAAO,CAsDrC,CAAA;IAEM,MAAM,MAAM,QAAS,QAAQ,OAAO,CAAC,KAAG,UAE9C,CAAA;IAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,OAEzD,CAAA;CACF"}