@libp2p/upnp-nat 3.1.22-8484de8a2 → 3.1.22-87bc8d4fb
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/check-external-address.d.ts.map +1 -1
- package/dist/src/check-external-address.js +3 -5
- package/dist/src/check-external-address.js.map +1 -1
- package/dist/src/search-gateway-finder.js +1 -1
- package/dist/src/search-gateway-finder.js.map +1 -1
- package/dist/src/upnp-nat.js +1 -1
- package/dist/src/upnp-nat.js.map +1 -1
- package/dist/src/upnp-port-mapper.d.ts.map +1 -1
- package/dist/src/upnp-port-mapper.js +17 -16
- package/dist/src/upnp-port-mapper.js.map +1 -1
- package/package.json +12 -12
- package/src/check-external-address.ts +4 -6
- package/src/search-gateway-finder.ts +2 -2
- package/src/upnp-nat.ts +2 -2
- package/src/upnp-port-mapper.ts +18 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-external-address.d.ts","sourceRoot":"","sources":["../../src/check-external-address.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAIhE,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uBAAuB,CAAC,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;CAC/D;
|
|
1
|
+
{"version":3,"file":"check-external-address.d.ts","sourceRoot":"","sources":["../../src/check-external-address.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAIhE,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uBAAuB,CAAC,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;CAC/D;AAwFD,wBAAgB,sBAAsB,CAAE,UAAU,EAAE,gCAAgC,EAAE,IAAI,EAAE,0BAA0B,GAAG,eAAe,CAEvI;AAED,wBAAgB,qBAAqB,CAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAIvE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NotStartedError, start, stop
|
|
2
|
-
import { repeatingTask } from '@libp2p/utils';
|
|
1
|
+
import { NotStartedError, start, stop } from '@libp2p/interface';
|
|
2
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task';
|
|
3
3
|
import pDefer from 'p-defer';
|
|
4
4
|
import { raceSignal } from 'race-signal';
|
|
5
5
|
/**
|
|
@@ -47,9 +47,7 @@ class ExternalAddressChecker {
|
|
|
47
47
|
}
|
|
48
48
|
this.lastPublicIpPromise = pDefer();
|
|
49
49
|
return raceSignal(this.lastPublicIpPromise.promise, options?.signal, {
|
|
50
|
-
|
|
51
|
-
return new TimeoutError('Requesting the public IP from the network gateway timed out - UPnP may not be enabled');
|
|
52
|
-
}
|
|
50
|
+
errorMessage: 'Requesting the public IP from the network gateway timed out - UPnP may not be enabled'
|
|
53
51
|
});
|
|
54
52
|
}
|
|
55
53
|
async checkExternalAddress(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-external-address.js","sourceRoot":"","sources":["../../src/check-external-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"check-external-address.js","sourceRoot":"","sources":["../../src/check-external-address.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { start, stop } from '@libp2p/interface';
|
|
2
|
-
import { repeatingTask } from '@libp2p/utils';
|
|
2
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task';
|
|
3
3
|
import { TypedEventEmitter } from 'main-event';
|
|
4
4
|
import { DEFAULT_GATEWAY_SEARCH_INTERVAL, DEFAULT_GATEWAY_SEARCH_MESSAGE_INTERVAL, DEFAULT_GATEWAY_SEARCH_TIMEOUT, DEFAULT_INITIAL_GATEWAY_SEARCH_INTERVAL, DEFAULT_INITIAL_GATEWAY_SEARCH_MESSAGE_INTERVAL, DEFAULT_INITIAL_GATEWAY_SEARCH_TIMEOUT } from './constants.js';
|
|
5
5
|
export class SearchGatewayFinder extends TypedEventEmitter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-gateway-finder.js","sourceRoot":"","sources":["../../src/search-gateway-finder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"search-gateway-finder.js","sourceRoot":"","sources":["../../src/search-gateway-finder.ts"],"names":[],"mappings":"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"}
|
package/dist/src/upnp-nat.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { upnpNat } from '@achingbrain/nat-port-mapper';
|
|
2
2
|
import { serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface';
|
|
3
|
-
import { debounce } from '@libp2p/utils';
|
|
3
|
+
import { debounce } from '@libp2p/utils/debounce';
|
|
4
4
|
import { setMaxListeners } from 'main-event';
|
|
5
5
|
import { SearchGatewayFinder } from './search-gateway-finder.js';
|
|
6
6
|
import { StaticGatewayFinder } from './static-gateway-finder.js';
|
package/dist/src/upnp-nat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upnp-nat.js","sourceRoot":"","sources":["../../src/upnp-nat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"upnp-nat.js","sourceRoot":"","sources":["../../src/upnp-nat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upnp-port-mapper.d.ts","sourceRoot":"","sources":["../../src/upnp-port-mapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upnp-port-mapper.d.ts","sourceRoot":"","sources":["../../src/upnp-port-mapper.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,4BAA4B,CAAA;AAK7E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAA;IACvB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAOD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,wBAAwB,EAAE,IAAI,EAAE,kBAAkB;IAuBrE,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAe5B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiDtB,cAAc,CAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D/D;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { isIPv4 } from '@chainsafe/is-ip';
|
|
2
2
|
import { InvalidParametersError, start, stop } from '@libp2p/interface';
|
|
3
|
-
import {
|
|
3
|
+
import { isLinkLocal } from '@libp2p/utils/multiaddr/is-link-local';
|
|
4
|
+
import { isLoopback } from '@libp2p/utils/multiaddr/is-loopback';
|
|
5
|
+
import { isPrivate } from '@libp2p/utils/multiaddr/is-private';
|
|
6
|
+
import { isPrivateIp } from '@libp2p/utils/private-ip';
|
|
4
7
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
5
8
|
import { QUIC_V1, TCP, WebSockets, WebSocketsSecure, WebTransport } from '@multiformats/multiaddr-matcher';
|
|
6
9
|
import { dynamicExternalAddress, staticExternalAddress } from './check-external-address.js';
|
|
@@ -76,8 +79,8 @@ export class UPnPPortMapper {
|
|
|
76
79
|
if (type !== 'transport') {
|
|
77
80
|
continue;
|
|
78
81
|
}
|
|
79
|
-
const
|
|
80
|
-
const address =
|
|
82
|
+
const stringTuples = ma.stringTuples();
|
|
83
|
+
const address = `${stringTuples[0][1]}`;
|
|
81
84
|
// ignore public IPv4 addresses
|
|
82
85
|
if (isIPv4(address) && !isPrivate(ma)) {
|
|
83
86
|
continue;
|
|
@@ -98,7 +101,8 @@ export class UPnPPortMapper {
|
|
|
98
101
|
if (!this.isIPAddress(ma)) {
|
|
99
102
|
continue;
|
|
100
103
|
}
|
|
101
|
-
|
|
104
|
+
const { port, transport } = ma.toOptions();
|
|
105
|
+
if (this.mappedPorts.has(`${port}-${transport}`)) {
|
|
102
106
|
continue;
|
|
103
107
|
}
|
|
104
108
|
output.push(ma);
|
|
@@ -119,32 +123,29 @@ export class UPnPPortMapper {
|
|
|
119
123
|
this.assertNotBehindDoubleNAT(externalHost);
|
|
120
124
|
for (const addr of addresses) {
|
|
121
125
|
// try to open uPnP ports for each thin waist address
|
|
122
|
-
const { port, host,
|
|
123
|
-
if (port == null || protocol == null || (type !== 'ip4' && type !== 'ip6')) {
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
+
const { port, host, transport, family } = addr.toOptions();
|
|
126
127
|
// don't try to open port on IPv6 host via IPv4 gateway
|
|
127
|
-
if (
|
|
128
|
+
if (family === 4 && this.gateway.family !== 'IPv4') {
|
|
128
129
|
continue;
|
|
129
130
|
}
|
|
130
131
|
// don't try to open port on IPv4 host via IPv6 gateway
|
|
131
|
-
if (
|
|
132
|
+
if (family === 6 && this.gateway.family !== 'IPv6') {
|
|
132
133
|
continue;
|
|
133
134
|
}
|
|
134
|
-
const key = `${host}-${port}-${
|
|
135
|
+
const key = `${host}-${port}-${transport}`;
|
|
135
136
|
if (this.mappedPorts.has(key)) {
|
|
136
137
|
// already mapped this port
|
|
137
138
|
continue;
|
|
138
139
|
}
|
|
139
140
|
try {
|
|
140
141
|
const mapping = await this.gateway.map(port, host, {
|
|
141
|
-
protocol:
|
|
142
|
+
protocol: transport === 'tcp' ? 'TCP' : 'UDP'
|
|
142
143
|
});
|
|
143
144
|
this.mappedPorts.set(key, mapping);
|
|
144
|
-
this.addressManager.addPublicAddressMapping(mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort,
|
|
145
|
-
this.log('created mapping of %s:%s to %s:%s for protocol %s', mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort,
|
|
145
|
+
this.addressManager.addPublicAddressMapping(mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort, transport === 'tcp' ? 'tcp' : 'udp');
|
|
146
|
+
this.log('created mapping of %s:%s to %s:%s for protocol %s', mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort, transport);
|
|
146
147
|
if (options?.autoConfirmAddress === true) {
|
|
147
|
-
const ma = multiaddr(`/ip${isIPv4(mapping.externalHost) ? 4 : 6}/${mapping.externalHost}/${
|
|
148
|
+
const ma = multiaddr(`/ip${isIPv4(mapping.externalHost) ? 4 : 6}/${mapping.externalHost}/${transport}/${mapping.externalPort}`);
|
|
148
149
|
this.log('auto-confirming IP address %a', ma);
|
|
149
150
|
this.addressManager.confirmObservedAddr(ma, {
|
|
150
151
|
ttl: MAX_DATE - Date.now()
|
|
@@ -152,7 +153,7 @@ export class UPnPPortMapper {
|
|
|
152
153
|
}
|
|
153
154
|
}
|
|
154
155
|
catch (err) {
|
|
155
|
-
this.log.error('failed to create mapping for %s:%d for protocol - %e', host, port,
|
|
156
|
+
this.log.error('failed to create mapping for %s:%d for protocol - %e', host, port, transport, err);
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upnp-port-mapper.js","sourceRoot":"","sources":["../../src/upnp-port-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"upnp-port-mapper.js","sourceRoot":"","sources":["../../src/upnp-port-mapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/upnp-nat",
|
|
3
|
-
"version": "3.1.22-
|
|
3
|
+
"version": "3.1.22-87bc8d4fb",
|
|
4
4
|
"description": "UPnP NAT hole punching",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/upnp-nat#readme",
|
|
@@ -47,22 +47,22 @@
|
|
|
47
47
|
"test:electron-main": "aegir test -t electron-main"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@achingbrain/nat-port-mapper": "^4.0.
|
|
50
|
+
"@achingbrain/nat-port-mapper": "^4.0.2",
|
|
51
51
|
"@chainsafe/is-ip": "^2.1.0",
|
|
52
|
-
"@libp2p/interface": "2.11.0-
|
|
53
|
-
"@libp2p/interface-internal": "2.3.19-
|
|
54
|
-
"@libp2p/utils": "6.7.2-
|
|
55
|
-
"@multiformats/multiaddr": "^
|
|
56
|
-
"@multiformats/multiaddr-matcher": "^
|
|
52
|
+
"@libp2p/interface": "2.11.0-87bc8d4fb",
|
|
53
|
+
"@libp2p/interface-internal": "2.3.19-87bc8d4fb",
|
|
54
|
+
"@libp2p/utils": "6.7.2-87bc8d4fb",
|
|
55
|
+
"@multiformats/multiaddr": "^12.4.4",
|
|
56
|
+
"@multiformats/multiaddr-matcher": "^2.0.0",
|
|
57
57
|
"main-event": "^1.0.1",
|
|
58
58
|
"p-defer": "^4.0.1",
|
|
59
|
-
"race-signal": "^
|
|
59
|
+
"race-signal": "^1.1.3"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@libp2p/crypto": "5.1.8-
|
|
63
|
-
"@libp2p/logger": "5.2.0-
|
|
64
|
-
"@libp2p/peer-id": "5.1.9-
|
|
65
|
-
"aegir": "^47.0.
|
|
62
|
+
"@libp2p/crypto": "5.1.8-87bc8d4fb",
|
|
63
|
+
"@libp2p/logger": "5.2.0-87bc8d4fb",
|
|
64
|
+
"@libp2p/peer-id": "5.1.9-87bc8d4fb",
|
|
65
|
+
"aegir": "^47.0.14",
|
|
66
66
|
"sinon-ts": "^2.0.0",
|
|
67
67
|
"wherearewe": "^2.0.1"
|
|
68
68
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { NotStartedError, start, stop
|
|
2
|
-
import { repeatingTask } from '@libp2p/utils'
|
|
1
|
+
import { NotStartedError, start, stop } from '@libp2p/interface'
|
|
2
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task'
|
|
3
3
|
import pDefer from 'p-defer'
|
|
4
4
|
import { raceSignal } from 'race-signal'
|
|
5
5
|
import type { Gateway } from '@achingbrain/nat-port-mapper'
|
|
6
6
|
import type { AbortOptions, ComponentLogger, Logger, Startable } from '@libp2p/interface'
|
|
7
7
|
import type { AddressManager } from '@libp2p/interface-internal'
|
|
8
|
-
import type { RepeatingTask } from '@libp2p/utils'
|
|
8
|
+
import type { RepeatingTask } from '@libp2p/utils/repeating-task'
|
|
9
9
|
import type { DeferredPromise } from 'p-defer'
|
|
10
10
|
|
|
11
11
|
export interface ExternalAddressCheckerComponents {
|
|
@@ -79,9 +79,7 @@ class ExternalAddressChecker implements ExternalAddress, Startable {
|
|
|
79
79
|
this.lastPublicIpPromise = pDefer()
|
|
80
80
|
|
|
81
81
|
return raceSignal(this.lastPublicIpPromise.promise, options?.signal, {
|
|
82
|
-
|
|
83
|
-
return new TimeoutError('Requesting the public IP from the network gateway timed out - UPnP may not be enabled')
|
|
84
|
-
}
|
|
82
|
+
errorMessage: 'Requesting the public IP from the network gateway timed out - UPnP may not be enabled'
|
|
85
83
|
})
|
|
86
84
|
}
|
|
87
85
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { start, stop } from '@libp2p/interface'
|
|
2
|
-
import { repeatingTask } from '@libp2p/utils'
|
|
2
|
+
import { repeatingTask } from '@libp2p/utils/repeating-task'
|
|
3
3
|
import { TypedEventEmitter } from 'main-event'
|
|
4
4
|
import { DEFAULT_GATEWAY_SEARCH_INTERVAL, DEFAULT_GATEWAY_SEARCH_MESSAGE_INTERVAL, DEFAULT_GATEWAY_SEARCH_TIMEOUT, DEFAULT_INITIAL_GATEWAY_SEARCH_INTERVAL, DEFAULT_INITIAL_GATEWAY_SEARCH_MESSAGE_INTERVAL, DEFAULT_INITIAL_GATEWAY_SEARCH_TIMEOUT } from './constants.js'
|
|
5
5
|
import type { GatewayFinder, GatewayFinderEvents } from './upnp-nat.js'
|
|
6
6
|
import type { Gateway, UPnPNAT } from '@achingbrain/nat-port-mapper'
|
|
7
7
|
import type { ComponentLogger, Logger } from '@libp2p/interface'
|
|
8
|
-
import type { RepeatingTask } from '@libp2p/utils'
|
|
8
|
+
import type { RepeatingTask } from '@libp2p/utils/repeating-task'
|
|
9
9
|
|
|
10
10
|
export interface SearchGatewayFinderComponents {
|
|
11
11
|
logger: ComponentLogger
|
package/src/upnp-nat.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { upnpNat } from '@achingbrain/nat-port-mapper'
|
|
2
2
|
import { serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface'
|
|
3
|
-
import { debounce } from '@libp2p/utils'
|
|
3
|
+
import { debounce } from '@libp2p/utils/debounce'
|
|
4
4
|
import { setMaxListeners } from 'main-event'
|
|
5
5
|
import { SearchGatewayFinder } from './search-gateway-finder.js'
|
|
6
6
|
import { StaticGatewayFinder } from './static-gateway-finder.js'
|
|
@@ -8,7 +8,7 @@ import { UPnPPortMapper } from './upnp-port-mapper.js'
|
|
|
8
8
|
import type { UPnPNATComponents, UPnPNATInit, UPnPNAT as UPnPNATInterface } from './index.js'
|
|
9
9
|
import type { Gateway, UPnPNAT as UPnPNATClient } from '@achingbrain/nat-port-mapper'
|
|
10
10
|
import type { Logger, Startable } from '@libp2p/interface'
|
|
11
|
-
import type { DebouncedFunction } from '@libp2p/utils'
|
|
11
|
+
import type { DebouncedFunction } from '@libp2p/utils/debounce'
|
|
12
12
|
import type { TypedEventTarget } from 'main-event'
|
|
13
13
|
|
|
14
14
|
export interface GatewayFinderEvents {
|
package/src/upnp-port-mapper.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { isIPv4 } from '@chainsafe/is-ip'
|
|
2
2
|
import { InvalidParametersError, start, stop } from '@libp2p/interface'
|
|
3
|
-
import {
|
|
3
|
+
import { isLinkLocal } from '@libp2p/utils/multiaddr/is-link-local'
|
|
4
|
+
import { isLoopback } from '@libp2p/utils/multiaddr/is-loopback'
|
|
5
|
+
import { isPrivate } from '@libp2p/utils/multiaddr/is-private'
|
|
6
|
+
import { isPrivateIp } from '@libp2p/utils/private-ip'
|
|
4
7
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
5
8
|
import { QUIC_V1, TCP, WebSockets, WebSocketsSecure, WebTransport } from '@multiformats/multiaddr-matcher'
|
|
6
9
|
import { dynamicExternalAddress, staticExternalAddress } from './check-external-address.js'
|
|
@@ -118,8 +121,8 @@ export class UPnPPortMapper {
|
|
|
118
121
|
continue
|
|
119
122
|
}
|
|
120
123
|
|
|
121
|
-
const
|
|
122
|
-
const address =
|
|
124
|
+
const stringTuples = ma.stringTuples()
|
|
125
|
+
const address = `${stringTuples[0][1]}`
|
|
123
126
|
|
|
124
127
|
// ignore public IPv4 addresses
|
|
125
128
|
if (isIPv4(address) && !isPrivate(ma)) {
|
|
@@ -146,7 +149,9 @@ export class UPnPPortMapper {
|
|
|
146
149
|
continue
|
|
147
150
|
}
|
|
148
151
|
|
|
149
|
-
|
|
152
|
+
const { port, transport } = ma.toOptions()
|
|
153
|
+
|
|
154
|
+
if (this.mappedPorts.has(`${port}-${transport}`)) {
|
|
150
155
|
continue
|
|
151
156
|
}
|
|
152
157
|
|
|
@@ -175,23 +180,19 @@ export class UPnPPortMapper {
|
|
|
175
180
|
|
|
176
181
|
for (const addr of addresses) {
|
|
177
182
|
// try to open uPnP ports for each thin waist address
|
|
178
|
-
const { port, host,
|
|
179
|
-
|
|
180
|
-
if (port == null || protocol == null || (type !== 'ip4' && type !== 'ip6')) {
|
|
181
|
-
continue
|
|
182
|
-
}
|
|
183
|
+
const { port, host, transport, family } = addr.toOptions()
|
|
183
184
|
|
|
184
185
|
// don't try to open port on IPv6 host via IPv4 gateway
|
|
185
|
-
if (
|
|
186
|
+
if (family === 4 && this.gateway.family !== 'IPv4') {
|
|
186
187
|
continue
|
|
187
188
|
}
|
|
188
189
|
|
|
189
190
|
// don't try to open port on IPv4 host via IPv6 gateway
|
|
190
|
-
if (
|
|
191
|
+
if (family === 6 && this.gateway.family !== 'IPv6') {
|
|
191
192
|
continue
|
|
192
193
|
}
|
|
193
194
|
|
|
194
|
-
const key = `${host}-${port}-${
|
|
195
|
+
const key = `${host}-${port}-${transport}`
|
|
195
196
|
|
|
196
197
|
if (this.mappedPorts.has(key)) {
|
|
197
198
|
// already mapped this port
|
|
@@ -200,21 +201,21 @@ export class UPnPPortMapper {
|
|
|
200
201
|
|
|
201
202
|
try {
|
|
202
203
|
const mapping = await this.gateway.map(port, host, {
|
|
203
|
-
protocol:
|
|
204
|
+
protocol: transport === 'tcp' ? 'TCP' : 'UDP'
|
|
204
205
|
})
|
|
205
206
|
this.mappedPorts.set(key, mapping)
|
|
206
|
-
this.addressManager.addPublicAddressMapping(mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort,
|
|
207
|
-
this.log('created mapping of %s:%s to %s:%s for protocol %s', mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort,
|
|
207
|
+
this.addressManager.addPublicAddressMapping(mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort, transport === 'tcp' ? 'tcp' : 'udp')
|
|
208
|
+
this.log('created mapping of %s:%s to %s:%s for protocol %s', mapping.internalHost, mapping.internalPort, mapping.externalHost, mapping.externalPort, transport)
|
|
208
209
|
|
|
209
210
|
if (options?.autoConfirmAddress === true) {
|
|
210
|
-
const ma = multiaddr(`/ip${isIPv4(mapping.externalHost) ? 4 : 6}/${mapping.externalHost}/${
|
|
211
|
+
const ma = multiaddr(`/ip${isIPv4(mapping.externalHost) ? 4 : 6}/${mapping.externalHost}/${transport}/${mapping.externalPort}`)
|
|
211
212
|
this.log('auto-confirming IP address %a', ma)
|
|
212
213
|
this.addressManager.confirmObservedAddr(ma, {
|
|
213
214
|
ttl: MAX_DATE - Date.now()
|
|
214
215
|
})
|
|
215
216
|
}
|
|
216
217
|
} catch (err) {
|
|
217
|
-
this.log.error('failed to create mapping for %s:%d for protocol - %e', host, port,
|
|
218
|
+
this.log.error('failed to create mapping for %s:%d for protocol - %e', host, port, transport, err)
|
|
218
219
|
}
|
|
219
220
|
}
|
|
220
221
|
} catch (err: any) {
|