options_filter.go 1.14 KB
Newer Older
tavit ohanian's avatar
tavit ohanian committed
1
package p2p
2 3

import (
tavit ohanian's avatar
tavit ohanian committed
4 5 6 7
	"gitlab.dms3.io/p2p/go-p2p-core/connmgr"
	"gitlab.dms3.io/p2p/go-p2p-core/control"
	"gitlab.dms3.io/p2p/go-p2p-core/network"
	"gitlab.dms3.io/p2p/go-p2p-core/peer"
8

9
	ma "gitlab.dms3.io/mf/go-multiaddr"
10 11
)

12 13 14
// filtersConnectionGater is an adapter that turns multiaddr.Filter into a
// connmgr.ConnectionGater.
type filtersConnectionGater ma.Filters
15

16
var _ connmgr.ConnectionGater = (*filtersConnectionGater)(nil)
17

18
func (f *filtersConnectionGater) InterceptAddrDial(_ peer.ID, addr ma.Multiaddr) (allow bool) {
19 20 21
	return !(*ma.Filters)(f).AddrBlocked(addr)
}

22
func (f *filtersConnectionGater) InterceptPeerDial(p peer.ID) (allow bool) {
23 24 25
	return true
}

26 27
func (f *filtersConnectionGater) InterceptAccept(connAddr network.ConnMultiaddrs) (allow bool) {
	return !(*ma.Filters)(f).AddrBlocked(connAddr.RemoteMultiaddr())
28 29
}

30 31
func (f *filtersConnectionGater) InterceptSecured(_ network.Direction, _ peer.ID, connAddr network.ConnMultiaddrs) (allow bool) {
	return !(*ma.Filters)(f).AddrBlocked(connAddr.RemoteMultiaddr())
32 33
}

34
func (f *filtersConnectionGater) InterceptUpgraded(_ network.Conn) (allow bool, reason control.DisconnectReason) {
35 36
	return true, 0
}