Skip to content

Commit

Permalink
feat: added default announce filter (libp2p#1573)
Browse files Browse the repository at this point in the history
  • Loading branch information
maschad committed Jul 3, 2023
1 parent 27a9789 commit 73f9fc7
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 13 deletions.
10 changes: 6 additions & 4 deletions packages/libp2p/src/address-manager/utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { type ObjectSchema, object, array, string } from 'yup'
import { type ObjectSchema, object, array, string, mixed } from 'yup'
import { validateMultiaddr } from '../config/helpers.js'
import type { AddressManagerInit } from '.'
import type { Multiaddr } from '@multiformats/multiaddr'

export function debounce (func: () => void, wait: number): () => void {
let timeout: ReturnType<typeof setTimeout> | undefined
Expand All @@ -18,8 +19,9 @@ export function debounce (func: () => void, wait: number): () => void {

export function validateAddressManagerConfig (opts: AddressManagerInit): ObjectSchema<Record<string, unknown>> {
return object({
listen: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
announce: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
noAnnounce: array().of(string()).test('is multiaddr', validateMultiaddr).optional()
listen: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
announce: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
noAnnounce: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
announceFilter: mixed().default(() => (addrs: Multiaddr[]): Multiaddr[] => addrs),
})
}
9 changes: 1 addition & 8 deletions packages/libp2p/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { publicAddressesFirst } from '@libp2p/utils/address-sort'
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
import mergeOptions from 'merge-options'
import type { ServiceMap, RecursivePartial } from '@libp2p/interface'
import type { Multiaddr } from '@multiformats/multiaddr'
import type { Libp2pInit, ServiceFactoryMap } from '../index.js'
import type { AddressManagerInit } from '../address-manager'
import { validateAddressManagerConfig } from '../address-manager/utils.js'
Expand All @@ -13,12 +12,6 @@ import type { ConnectionManagerInit } from '../connection-manager/index.js'
import { validateServicesConfig } from './helpers.js'

const DefaultConfig: Partial<Libp2pInit> = {
addresses: {
listen: [],
announce: [],
noAnnounce: [],
announceFilter: (multiaddrs: Multiaddr[]) => multiaddrs
},
connectionManager: {
resolvers: {
dnsaddr: dnsaddrResolver
Expand All @@ -33,7 +26,7 @@ const DefaultConfig: Partial<Libp2pInit> = {
export function validateConfig <T extends ServiceMap = Record<string, unknown>> (opts: RecursivePartial<Libp2pInit<T>>): Libp2pInit<T> {
const libp2pConfig = object({
addresses: validateAddressManagerConfig(opts?.addresses as AddressManagerInit),
connectionManager: validateConnectionManagerConfig(opts?.connectionManager as ConnectionManagerInit)
connectionManager: validateConnectionManagerConfig(opts?.connectionManager as ConnectionManagerInit),
})

//@ts-expect-error
Expand Down
2 changes: 1 addition & 1 deletion packages/libp2p/src/connection-manager/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,6 @@ export const validateConnectionManagerConfig = (opts: ConnectionManagerInit): Ob
allow: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
deny: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
inboundConnectionThreshold: number().max(opts?.maxConnections ?? MAX_CONNECTIONS, `inboundConnectionThreshold must be less than the max connections limit: ${opts?.maxConnections}`).integer().default(INBOUND_CONNECTION_THRESHOLD),
maxIncomingPendingConnections: number().integer().max(opts?.maxConnections ?? MAX_CONNECTIONS, `maxIncomingPendingConnections must be less than the max connections limit: ${opts?.maxConnections}`).default(MAX_INCOMING_PENDING_CONNECTIONS)
maxIncomingPendingConnections: number().integer().max(opts?.maxConnections ?? MAX_CONNECTIONS, `maxIncomingPendingConnections must be less than the max connections limit: ${opts?.maxConnections}`).default(MAX_INCOMING_PENDING_CONNECTIONS),
})
}

0 comments on commit 73f9fc7

Please sign in to comment.