Add docs around WithAllowlistedMultiaddrs. Expose allowlist

This commit is contained in:
Marco Munizaga 2022-07-03 07:52:09 -07:00
parent b2c739f8ec
commit 65deaac7da
3 changed files with 40 additions and 0 deletions

View File

@ -11,6 +11,29 @@ import (
"github.com/multiformats/go-multiaddr"
)
func ExampleWithAllowlistedMultiaddrs() {
somePeer, err := test.RandPeerID()
if err != nil {
panic("Failed to generate somePeer")
}
limits := DefaultLimits.AutoScale()
rcmgr, err := NewResourceManager(NewFixedLimiter(limits), WithAllowlistedMultiaddrs([]multiaddr.Multiaddr{
// Any peer connecting from this IP address
multiaddr.StringCast("/ip4/1.2.3.4"),
// Only the specified peer from this address
multiaddr.StringCast("/ip4/2.2.3.4/p2p/" + peer.Encode(somePeer)),
// Only peers from this IP Address range
multiaddr.StringCast("/ip4/1.2.3.0/ipcidr/24"),
}))
if err != nil {
panic("Failed to start resource manager")
}
// Use rcmgr as before
_ = rcmgr
}
func TestAllowedSimple(t *testing.T) {
allowlist := newAllowlist()
ma := multiaddr.StringCast("/ip4/1.2.3.4/tcp/1234")

View File

@ -167,6 +167,18 @@ func (r *resourceManager) GetAllowlist() *Allowlist {
return r.allowlist
}
// GetAllowlist tries to get the allowlist from the given resourcemanager
// interface by checking to see if its concrete type is a resourceManager.
// Returns nil if it fails to get the allowlist.
func GetAllowlist(rcmgr network.ResourceManager) *Allowlist {
r, ok := rcmgr.(*resourceManager)
if !ok {
return nil
}
return r.allowlist
}
func (r *resourceManager) ViewSystem(f func(network.ResourceScope) error) error {
return f(r.system)
}

View File

@ -1005,6 +1005,11 @@ func TestResourceManagerWithAllowlist(t *testing.T) {
t.Fatal(err)
}
ableToGetAllowlist := GetAllowlist(rcmgr)
if ableToGetAllowlist == nil {
t.Fatal("Expected to be able to get the allowlist")
}
// A connection comes in from a non-allowlisted ip address
_, err = rcmgr.OpenConnection(network.DirInbound, true, multiaddr.StringCast("/ip4/1.2.3.5"))
if err == nil {