UNPKG

libp2p

Version:

JavaScript implementation of libp2p, a modular peer to peer network stack

30 lines (26 loc) 1.01 kB
import { isPrivate } from '@libp2p/utils' import { WebSockets } from '@multiformats/multiaddr-matcher' import type { ConnectionGater } from '@libp2p/interface' import type { Multiaddr } from '@multiformats/multiaddr' /** * Returns a connection gater that disallows dialling private addresses or * insecure websockets by default. * * Browsers are severely limited in their resource usage so don't waste time * trying to dial undialable addresses, and they also print verbose error * messages when making connections over insecure transports which causes * confusion. */ export function connectionGater (gater: ConnectionGater = {}): ConnectionGater { if (gater.denyDialMultiaddr == null) { gater.denyDialMultiaddr = (multiaddr: Multiaddr) => { // do not connect to insecure websockets by default if (WebSockets.matches(multiaddr)) { return true } // do not connect to private addresses by default return isPrivate(multiaddr) } } return gater }