revert: "fix: throw if no conn encryption module provided (#665)"

This reverts commit c038550fad5b285528d87427fc5fa37ba2b0ba3f.
This commit is contained in:
Jacob Heun 2020-06-15 12:35:06 +02:00
parent 24dd1d22c5
commit b621fbdfdc
8 changed files with 22 additions and 91 deletions

View File

@ -85,17 +85,17 @@ Creates an instance of Libp2p.
| Name | Type | Description | | Name | Type | Description |
|------|------|-------------| |------|------|-------------|
| options | `object` | libp2p options | | options | `object` | libp2p options |
| options.modules | [`Array<object>`](./CONFIGURATION.md#modules) | libp2p [modules](./CONFIGURATION.md#modules) to use | | options.modules | [`Array<object>`](./CONFIGURATION.md#modules) | libp2p modules to use |
| [options.addresses] | `{ listen: Array<string>, announce: Array<string>, noAnnounce: Array<string> }` | Addresses for transport listening and to advertise to the network | | [options.addresses] | `{ listen: Array<string>, announce: Array<string>, noAnnounce: Array<string> }` | Addresses for transport listening and to advertise to the network |
| [options.config] | `object` | libp2p modules configuration and core configuration | | [options.config] | `object` | libp2p modules configuration and core configuration |
| [options.connectionManager] | [`object`](./CONFIGURATION.md#configuring-connection-manager) | libp2p Connection Manager [configuration](./CONFIGURATION.md#configuring-connection-manager) | | [options.connectionManager] | [`object`](./CONFIGURATION.md#configuring-connection-manager) | libp2p Connection Manager configuration |
| [options.transportManager] | [`object`](./CONFIGURATION.md#configuring-transport-manager) | libp2p transport manager [configuration]((./CONFIGURATION.md#configuring-transport-manager)) | | [options.transportManager] | [`object`](./CONFIGURATION.md#configuring-transport-manager) | libp2p transport manager configuration |
| [options.datastore] | `object` | must implement [ipfs/interface-datastore](https://github.com/ipfs/interface-datastore) (in memory datastore will be used if not provided) | | [options.datastore] | `object` | must implement [ipfs/interface-datastore](https://github.com/ipfs/interface-datastore) (in memory datastore will be used if not provided) |
| [options.dialer] | [`object`](./CONFIGURATION.md#configuring-dialing) | libp2p Dialer [configuration]((./CONFIGURATION.md#configuring-dialing)) | [options.dialer] | [`object`](./CONFIGURATION.md#configuring-dialing) | libp2p Dialer configuration
| [options.keychain] | [`object`](./CONFIGURATION.md#setup-with-keychain) | keychain [configuration]((./CONFIGURATION.md#setup-with-keychain)) | | [options.keychain] | [`object`](./CONFIGURATION.md#setup-with-keychain) | keychain configuration |
| [options.metrics] | [`object`](./CONFIGURATION.md#configuring-metrics) | libp2p Metrics [configuration]((./CONFIGURATION.md#configuring-metrics)) | | [options.metrics] | [`object`](./CONFIGURATION.md#configuring-metrics) | libp2p Metrics configuration
| [options.peerId] | [`PeerId`][peer-id] | peerId instance (it will be created if not provided) | | [options.peerId] | [`PeerId`][peer-id] | peerId instance (it will be created if not provided) |
| [options.peerStore] | [`object`](./CONFIGURATION.md#configuring-peerstore) | libp2p PeerStore [configuration]((./CONFIGURATION.md#configuring-peerstore)) | | [options.peerStore] | [`object`](./CONFIGURATION.md#configuring-peerstore) | libp2p PeerStore configuration |
For Libp2p configurations and modules details read the [Configuration Document](./CONFIGURATION.md). For Libp2p configurations and modules details read the [Configuration Document](./CONFIGURATION.md).

View File

@ -52,7 +52,7 @@ The libp2p ecosystem contains at least one module for each of these subsystems.
After selecting the modules to use, it is also possible to configure each one according to your needs. After selecting the modules to use, it is also possible to configure each one according to your needs.
Bear in mind that a **transport** and **connection encryption** are **required**, while all the other subsystems are optional. Bear in mind that only a **transport** and **connection encryption** are required, while all the other subsystems are optional.
### Transport ### Transport

View File

@ -21,7 +21,7 @@ const createNode = async () => {
}, },
config: { config: {
peerDiscovery: { peerDiscovery: {
[MulticastDNS.tag]: { mdns: {
interval: 20e3, interval: 20e3,
enabled: true enabled: true
} }

View File

@ -2,15 +2,13 @@
exports.messages = { exports.messages = {
NOT_STARTED_YET: 'The libp2p node is not started yet', NOT_STARTED_YET: 'The libp2p node is not started yet',
DHT_DISABLED: 'DHT is not available', DHT_DISABLED: 'DHT is not available'
CONN_ENCRYPTION_REQUIRED: 'At least one connection encryption module is required'
} }
exports.codes = { exports.codes = {
DHT_DISABLED: 'ERR_DHT_DISABLED', DHT_DISABLED: 'ERR_DHT_DISABLED',
PUBSUB_NOT_STARTED: 'ERR_PUBSUB_NOT_STARTED', PUBSUB_NOT_STARTED: 'ERR_PUBSUB_NOT_STARTED',
DHT_NOT_STARTED: 'ERR_DHT_NOT_STARTED', DHT_NOT_STARTED: 'ERR_DHT_NOT_STARTED',
CONN_ENCRYPTION_REQUIRED: 'ERR_CONN_ENCRYPTION_REQUIRED',
ERR_CONNECTION_ENDED: 'ERR_CONNECTION_ENDED', ERR_CONNECTION_ENDED: 'ERR_CONNECTION_ENDED',
ERR_CONNECTION_FAILED: 'ERR_CONNECTION_FAILED', ERR_CONNECTION_FAILED: 'ERR_CONNECTION_FAILED',
ERR_NODE_NOT_STARTED: 'ERR_NODE_NOT_STARTED', ERR_NODE_NOT_STARTED: 'ERR_NODE_NOT_STARTED',

View File

@ -6,7 +6,6 @@ const globalThis = require('ipfs-utils/src/globalthis')
const log = debug('libp2p') const log = debug('libp2p')
log.error = debug('libp2p:error') log.error = debug('libp2p:error')
const errCode = require('err-code')
const PeerId = require('peer-id') const PeerId = require('peer-id')
const peerRouting = require('./peer-routing') const peerRouting = require('./peer-routing')
@ -14,7 +13,7 @@ const contentRouting = require('./content-routing')
const pubsub = require('./pubsub') const pubsub = require('./pubsub')
const getPeer = require('./get-peer') const getPeer = require('./get-peer')
const { validate: validateConfig } = require('./config') const { validate: validateConfig } = require('./config')
const { codes, messages } = require('./errors') const { codes } = require('./errors')
const AddressManager = require('./address-manager') const AddressManager = require('./address-manager')
const ConnectionManager = require('./connection-manager') const ConnectionManager = require('./connection-manager')
@ -116,13 +115,12 @@ class Libp2p extends EventEmitter {
this.registrar.handle = this.handle this.registrar.handle = this.handle
// Attach crypto channels // Attach crypto channels
if (!this._modules.connEncryption || !this._modules.connEncryption.length) { if (this._modules.connEncryption) {
throw errCode(new Error(messages.CONN_ENCRYPTION_REQUIRED), codes.CONN_ENCRYPTION_REQUIRED) const cryptos = this._modules.connEncryption
cryptos.forEach((crypto) => {
this.upgrader.cryptos.set(crypto.protocol, crypto)
})
} }
const cryptos = this._modules.connEncryption
cryptos.forEach((crypto) => {
this.upgrader.cryptos.set(crypto.protocol, crypto)
})
this.dialer = new Dialer({ this.dialer = new Dialer({
transportManager: this.transportManager, transportManager: this.transportManager,

View File

@ -1,57 +0,0 @@
'use strict'
/* eslint-env mocha */
const chai = require('chai')
chai.use(require('dirty-chai'))
chai.use(require('chai-as-promised'))
const { expect } = chai
const Transport = require('libp2p-websockets')
const { NOISE: Crypto } = require('libp2p-noise')
const Libp2p = require('../../src')
const { codes: ErrorCodes } = require('../../src/errors')
const { createPeerId } = require('../utils/creators/peer')
describe('Connection encryption configuration', () => {
let peerId
before(async () => {
[peerId] = await createPeerId()
})
it('is required', async () => {
const config = {
peerId,
modules: {
transport: [Transport]
}
}
await expect(Libp2p.create(config)).to.eventually.be.rejected()
.and.to.have.property('code', ErrorCodes.CONN_ENCRYPTION_REQUIRED)
})
it('is required and needs at least one module', async () => {
const config = {
peerId,
modules: {
transport: [Transport],
connEncryption: []
}
}
await expect(Libp2p.create(config)).to.eventually.be.rejected()
.and.to.have.property('code', ErrorCodes.CONN_ENCRYPTION_REQUIRED)
})
it('can be created', async () => {
const config = {
peerId,
modules: {
transport: [Transport],
connEncryption: [Crypto]
}
}
await Libp2p.create(config)
})
})

View File

@ -6,7 +6,6 @@ chai.use(require('dirty-chai'))
const { expect } = chai const { expect } = chai
const Transport = require('libp2p-tcp') const Transport = require('libp2p-tcp')
const { NOISE: Crypto } = require('libp2p-noise')
const { create } = require('../../src') const { create } = require('../../src')
const peerUtils = require('../utils/creators/peer') const peerUtils = require('../utils/creators/peer')
@ -32,8 +31,7 @@ describe('Listening', () => {
listen: [listenAddr] listen: [listenAddr]
}, },
modules: { modules: {
transport: [Transport], transport: [Transport]
connEncryption: [Crypto]
} }
}) })

View File

@ -9,7 +9,6 @@ const sinon = require('sinon')
const multiaddr = require('multiaddr') const multiaddr = require('multiaddr')
const Transport = require('libp2p-websockets') const Transport = require('libp2p-websockets')
const { NOISE: Crypto } = require('libp2p-noise')
const AddressManager = require('../../src/address-manager') const AddressManager = require('../../src/address-manager')
const TransportManager = require('../../src/transport-manager') const TransportManager = require('../../src/transport-manager')
const mockUpgrader = require('../utils/mockUpgrader') const mockUpgrader = require('../utils/mockUpgrader')
@ -111,8 +110,7 @@ describe('libp2p.transportManager', () => {
libp2p = new Libp2p({ libp2p = new Libp2p({
peerId, peerId,
modules: { modules: {
transport: [Transport], transport: [Transport]
connEncryption: [Crypto]
} }
}) })
@ -130,8 +128,7 @@ describe('libp2p.transportManager', () => {
libp2p = new Libp2p({ libp2p = new Libp2p({
peerId, peerId,
modules: { modules: {
transport: [spy], transport: [spy]
connEncryption: [Crypto]
}, },
config: { config: {
transport: { transport: {
@ -155,8 +152,7 @@ describe('libp2p.transportManager', () => {
libp2p = new Libp2p({ libp2p = new Libp2p({
peerId, peerId,
modules: { modules: {
transport: [Transport], transport: [Transport]
connEncryption: [Crypto]
} }
}) })
@ -192,8 +188,7 @@ describe('libp2p.transportManager (dial only)', () => {
listen: [multiaddr('/ip4/127.0.0.1/tcp/0')] listen: [multiaddr('/ip4/127.0.0.1/tcp/0')]
}, },
modules: { modules: {
transport: [Transport], transport: [Transport]
connEncryption: [Crypto]
} }
}) })
@ -217,8 +212,7 @@ describe('libp2p.transportManager (dial only)', () => {
faultTolerance: FaultTolerance.NO_FATAL faultTolerance: FaultTolerance.NO_FATAL
}, },
modules: { modules: {
transport: [Transport], transport: [Transport]
connEncryption: [Crypto]
} }
}) })