From 7be50bd157b984d4607545bb78d22cd33de933fa Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Wed, 22 Jun 2022 18:14:35 +0100 Subject: [PATCH] fix: use default ws filters instead of connecting to everything (#4142) Fixes configuration regression, use the default websocket transport filters, e.g. only connect to wss and/or DNS addresses in the browser and anything goes in node. Fixes: #4141 --- packages/ipfs-core-config/package.json | 2 +- packages/ipfs-core-types/package.json | 2 +- packages/ipfs-core/package.json | 6 +++--- packages/ipfs-core/src/components/libp2p.js | 16 ++++++++++------ packages/ipfs/package.json | 1 + packages/ipfs/test/utils/factory.js | 9 ++++++++- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/ipfs-core-config/package.json b/packages/ipfs-core-config/package.json index d459b98f4d..0289bd1ce3 100644 --- a/packages/ipfs-core-config/package.json +++ b/packages/ipfs-core-config/package.json @@ -92,7 +92,7 @@ "datastore-level": "^8.0.0", "err-code": "^3.0.1", "hashlru": "^2.3.0", - "interface-datastore": "^6.0.2", + "interface-datastore": "^6.1.1", "ipfs-repo": "^14.0.1", "ipfs-utils": "^9.0.6", "is-ipfs": "^6.0.1", diff --git a/packages/ipfs-core-types/package.json b/packages/ipfs-core-types/package.json index f8d37b1c5a..f504851a58 100644 --- a/packages/ipfs-core-types/package.json +++ b/packages/ipfs-core-types/package.json @@ -47,7 +47,7 @@ "license": "(Apache-2.0 OR MIT)", "dependencies": { "@ipld/dag-pb": "^2.1.3", - "interface-datastore": "^6.0.2", + "interface-datastore": "^6.1.1", "ipfs-unixfs": "^6.0.9", "@multiformats/multiaddr": "^10.0.0", "multiformats": "^9.5.1" diff --git a/packages/ipfs-core/package.json b/packages/ipfs-core/package.json index fee90ada2b..7bf06361ac 100644 --- a/packages/ipfs-core/package.json +++ b/packages/ipfs-core/package.json @@ -97,8 +97,8 @@ "err-code": "^3.0.1", "hamt-sharding": "^2.0.1", "hashlru": "^2.3.0", - "interface-blockstore": "^2.0.2", - "interface-datastore": "^6.0.2", + "interface-blockstore": "^2.0.3", + "interface-datastore": "^6.1.1", "ipfs-bitswap": "^11.0.0", "ipfs-core-config": "^0.4.0", "ipfs-core-types": "^0.11.0", @@ -143,7 +143,7 @@ "blockstore-datastore-adapter": "^2.0.2", "delay": "^5.0.0", "go-ipfs": "^0.12.1", - "interface-blockstore-tests": "^2.0.2", + "interface-blockstore-tests": "^2.0.4", "interface-ipfs-core": "^0.155.0", "ipfsd-ctl": "^11.0.0", "iso-url": "^1.0.0", diff --git a/packages/ipfs-core/src/components/libp2p.js b/packages/ipfs-core/src/components/libp2p.js index 41285e232e..fa2d4f0d7a 100644 --- a/packages/ipfs-core/src/components/libp2p.js +++ b/packages/ipfs-core/src/components/libp2p.js @@ -14,7 +14,6 @@ import { Bootstrap } from '@libp2p/bootstrap' import { ipnsValidator } from 'ipns/validator' import { ipnsSelector } from 'ipns/selector' import { WebSockets } from '@libp2p/websockets' -import * as WebSocketsFilters from '@libp2p/websockets/filters' import { Mplex } from '@libp2p/mplex' import { NOISE } from '@chainsafe/libp2p-noise' @@ -123,11 +122,7 @@ function getLibp2pOptions ({ options, config, datastore, keychainConfig, peerId, contentRouters: [], peerRouters: [], peerDiscovery: [], - transports: [ - new WebSockets({ - filter: WebSocketsFilters.all - }) - ], + transports: [], streamMuxers: [ new Mplex({ // temporary fix until we can limit streams on a per-protocol basis @@ -221,5 +216,14 @@ function getLibp2pOptions ({ options, config, datastore, keychainConfig, peerId, }) } + if (libp2pFinalConfig.transports == null) { + libp2pFinalConfig.transports = [] + } + + // add WebSocket transport if not overridden by user config + if (libp2pFinalConfig.transports.find(t => t[Symbol.toStringTag] === '@libp2p/websockets') == null) { + libp2pFinalConfig.transports.push(new WebSockets()) + } + return libp2pFinalConfig } diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 6ef0f3b144..8c6c9f31c9 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -75,6 +75,7 @@ }, "devDependencies": { "@libp2p/webrtc-star-signalling-server": "^1.0.3", + "@libp2p/websockets": "^1.0.8", "@types/semver": "^7.3.4", "@types/update-notifier": "^5.0.0", "aegir": "^37.0.11", diff --git a/packages/ipfs/test/utils/factory.js b/packages/ipfs/test/utils/factory.js index f2a7385533..9d3ec48789 100644 --- a/packages/ipfs/test/utils/factory.js +++ b/packages/ipfs/test/utils/factory.js @@ -7,6 +7,8 @@ import * as ipfsModule from 'ipfs-core' import goIpfs from 'go-ipfs' import path, { dirname } from 'path' import { fileURLToPath } from 'url' +import { WebSockets } from '@libp2p/websockets' +import { all as WebSocketsFiltersAll } from '@libp2p/websockets/filters' const merge = mergeOpts.bind({ ignoreUndefined: true }) let __dirname = '' @@ -25,7 +27,12 @@ const commonOptions = { libp2p: { dialer: { dialTimeout: 60e3 // increase timeout because travis is slow - } + }, + transports: [ + new WebSockets({ + filter: WebSocketsFiltersAll + }) + ] } }, endpoint: process.env.IPFSD_SERVER